InfluxDB は、InfluxData によって開発されたオープンソースのシーケンシャル データベースです。 Go で書かれており、高パフォーマンスのクエリと時系列データのストレージに重点を置いています。 InfluxDB は、ストレージ システムのデータや IoT 業界のリアルタイム データの監視などのシナリオで広く使用されています。技術的な特徴は次のとおりです。
測定: 文字列はレコードの意味を表します。たとえば、監視データ cpu_load や測定データ Average_temperature
タグ グループ: レコードの一連の属性情報を表すキーと値のペアのセットで構成されます。同じ計測データが同じタググループを持つとは限らず、スキーマフリーです。タグ情報はデフォルトでインデックス付けされます。
フィールド グループ: これも、レコードの特定の値情報 (名前付き) を表すキーと値のペアのセットで構成されます。フィールド グループで定義できる値のタイプには、64 ビット整数、64 ビット浮動小数点、文字列、およびブール値が含まれます。フィールド情報にインデックスを付けることはできません。
タイムスタンプ: レコードの時間属性です。データの挿入時にタイムスタンプが明示的に指定されていない場合、デフォルトでデータベースに保存されているタイムスタンプがレコードのエントリ時刻になります。
InfluxDB は、HTTP ベースのデータ挿入とクエリをサポートしています。また、TCP または UDP プロトコルに基づいた接続も直接受け入れます。
InfluxDB を使用すると、ユーザーはデータ保持ポリシー (保持ポリシー) を定義して、指定された期間を超えて保存されたデータを削除またはダウンサンプリングできます。
influxDB コマンド ラインを入力
influx -precision rfc3339
InfluxDB データベース操作
show databases
create database shhnwangjian
drop database shhnwangjian
use shhnwangjian
InfluxDB にはテーブル (テーブル) の概念はなく、代わりに MEASUREMENTS が使用されます。MEASUREMENTS の機能は従来のデータベースのテーブルと一致しているため、MEASUREMENTS を a と呼ぶこともできます。 InfluxDB のテーブル。
• すべてのテーブルを表示
SHOW MEASUREMENTS
• 新しいテーブルを作成する
InfluxDB に新しいテーブルを作成するための明示的なステートメントはありません。新しいテーブルはデータを挿入することによってのみ作成できます。 。
insert disk_free,hostname=server01 value=442221834240i insert cpu_virtual_used_num,host=1 value=41556593150
ここで、disk_free はテーブル名、hostname はインデックス (タグ)、value=xx はレコード値 (フィールド)、複数のレコード値が存在する可能性があり、システムには追加のタイムスタンプが付属しています
または、データを追加するときにタイムスタンプを自分で書き込みます
insert disk_free,hostname=server01 value=442221834240i 1435362189575692182
• テーブルの削除
drop measurement disk_free
influxDB は直接削除を提供しません。データ レコードの保存方法を提供しますが、主にデータの保持期間を指定するために使用されるデータ ストレージ戦略を提供します。指定された時間を超過すると、データのこの部分が削除されます。
show retention policies on "db_name" show retention policies on cdhnm
create retention policy "rp_name" on "db_name" duration 3w replication 1 default create retention policy test on cdhnm duration 1h replication 1 default
rp_name: ポリシー名;
db_name: 特定のデータベース名;
3w: 3 週間保存します。3 週間より前のデータは削除されます。influxdb には、h (時間)、d (日)、w (週); レプリケーション 1: コピーの数、通常は 1 で十分;
default: デフォルトのポリシーとして設定
alter retention policy “rp_name” on “db_name” duration 30d default alter retention policy autogen on cdhnm duration 1h default
alter retention policy autogen on cdhnm duration 0h replication 1 default
drop retention policy “rp_name” on “db_name" drop retention policy test on cdhnm
select * fromcpu_virtual_used_num
挿入データの削除とテーブルの作成を同時に行う
insert disk_free,hostname=server01 value=442221834240i insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.3 1557023160
influxDB はデータ レコードを直接削除する方法を提供しませんが、主にデータを指定するために使用されるデータ保存戦略を提供します。データ保持時間が指定された時間を超えると、データのこの部分が削除されます。少なくとも 1 時間の新しいデータベース有効期限ポリシーを作成します
Retention Policies create retention policy "rp_name" on "db_name" duration 3w replication 1 default retention policy duration must be at least 1h0m0s influxdb
クエリ タグ:cluster_metric からのタグ キーを表示
クエリ フィールド:cluster_metric からのフィールド キーを表示
InfluxDB を使用する場合、InfluxDB は UTC 時間を使用するため、クエリを実行するときにタイム ゾーンの問題が頻繁に発生することがわかりました。
InfluxDB epoch_time のサポートに加えて、rfc3339_date_time_string および rfc3339_like_date_time_string もサポートします。
epoch_time
一部の理論的説明は、協定世界時 (1970 年 1 月 1 日木曜日) からの経過時間を示しています。たとえば、Java プログラムで System.currentTimeMillis() を使用すると、今回は次のようになります。一般的にはミリ秒(ms)レベルの精度、つまり13ビットのLong型です。 InfluxDB では、タイムスタンプの精度はナノ秒レベル (ns) に達する可能性があり、これは 19 ビット Long タイプです。
rfc3339_date_time_string
rfc3339时间格式是ietf协会定义的一种时间格式,这个名字是因为它被定义在rfc3339中。感兴趣的同学可以自己查看上面的连接。InfluxDB中rfc3339的时间格式是这样的:
‘YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ’
其中nnnnnnnnn是可选的,如果不写则会被设置为000000000。注意,如果使用这种时间格式,需要使用单括号(’)将时间括起来。
rfc3339_like_date_time_string
因为rfc3339_date_time_string的格式确实比较反人类,所以InfluxDB也支持这种人类阅读更友好的格式:
‘YYYY-MM-DD HH:MM:SS.nnnnnnnnn’
其中HH:MM:SS.nnnnnnnnn是可选的,如果不填写会被设置为00:00:00.000000000。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。
InfluxDB默认东时间是纳秒(ns),即19位时间戳。但是一般情况下时间精度不会这么高。所以如果使用秒级精度查询:
select * from cpu_virtual_used_num where time >= 1435333209s and time <= 1542964713s
如果使用毫秒级精度查询:
select * from cpu_virtual_used_num where time >= 1435333209000ms and time <= 1542964714000ms
如果需要使用北京时间(东八区),可以在SQL中使用tc关键字:
select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai')
Timestamp时间列
既然是时间序列数据库,influxdb 的数据都有一列名为 time 的列,里面存储 UTC 时间戳。
Influxdb 时间转成北京时间:UTC time + 8 hours = Beijing time
influx -precision rfc3339 show retention policies on cdhnm alter retention policy autogen on cdhnm duration 1h default create retention policy test on cdhnm duration 1h replication 1 default drop retention policy test on cdhnm insert cpu_virtual_used_num,host=470b14f0-e869-43ed-a8e6-fd634258271f,hostname=server01 value=0.9 1557045292000000000 select * from cpu_virtual_used_num where time >= '2018-11-23 14:30:39' and time <= '2019-11-23 14:32:32' tz('Asia/Shanghai') delete from cpu_virtual_used_num
切换到root用户 命令:su 输入密码:123456
启动:
sudo service influxdb start
重启:
service influxdb restart
切换到普通用户:
命令:exit
以上が運用・保守監視必読:ここぞという時に使える、知っておきたいInfluxDB活用ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。