全部產品
Search
文件中心

Time Series Database:使用Influx CLI(命令列介面)串連TSDB For InfluxDB®

更新時間:Jul 06, 2024

通過Influx CLI,使用者可以方便地串連到TSDB For InfluxDB®,進行資料讀寫。本文主要介紹如何使用Influx CLI串連到阿里雲上的TSDB For InfluxDB®,以及如何通過CLI寫入資料和查詢資料。

準備工作

首先,需要在阿里雲官網上購買TSDB For InfluxDB®執行個體,並成功建立使用者帳號。Influx CLI串連TSDB For InfluxDB®需要使用者帳號和密碼。

下載CLI

  1. 進入到下載頁面,選擇InfluxDB v1.7.6。

  2. 根據作業系統的不同,下載合適的二進位包,如下圖所示。

  3. 解壓下載好的二進位包。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的資料庫。

  • 單點寫入

    1. 通過Influx CLI串連TSDB For InfluxDB®。

      ./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242
    2. 指定使用資料庫mydb。

      > USE mydb
      Using database mydb
    3. 將單個資料點寫入資料庫mydb。

      > INSERT cpu,host=serverA,region=us_west value=0.64

      這條語句將一個資料點寫入資料庫mydb的預設保留原則中。其中,cpu是measurement,hostregion是tag,value是field,資料點的格式符合行協議。如果沒有提供時間戳記,系統會把伺服器本地的納秒級的Unix時間當作資料點的時間戳記。在TSDB For InfluxDB®中,任何時間戳記都是UTC時間(國際標準時間)。

  • 檔案匯入

    1. 樣本資料:檔案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
    2. 將檔案中的資料匯入TSDB For InfluxDB®。

      ./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242 -import-path=test.txt

      使用參數-import可將檔案中的資料匯入TSDB For InfluxDB®。其中,-path指定需要被匯入的檔案。這條語句將measurementh2o_feettaglocationfieldwater_levellevel description的資料寫入資料庫mydb中。

通過CLI查詢資料

TSDB For InfluxDB®支援豐富的InfluxQL查詢語句,InfluxQL是一種類似SQL的語言,能夠讓使用者方便快捷地與資料進行互動,詳情可查看文檔資料探索Schema探索

  1. 在進行資料查詢前,先串連TSDB For InfluxDB®。

    ./influx -ssl -username <帳號名稱> -password <密碼> -host <網路地址> -port 3242
  2. 指定從哪個資料庫中查詢資料,在本文的樣本中,資料來自資料庫“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