TSDB For InfluxDB®的命令列介面(influx)是與HTTP API進行互動的Shell。可以使用influx寫入資料(手動地或者從檔案中)、互動式地查詢資料和以不同的格式查看查詢結果。
下載CLI
根據作業系統的不同,下載合適的二進位包,下載地址如下:
解壓下載的壓縮包,進入到解壓後的檔案夾,可獲得命令列工具influx(Windows下為influx.exe)。
啟動influx
在cmd終端啟動influx。成功串連到TSDB For InfluxDB®執行個體後,您會看到以下輸出:
$ ./influx -ssl -username "myname" -password "mypassword" -host ts-xxxxxx.influxdata.rds.aliyuncs.com -port 3242
Connected to https://<網路地址>:3242 version 1.8.x
InfluxDB shell version: 1.8.xTSDB For InfluxDB®使用SSL協議保障資料轉送過程中的安全性。-ssl、-username、-password、-host和-port這五個參數是必需的,在每次串連TSDB For InfluxDB®的時候都需要提供。
參數解釋
-ssl:指的是使用HTTPS串連InfluxDB伺服器。-username:指的是已建立好的使用者帳號。-password:指的是使用者帳號對應的密碼。-host:指的是執行個體的訪問地址,其中ts-xxxxxx需要替換為使用者的執行個體ID。-port:指的是網路連接埠,VPC網路使用8086,公網使用3242。
現在,您可以直接在終端中輸入InfluxQL查詢和一些CLI命令。如果要輸入Flux查詢,您需要將選項-type設定為flux。您可以隨時使用help來擷取可用的命令。如果您想要中斷一個長時間啟動並執行InfluxQL查詢,請使用Ctrl+C。
環境變數
以下環境變數可用於配置influx用戶端使用的設定,它們可以用小寫或大寫的形式來指定,但是優先考慮用大寫。
HTTP_PROXY
定義HTTP使用的Proxy 伺服器。
value的格式:[protocol://][:port]
HTTP_PROXY=http://localhost:1234HTTPS_PROXY
定義HTTPS使用的Proxy 伺服器。如果同時設定了HTTP_PROXY和HTTPS_PROXY,優先考慮HTTPS_PROXY的值。
value的格式:[protocol://][:port]
HTTPS_PROXY=https://localhost:1443NO_PROXY
不通過任何代理的host名字的列表。如果僅僅設定為星號(*),那麼表示它與所有host匹配。
value的格式:用逗號將多個host隔開。
NO_PROXY=123.45.67.89,123.45.67.90influx選項
您可以在啟動influx時,將選項傳遞給influx。你可以使用$ influx --help列出可用的選項。在下面的列表中,我們簡要地討論了每個選項,在本小節後面,我們詳細地介紹了選項-execute、-format和-import。
-compressed
如果匯入的檔案已經是壓縮好的了,請設定為true。-compressed需要和-import一起使用。
設定寫入一致性的層級。
-database 'database name'influx串連的資料庫。
-execute '<command>'執行一個InfluxQL命令並退出。
-format 'json|csv|column'指定伺服器返回結果的格式。
-host '<hostname>'influx串連的host。
-import從檔案中匯入新的資料,或者從檔案中匯入之前置出的資料庫。
-password '<password>'influx用於串連伺服器的密碼。如果該選項設定為空白(-password ''),influx會提示您輸入密碼。類似的,你也可以使用環境變數INFLUX_PASSWORD設定CLI的密碼。
-path匯入檔案的路徑。-path需要和-import一起使用。
-port 'port #'influx串連的連接埠。TSDB For InfluxDB®預設在連接埠3242上運行。
-pps每秒允許匯入的資料點的個數。預設情況下,pps設定為0並且influx不限制資料匯入的速度。-pps需要和-import一起使用。
-precision 'rfc3339|h|m|s|ms|u|ns'rfc3339(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ),h (小時),m(分鐘),s(秒),ms(毫秒),u (微秒),ns (納秒)。預設的精度是納秒。-pretty美觀地輸出JSON格式的資料,方便閱讀。
-ssl對請求使用HTTPS。
-type確定使用哪種互動Shell。預設值是influxql。如果要使用Flux REPL Shell,請設定-type的值為flux。
-username 'username'influx用於串連伺服器的使用者名稱。類似的,你也可以使用環境變數INFLUX_USERNAME設定CLI的使用者名稱。
-version顯示TSDB For InfluxDB®的版本並退出。
使用-execute執行一個InfluxQL命令並退出
執行不需要指定資料庫的查詢:
$ influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -execute 'SHOW DATABASES'
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates執行需要指定資料庫的查詢,同時,改變時間戳記精度:
$ influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -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 <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -format=column
[...]
> SHOW DATABASES
name: databases
---------------
name
NOAA_water_database
_internal
telegraf
pirates將格式改為csv:
$ influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -format=csv
[...]
> SHOW DATABASES
name,name
databases,NOAA_water_database
databases,_internal
databases,telegraf
databases,pirates將格式改為json:
$ influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -format=json
[...]
> SHOW DATABASES
{"results":[{"series":[{"name":"databases","columns":["name"],"values":[["NOAA_water_database"],["_internal"],["telegraf"],["pirates"]]}]}]}將格式改為JSON並開啟美觀的輸出:
$ influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -format=json -pretty
[...]
> SHOW DATABASES
{
"results": [
{
"series": [
{
"name": "databases",
"columns": [
"name"
],
"values": [
[
"NOAA_water_database"
],
[
"_internal"
],
[
"telegraf"
],
[
"pirates"
]
]
}
]
}
]
}使用-import從檔案中匯入資料
樣本:
假設名為pirates的資料庫和名為oneday的保留原則都已經建立好。
檔案(datarrr.txt):
# DML
# CONTEXT-DATABASE: pirates
# 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 <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -import -path=datarrr.txt -precision=s結果:
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設定為0並且
influx不限制資料匯入的速度。
允許匯入.gz檔案,只需在命令中加入
-compressed。
對於檔案中的資料點,請提供時間戳記。TSDB For InfluxDB®為沒有時間戳記的資料點分配相同的時間戳記,這可能會導致意外的資料覆蓋現象。
如果您的資料檔案中有超過5,000個資料點,那麼可能有必要將檔案拆分成多個檔案,使得資料可以批量寫入TSDB For InfluxDB®。我們建議以5,000或10,000個資料點為一批資料寫入TSDB For InfluxDB®。如果每一批資料的資料點變少,會產生更多的HTTP請求,導致效能無法達到最優。預設情況下,HTTP請求在五秒後逾時。雖然在請求逾時後TSDB For InfluxDB®依舊會嘗試寫入資料,但是並不保證這些資料點已成功寫入。
influx命令
在CLI中輸入help可獲得部分可用的命令。
命令
在下面的列表中,我們簡要地討論了每個命令,在本小節後面,我們詳細地介紹了命令insert。
auth提示您輸入使用者名稱和密碼。在向資料庫發送請求時,influx需要這些認證資訊。類似的,你也可以使用環境變數INFLUX_USERNAME和INFLUX_PASSWORD分別設定CLI的使用者名稱和密碼。
chunked當發出查詢請求時,開啟伺服器的分塊返回結果功能。預設情況下開啟該功能。
chunk size <size>設定返回結果的分塊大小。預設大小是10,000。通過將size設定為0,chunk size可重設為預設值。
clear [ database | db | retention policy | rp ]清除當前資料庫或保留原則的上下文。
connect <host:port>在不退出Shell的情況下,串連到其它伺服器。預設情況下,influx串連到localhost:8086。如果您沒有指定host或者port,influx假設未指定的參數使用預設值。
consistency <level>設定寫入一致性的層級:any、one、quorum或者all。
Ctrl+C中斷當前正在啟動並執行查詢。當互動式查詢因為試圖返回太多資料而太長時間沒有返回結果時,這個命令就變得非常有用。
exit quit Ctrl+D
退出influx Shell。
format <format>指定伺服器返回結果的格式:json、csv或column。
history顯示命令的記錄。若想在Shell中使用歷史命令,只需使用“向上”箭頭即可。influx將您最後的1000個命令儲存在主目錄中的.influx_history檔案。
insert使用行協議寫入資料。
precision <format>指定查詢和寫入的時間戳記的格式/精度:rfc3339(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ),h(小時),m(分鐘),s(秒),ms(毫秒),u(微秒),ns(納秒)。預設的精度是納秒。
pretty美觀地輸出JSON格式的資料,方便閱讀。
settings輸出Shell的當前設定,包括Host、Username、Database、Retention Policy、Pretty狀態、Chunked狀態、Chunk Size、Format和。
use [ "<database_name>" | "<database_name>"."<retention policy_name>" ]設定當前使用的資料庫和/或保留原則。一旦influx設定了資料庫和/或保留原則,那麼在查詢中無需再指定資料庫和/或保留原則。如果您沒有指定保留原則,influx自動查詢資料庫的預設(DEFAULT)保留原則。
使用insert將資料寫入TSDB For InfluxDB®
輸入insert,然後輸入符合行協議的資料,可將資料寫入TSDB For InfluxDB®。使用insert into <retention policy> <line protocol>可將資料寫入到指定的保留原則。
將資料寫入單個field,其中,該field在measurement treasures中,並且這個measurement帶有tag captain_id = pirate_king。influx自動將資料寫入到資料庫的預設(DEFAULT)保留原則中。
> INSERT treasures,captain_id=pirate_king value=2
>將跟上面相同的資料點寫入到已經存在的保留原則oneday中:
> INSERT INTO oneday treasures,captain_id=pirate_king value=2
Using retention policy oneday
>查詢
在influx中執行所有的InfluxQL查詢。