ホームページ  >  記事  >  運用・保守  >  運用・保守監視必読:ここぞという時に使える、知っておきたいInfluxDB活用ガイド

運用・保守監視必読:ここぞという時に使える、知っておきたいInfluxDB活用ガイド

WBOY
WBOY転載
2023-06-09 13:40:491574ブラウズ

InfluxDB とは

InfluxDB は、InfluxData によって開発されたオープンソースのシーケンシャル データベースです。 Go で書かれており、高パフォーマンスのクエリと時系列データのストレージに重点を置いています。 InfluxDB は、ストレージ システムのデータや IoT 業界のリアルタイム データの監視などのシナリオで広く使用されています。技術的な特徴は次のとおりです。

  • InfluxDB は、技術的な実装の面で Go 言語の特性を最大限に活用しており、外部依存関係なしで独立してデプロイできます [5]。
  • InfluxDB は、ユーザーがデータを簡単にクエリできるように、SQL に似たクエリ言語と一連の組み込み関数を提供します。
  • InfluxDB に保存されているデータは、測定、タグ グループ、フィールド グループ、およびタイムスタンプで論理的に構成されています:

測定: 文字列はレコードの意味を表します。たとえば、監視データ 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 データテーブルの操作

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 時間を使用するため、クエリを実行するときにタイム ゾーンの問題が頻繁に発生することがわかりました。

1. 時間形式

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。所以查询时可以设置到天、小时、分钟、秒等不同精度。这种时间格式同样要求被单括号括起来。

2、调整时间戳精度

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

3、调整时区

如果需要使用北京时间(东八区),可以在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')

4、UTC时间与Beijing时间转换

Timestamp时间列

既然是时间序列数据库,influxdb 的数据都有一列名为 time 的列,里面存储 UTC 时间戳。

Influxdb 时间转成北京时间:UTC time + 8 hours = Beijing time

sql语句

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 サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。