命令行界面
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使用的代理服务器。
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'
rfc3339
(YYYY-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_USERNAME
和INFLUX_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>
设置写入一致性的级别:any
、one
、quorum
或者all
。
Ctrl+C
中断当前正在运行的查询。当交互式查询因为试图返回太多数据而太长时间没有返回结果时,这个命令就变得非常有用。
exit quit Ctrl+D
退出influx
Shell。
format <format>
指定服务器返回结果的格式:json
、csv
或column
。
history
显示命令的历史记录。若想在Shell中使用历史命令,只需使用“向上”箭头即可。influx
将您最后的1000个命令存储在主目录中的.influx_history
文件。
insert
使用行协议写入数据。
precision <format>
指定查询和写入的时间戳的格式/精度:rfc3339
(YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ
),h
(小时),m
(分钟),s
(秒),ms
(毫秒),u
(微秒),ns
(纳秒)。默认的精度是纳秒。
pretty
美观地输出JSON格式的数据,方便阅读。
settings
输出Shell的当前设置,包括Host
、Username
、Database
、Retention Policy
、Pretty
状态、Chunked
状态、Chunk Size
、Format
和。
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_king
。influx
自动将数据写入到数据库的默认(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查询。