使用Influx CLI(命令行界面)連接TSDB For InfluxDB?
通過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 3242
TSDB 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子句。
使用正則表達式指定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對應的數值。更多關于正則表達式的介紹可查看正則表達式。