全部產品
Search
文件中心

Time Series Database:命令列介面

更新時間:Jul 06, 2024

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.x

TSDB 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:1234

HTTPS_PROXY

定義HTTPS使用的Proxy 伺服器。如果同時設定了HTTP_PROXY和HTTPS_PROXY,優先考慮HTTPS_PROXY的值。

value的格式:[protocol://][:port]

HTTPS_PROXY=https://localhost:1443

NO_PROXY

不通過任何代理的host名字的列表。如果僅僅設定為星號(*),那麼表示它與所有host匹配。

value的格式:用逗號將多個host隔開。

NO_PROXY=123.45.67.89,123.45.67.90

influx選項

您可以在啟動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'
指定查詢和寫入的時間戳記的格式/精度:rfc3339YYYY-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_USERNAMEINFLUX_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>

設定寫入一致性的層級:anyonequorum或者all

Ctrl+C

中斷當前正在啟動並執行查詢。當互動式查詢因為試圖返回太多資料而太長時間沒有返回結果時,這個命令就變得非常有用。

exit quit Ctrl+D

退出influx Shell。

format <format>

指定伺服器返回結果的格式:jsoncsvcolumn

history

顯示命令的記錄。若想在Shell中使用歷史命令,只需使用“向上”箭頭即可。influx將您最後的1000個命令儲存在主目錄中的.influx_history檔案。

insert

使用行協議寫入資料。

precision <format>

指定查詢和寫入的時間戳記的格式/精度:rfc3339YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ),h(小時),m(分鐘),s(秒),ms(毫秒),u(微秒),ns(納秒)。預設的精度是納秒。

pretty

美觀地輸出JSON格式的資料,方便閱讀。

settings

輸出Shell的當前設定,包括HostUsernameDatabaseRetention PolicyPretty狀態、Chunked狀態、Chunk SizeFormat和。

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_kinginflux自動將資料寫入到資料庫的預設(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查詢。

有關InfluxQL的文檔,請查看文檔資料探索概覽Schema探索資料庫管理