通過Influx CLI,使用者可以方便地串連到TSDB For InfluxDB®,進行資料讀寫。本文主要介紹如何使用Influx CLI串連到阿里雲上的TSDB For InfluxDB®,以及如何通過CLI寫入資料和查詢資料。
準備工作
首先,需要在阿里雲官網上購買TSDB For InfluxDB®執行個體,並成功建立使用者帳號。Influx CLI串連TSDB For InfluxDB®需要使用者帳號和密碼。
下載CLI
進入到下載頁面,選擇InfluxDB v1.7.6。
根據作業系統的不同,下載合適的二進位包,如下圖所示。

解壓下載好的二進位包。Mac OS X以及Linux作業系統,在目錄usr/bin/下可獲得命令列工具influx。對於Windows作業系統,進入到解壓後的檔案夾即可獲得二進位檔案influx.exe。例如,如果使用者使用的是Mac OS X作業系統,可按如下方式下載和進入influx所在的目錄:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6_darwin_amd64.tar.gz
tar zxvf influxdb-1.7.6_darwin_amd64.tar.gz
cd influxdb-1.7.6-1/usr/bin通過CLI串連TSDB For InfluxDB®
開啟終端,輸入如下命令即可串連到您所購買的執行個體:
./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242TSDB For InfluxDB®使用SSL協議保障資料轉送過程中的安全性。“-ssl”,“-username”,“-password”,“-host”和“-port”這五個參數是必需的,在每次串連TSDB For InfluxDB®的時候都需要提供。
參數解釋
-ssl:指的是使用HTTPS串連InfluxDB伺服器。-username:指的是已建立好的使用者帳號。-password:指的是使用者帳號對應的密碼。-host:指的是網路地址,在管理主控台的執行個體詳情中可查看,如下圖所示。
-port: 指的是網路連接埠,預設是3242。
通過CLI寫入資料
在寫入資料前,需要先建立資料庫,詳情請參見建立資料庫,假設已成功建立名為mydb的資料庫。
單點寫入
通過Influx CLI串連TSDB For InfluxDB®。
./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242指定使用資料庫mydb。
> USE mydb Using database mydb將單個資料點寫入資料庫mydb。
> INSERT cpu,host=serverA,region=us_west value=0.64這條語句將一個資料點寫入資料庫mydb的預設保留原則中。其中,
cpu是measurement,host和region是tag,value是field,資料點的格式符合行協議。如果沒有提供時間戳記,系統會把伺服器本地的納秒級的Unix時間當作資料點的時間戳記。在TSDB For InfluxDB®中,任何時間戳記都是UTC時間(國際標準時間)。
檔案匯入
樣本資料:檔案test.txt,裡麵包含多個資料點。
# DML # CONTEXT-DATABASE: mydb # CONTEXT-RETENTION-POLICY: autogen h2o_feet,location=coyote_creek water_level=3.524,level\ description="between 3 and 6 feet"1439868600 h2o_feet,location=coyote_creek water_level=3.399,level\ description="between 3 and 6 feet"1439868960 h2o_feet,location=coyote_creek water_level=3.278,level\ description="between 3 and 6 feet"1439869320 h2o_feet,location=coyote_creek water_level=3.159,level\ description="between 3 and 6 feet"1439869680 h2o_feet,location=coyote_creek water_level=3.048,level\ description="between 3 and 6 feet"1439870040 h2o_feet,location=coyote_creek water_level=2.943,level\ description="below 3 feet"1439870400 h2o_feet,location=coyote_creek water_level=2.831,level\ description="below 3 feet"1439870760 h2o_feet,location=coyote_creek water_level=2.717,level\ description="below 3 feet"1439871120 h2o_feet,location=coyote_creek water_level=2.625,level\ description="below 3 feet"1439871480 h2o_feet,location=coyote_creek water_level=2.533,level\ description="below 3 feet"1439871840將檔案中的資料匯入TSDB For InfluxDB®。
./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -import-path=test.txt使用參數
-import可將檔案中的資料匯入TSDB For InfluxDB®。其中,-path指定需要被匯入的檔案。這條語句將measurement為h2o_feet,tag為location,field為water_level和level description的資料寫入資料庫mydb中。
通過CLI查詢資料
TSDB For InfluxDB®支援豐富的InfluxQL查詢語句,InfluxQL是一種類似SQL的語言,能夠讓使用者方便快捷地與資料進行互動,詳情可查看文檔資料探索和Schema探索。
在進行資料查詢前,先串連TSDB For InfluxDB®。
./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242指定從哪個資料庫中查詢資料,在本文的樣本中,資料來自資料庫“mydb”。
> USE mydb Using database mydb
查詢指定measurement中的所有資料
> SELECT * FROM "h2o_feet"
name: h2o_feet
time level description location water_level
----------------------------------------
1439868600 between 3and6 feet coyote_creek 3.524
1439868960 between 3and6 feet coyote_creek 3.399
1439869320 between 3and6 feet coyote_creek 3.278
1439869680 between 3and6 feet coyote_creek 3.159
1439870040 between 3and6 feet coyote_creek 3.048
1439870400 below 3 feet coyote_creek 2.943
1439870760 below 3 feet coyote_creek 2.831
1439871120 below 3 feet coyote_creek 2.717
1439871480 below 3 feet coyote_creek 2.625
1439871840 below 3 feet coyote_creek 2.533該查詢返回名為“h2o_feet”的measurement對應的所有資料。
查詢measurement中特定的field並進行算術運算
> SELECT ("water_level"+2)*3 FROM "h2o_feet"
name: h2o_feet
time water_level
---------------
143986860016.572
143986896016.197
143986932015.834000000000001
143986968015.477
143987004015.144
143987040014.828999999999999
143987076014.492999999999999
143987112014.151000000000002
143987148013.875
143987184013.598999999999998“water_level”是“h2o_feet”中的一個field,該查詢將“water_level”中的每個值加2,然後乘以3。請注意,TSDB For InfluxDB®遵循標準的算術運算順序,可查看數學運算子瞭解更多相關資訊。
查詢field value滿足一定條件的資料
> SELECT * FROM "h2o_feet" WHERE "water_level">3
name: h2o_feet
time level description location water_level
----------------------------------------
1439868600 between 3and6 feet coyote_creek 3.524
1439868960 between 3and6 feet coyote_creek 3.399
1439869320 between 3and6 feet coyote_creek 3.278
1439869680 between 3and6 feet coyote_creek 3.159
1439870040 between 3and6 feet coyote_creek 3.048該查詢返回中“h2o_feet”中的資料,這些資料滿足條件:“water_level”的值大於3。更多關於WHERE子句的介紹可查看WHERE語句。
將查詢結果分組
> SELECT MEAN("water_level") FROM "h2o_feet" GROUP BY "location"
name: h2o_feet
tags: location=coyote_creek
time mean
--------
03.0057該查詢將查詢結果按“location”分組,並計算每個“location”中的“water_level”的平均值。更多關於GROUP BY子句的介紹可查看GROUP BY子句。
使用Regex指定field key和tag key
> SELECT /level/ FROM "h2o_feet"
name: h2o_feet
time level description water_level
--------------------------------
1439868600 between 3and6 feet 3.524
1439868960 between 3and6 feet 3.399
1439869320 between 3and6 feet 3.278
1439869680 between 3and6 feet 3.159
1439870040 between 3and6 feet 3.048
1439870400 below 3 feet 2.943
1439870760 below 3 feet 2.831
1439871120 below 3 feet 2.717
1439871480 below 3 feet 2.625
1439871840 below 3 feet 2.533該查詢返回所有包含字串“level”的field key和tag key對應的數值。更多關於Regex的介紹可查看Regex。