命令行界面

TSDB For InfluxDB®的命令行界面(influx)是与HTTP API进行交互的Shell。可以使用influx写入数据(手动地或者从文件中)、交互式地查询数据和以不同的格式查看查询结果。

下载CLI

根据操作系统的不同,下载合适的二进制包,下载地址如下:

解压下载的压缩包,进入到解压后的文件夹,可获得命令行工具influx(Windows下为influx.exe)。

启动influx

要使用CLI,首先在终端启动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使用的代理服务器。

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

HTTP_PROXY=http://localhost:1234

HTTPS_PROXY

定义HTTPS使用的代理服务器。如果同时设置了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探索数据库管理