使用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对应的数值。更多关于正则表达式的介绍可查看正则表达式。