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