TSDB for InfluxDB® の influx
CLI は、HTTP API 用のインタラクティブシェルを提供します。influx
CLI を使用して、手動でデータを書いたり、ファイルからデータをインポートしたり、インタラクティブにデータをクエリしたり、さまざまな形式でクエリ結果を表示したりできます。
CLI のダウンロード
以下のリンクをクリックして、OS に固有の CLI のバイナリパッケージをダウンロードします。
バイナリパッケージを解凍し、バイナリパッケージから抽出されたフォルダーに移動します。influx
CLI があります。Windows では、ファイル名は influx.exe
です。
influx の起動
cmd ターミナルで influx
を起動します。TSDB for InfluxDB® インスタンスが接続されると、次の出力が表示されます。
$ ./influx -ssl -username "myname" -password "mypassword" -host ts-xxxxxx.influxdata.rds.aliyuncs.com -port 3242
// https://<Endpoint>:3242 version 1.8.x に接続しました
// InfluxDB shell version: 1.8.x
Connected to https://<Endpoint>:3242 version 1.8.x
InfluxDB shell version: 1.8.x
TSDB for InfluxDB® は、データ転送中のセキュリティを確保するために SSL プロトコルを使用します。TSDB for InfluxDB® インスタンスに接続するたびに、-ssl
、-username
、-password
、-host
、-port
の 5 つの パラメーターを設定する必要があります。
パラメーターの説明
-ssl
: TSDB for InfluxDB® サーバーが HTTPS 経由で接続されていることを指定します。-username
: TSDB for InfluxDB® インスタンスにログオンするために使用するユーザー名を指定します。-password
: TSDB for InfluxDB® インスタンスにログオンするために使用するパスワードを指定します。-host
: TSDB for InfluxDB® インスタンスのエンドポイントを指定します。ts-xxxxxx
を TSDB for InfluxDB® インスタンスの ID に置き換える必要があります。-port
: ネットワークポートを指定します。TSDB for InfluxDB® インスタンスが仮想プライベートクラウド (VPC) 経由で接続されている場合は、このパラメーターを8086
に設定します。TSDB for InfluxDB® インスタンスがインターネット経由で接続されている場合は、このパラメーターを3242
に設定します。
influx CLI が起動した後、ターミナルで InfluxQL ステートメントを実行し、CLI コマンドを実行できます。Flux ステートメントを実行する場合は、-type
パラメーターを flux
に設定する必要があります。help
コマンドを実行して、使用可能なコマンドを取得できます。長時間実行されている InfluxQL クエリを終了するには、キーボードの Ctrl + C
を押します。
環境変数
influx
クライアント用に次の環境変数を構成できます。環境変数は小文字または大文字で指定できます。大文字の変数が推奨されます。
HTTP_PROXY
HTTP に使用するプロキシサーバーを指定します。
形式: [protocol://][:port]
HTTP_PROXY=http://localhost:1234
HTTPS_PROXY
HTTPS に使用するプロキシサーバーを指定します。HTTP_PROXY と HTTPS_PROXY の両方が指定されている場合、HTTPS_PROXY が優先されます。
形式: [protocol://][:port]
HTTPS_PROXY=https://localhost:1443
NO_PROXY
プロキシを使用しないホストを指定します。この変数をアスタリスク (*
) に設定すると、すべてのホストがプロキシを使用しません。
形式: カンマ区切りのホストのリスト
NO_PROXY=123.45.67.89,123.45.67.90
influx フラグ
influx
を起動するときに、influx
にフラグを渡すことができます。$ influx --help
コマンドを実行して、使用可能なすべてのフラグをクエリできます。このセクションでは、influx でサポートされている各フラグの簡単な説明と、-execute
、-format
、-import
フラグの使用方法について詳しく説明します。
-compressed
インポートファイルが圧縮されている場合は、このフラグを true に設定します。-compressed
フラグは、-import
フラグと組み合わせて使用する必要があります。
書き込み整合性レベルを指定します。
-database 'database name'
influx
CLI が接続するデータベースを指定します。
-execute '<command>'
InfluxQL コマンドを実行して終了します。
-format 'jsoncsvcolumn'
サーバーレスポンスの形式を指定します。
-host '<hostname>'
influx
CLI が接続するホストを指定します。
-import
ファイルから新しいデータをインポートするか、以前にエクスポートされたデータベースデータをファイルからインポートします。
-password '<password>'
influx
CLI がサーバーに接続するために使用するパスワードを指定します。-password
フラグを指定しないと、influx
はパスワードの入力を求めます。INFLUX_PASSWORD
環境変数を使用して、CLI のパスワードを指定することもできます。
-path
インポートするファイルのパスを指定します。-path
フラグは、-import
フラグと組み合わせて使用する必要があります。
-port 'port #'
influx
CLI が接続するポートを指定します。デフォルトでは、TSDB for InfluxDB® はポート 3242
を使用します。
-pps
1 秒あたりにインポートできるデータポイントの数を指定します。デフォルトでは、-pps フラグは 0 に設定されており、influx
はデータのインポート速度を制限しません。-pps
フラグは、-import
フラグと組み合わせて使用する必要があります。
-precision 'rfc3339hmsmsuns'
データのクエリと書き込みのタイムスタンプの形式と精度を指定します。rfc3339
(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ
)、h
(時間)、m
(分)、s
(秒)、ms
(ミリ秒)、u
(マイクロ秒)、ns
(ナノ秒)。デフォルトの精度は ns です。
-pretty
読みやすさを向上させるために、JSON 形式のデータの pretty 出力印刷を有効にします。
-ssl
リクエストに HTTPS を使用します。
-type
使用するインタラクティブシェルを指定します。デフォルト値は influxql
です。Flux Read-Eval-Print Loop (REPL) シェルを使用する場合は、-type
フラグを flux
に設定します。
-username 'username'
influx
CLI がサーバーに接続するために使用するユーザー名を指定します。INFLUX_USERNAME
環境変数を使用して、CLI のユーザー名を指定することもできます。
-version
TSDB for InfluxDB® のバージョンを表示して終了します。
-execute
を使用して InfluxQL コマンドを実行して終了する
使用可能なすべてのデータベースからデータをクエリするには、次のクエリを実行します。
$ influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -execute 'SHOW DATABASES'
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates
指定されたデータベースからデータをクエリし、同時にタイムスタンプの精度を変更するには、次のクエリを実行します。
$ influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -execute 'SELECT * FROM "h2o_feet" LIMIT 3' -database="NOAA_water_database" -precision=rfc3339
name: h2o_feet
--------------
time level description location water_level
2015-08-18T00:00:00Z below 3 feet santa_monica 2.064
2015-08-18T00:00:00Z between 6 and 9 feet coyote_creek 8.12
2015-08-18T00:06:00Z between 6 and 9 feet coyote_creek 8.005
-format
を使用してサーバーレスポンスの形式を指定する
デフォルトの形式は column
です。
$ influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -format=column
[...]
> SHOW DATABASES
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates
形式を csv
に変更します。
$ influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -format=csv
[...]
> SHOW DATABASES
name,name
databases,NOAA_water_database
databases,_internal
databases,telegraf
databases,pirates
形式を json
に変更します。
$ influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -format=json
[...]
> SHOW DATABASES
{"results":[{"series":[{"name":"databases","columns":["name"],"values":[["NOAA_water_database"],["_internal"],["telegraf"],["pirates"]]}]}]}
形式を json
形式に変更し、pretty 出力印刷を有効にします。
$ influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -format=json -pretty
[...]
> SHOW DATABASES
{
"results": [
{
"series": [
{
"name": "databases",
"columns": [
"name"
],
"values": [
[
"NOAA_water_database"
],
[
"_internal"
],
[
"telegraf"
],
[
"pirates"
]
]
}
]
}
]
}
-import
を使用してファイルからデータをインポートする
インポートファイルは 2 つの部分で構成されています。
例:
pirates
という名前のデータベースと oneday
という名前のリテンションポリシーが作成されているとします。
ファイル datarrr.txt
:
# DML
// コンテキストデータベース: pirates
# CONTEXT-DATABASE: pirates
// コンテキストリテンションポリシー: oneday
# CONTEXT-RETENTION-POLICY: oneday
treasures,captain_id=dread_pirate_roberts value=801 1439856000
treasures,captain_id=flint value=29 1439856000
treasures,captain_id=sparrow value=38 1439856000
treasures,captain_id=tetra value=47 1439856000
treasures,captain_id=crunch value=109 1439858880
コマンド:
$influx -ssl -username <Username> -password <Password> -host <Endpoint> -port 3242 -import -path=datarrr.txt -precision=s
結果:
2015/12/22 12:25:06 0 コマンドを処理しました
2015/12/22 12:25:06 5 つの挿入を処理しました
2015/12/22 12:25:06 0 つの挿入に失敗しました
2015/12/22 12:25:06 Processed 0 commands
2015/12/22 12:25:06 Processed 5 inserts
2015/12/22 12:25:06 Failed 0 inserts
説明
-import
を使用する前に、次の点に注意してください。
-pps
-pps フラグを使用して、1 秒あたりにインポートできるデータポイントの数を指定できます。この設定は、データポイントがデータベースに書き込まれるときに適用されます。デフォルトでは、-pps フラグは 0 に設定されています。
influx
はデータのインポート速度を制限しません。
次のフラグを含めることで、.gz ファイルからデータをインポートできます。
-compressed
。
ファイル内のデータポイントにタイムスタンプを指定する必要があります。そうしないと、TSDB for InfluxDB® はタイムスタンプのないデータポイントに同じタイムスタンプを割り当てます。これにより、予期しないデータの上書きが発生する可能性があります。
データファイルに 5,000 を超えるデータポイントが含まれている場合は、データファイルを複数の小さなファイルに分割する必要がある場合があります。これにより、TSDB for InfluxDB® にデータをバッチで書き込むことができます。各バッチには 5,000 または 10,000 のデータポイントを含めることをお勧めします。各バッチに含まれるデータポイントの数が少ないほど、送信する必要がある HTTP リクエストの数は多くなります。これはパフォーマンスを低下させます。デフォルトでは、各 HTTP リクエストのタイムアウト期間は 5 秒です。TSDB for InfluxDB® はリクエストのタイムアウト後にデータポイントの書き込みを試みますが、ポイントの書き込みに失敗する可能性があります。
influx コマンド
influx CLI で help
コマンドを実行して、使用可能なコマンドの一部リストを取得します。
コマンド
このセクションでは、使用可能な各コマンドの簡単な説明と、insert
コマンドの使用方法について詳しく説明します。
auth
ユーザー名とパスワードの入力を求めます。influx
CLI は、データベースにリクエストを送信するときに認証情報を必要とします。INFLUX_USERNAME
環境変数を使用してユーザー名を指定し、INFLUX_PASSWORD
環境変数を使用して CLI のパスワードを指定することもできます。
chunked
クエリリクエストを送信するときに、サーバーからのチャンクレスポンスを有効にします。デフォルトでは、チャンクレスポンスは有効になっています。
chunk size <size>
レスポンスの各チャンクのサイズを指定します。デフォルトのチャンクサイズは 10,000 です。サイズパラメーターを 0 に設定することにより、チャンクサイズをデフォルト値にリセットできます。
clear [ database db retention policy rp ]
データベースまたはリテンションポリシーのコンテキストをクリアします。
connect <host:port>
シェルを終了せずに別のサーバーに接続します。デフォルトでは、influx
CLI は localhost:8086
に接続します。ホストまたはポートパラメーターを指定しないと、influx
CLI は空白のままにしたパラメーターのデフォルト設定を使用します。
consistency <level>
書き込み整合性レベルを指定します。有効な値は、any
、one
、quorum
、all
です。
Ctrl+C
実行中のクエリを終了します。このコマンドは、大量のデータを返そうとするためシステムの応答に時間がかかりすぎる長時間実行されるインタラクティブクエリを終了する場合に役立ちます。
exit quit Ctrl+D
influx
シェルを終了します。
format <format>
サーバーレスポンスの形式を指定します。有効な値は、json
、csv
、column
です。
history
コマンド履歴を表示します。シェルで履歴コマンドを実行するには、上矢印キーを使用します。influx
CLI は、ホームディレクトリにある .influx_history
ファイルに最新の 1,000 コマンドを保存します。
insert
行プロトコルを使用してデータを書き込みます。
precision <format>
データのクエリと書き込みのタイムスタンプの形式と精度を指定します。rfc3339
(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ
)、h
(時間)、m
(分)、s
(秒)、ms
(ミリ秒)、u
(マイクロ秒)、ns
(ナノ秒)。デフォルトの精度は ns です。
pretty
読みやすさを向上させるために、JSON 形式のデータの pretty 出力印刷を有効にします。
settings
シェルの現在の設定を返します。Host
、Username
、Database
、Retention Policy
、Pretty
、Chunked
、Chunk Size
、Format
、Write Consistency の設定が含まれます。
use [ "<database_name>" "<database_name>"."<retention policy_name>" ]
現在のデータベースまたはリテンションポリシーを指定します。現在のデータベースまたはリテンションポリシーが influx
CLI で指定されている場合、クエリでデータベースまたはリテンションポリシーを指定する必要はありません。リテンションポリシーを指定しないと、influx
CLI はデフォルト (DEFAULT
) のリテンションポリシーに基づいてデータベースからデータをクエリします。
insert
コマンドを実行して TSDB for InfluxDB® にデータを書き込む。
TSDB for InfluxDB® にデータを書き込むには、insert と入力し、行プロトコルを使用するデータを入力します。insert into <retention policy> <line protocol>
コマンドを実行して、指定されたリテンションポリシーに基づいてデータを書き込むことができます。
次の例では、captain_id = pirate_king
タグを持つ treasures
メジャーメントの単一フィールドにデータが書き込まれます。influx
CLI は、デフォルト (DEFAULT
) のリテンションポリシーに基づいてデータベースにデータを書き込みます。
> INSERT treasures,captain_id=pirate_king value=2
>
次の例では、前の例で使用されたのと同じデータポイントが、既存のリテンションポリシー oneday
に基づいてデータベースに書き込まれます。
> INSERT INTO oneday treasures,captain_id=pirate_king value=2
// リテンションポリシー oneday を使用しています
Using retention policy oneday
>
クエリ
influx
CLI ですべての InfluxQL クエリを実行できます。
InfluxQL の詳細については、「データ探索の概要」、「スキーマ探索」、および「InfluxQL リファレンス」をご参照ください。