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.xTSDB 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:1234HTTPS_PROXY
HTTPS に使用するプロキシサーバーを指定します。HTTP_PROXY と HTTPS_PROXY の両方が指定されている場合、HTTPS_PROXY が優先されます。
形式: [protocol://][:port]
HTTPS_PROXY=https://localhost:1443NO_PROXY
プロキシを使用しないホストを指定します。この変数をアスタリスク (*) に設定すると、すべてのホストがプロキシを使用しません。
形式: カンマ区切りのホストのリスト
NO_PROXY=123.45.67.89,123.45.67.90influx フラグ
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 を使用します。
-pps1 秒あたりにインポートできるデータポイントの数を指定します。デフォルトでは、-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 のユーザー名を指定することもできます。
-versionTSDB 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 リファレンス」をご参照ください。