通过Influx CLI,用户可以方便地连接到TSDB For InfluxDB®,进行数据读写。本文主要介绍如何使用Influx CLI连接到阿里云上的TSDB For InfluxDB®,并且如何通过CLI写入数据和查询数据。

准备工作

首先,需要在阿里云官网上购买TSDB For InfluxDB®实例,并成功创建用户账号。Influx CLI连接TSDB For InfluxDB®需要用到用户账号和密码。

下载CLI

进入到下载页面,选择InfluxDB v1.7.6,如下图所示。

然后根据操作系统的不同,下载合适的二进制包,如下图所示。

解压下载好的二进制包,进入到解压后的文件夹,在目录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-port3242

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-port3242

指定使用数据库”mydb”。

>USE mydb

Usingdatabase 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-port3242-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-port3242

指定从哪个数据库中查询数据,在本文的示例中,数据来自数据库”mydb”:

>USE mydb

Usingdatabase mydb

查询指定measurement中的所有数据>SELECT*FROM"h2o_feet"

name:h2o_feet

time level description location water_level

----------------------------------------

1439868600between3and6feet coyote_creek3.524

1439868960between3and6feet coyote_creek3.399

1439869320between3and6feet coyote_creek3.278

1439869680between3and6feet coyote_creek3.159

1439870040between3and6feet coyote_creek3.048

1439870400below3feet coyote_creek2.943

1439870760below3feet coyote_creek2.831

1439871120below3feet coyote_creek2.717

1439871480below3feet coyote_creek2.625

1439871840below3feet coyote_creek2.533

该查询返回名为”h2o_feet”的measurement对应的所有数据。

查询measurement中特定的field并进行算术运算>SELECT("water_level"+2)*3FROM"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

----------------------------------------

1439868600between3and6feet coyote_creek3.524

1439868960between3and6feet coyote_creek3.399

1439869320between3and6feet coyote_creek3.278

1439869680between3and6feet coyote_creek3.159

1439870040between3and6feet coyote_creek3.048

该查询返回中”h2o_feet”中的数据,这些数据满足条件:”water_level”的值大于3。更多关于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子句的介绍可查看官方文档。

使用正则表达式指定field key和tag key>SELECT/level/FROM"h2o_feet"

name:h2o_feet

time level description water_level

--------------------------------

1439868600between3and6feet3.524

1439868960between3and6feet3.399

1439869320between3and6feet3.278

1439869680between3and6feet3.159

1439870040between3and6feet3.048

1439870400below3feet2.943

1439870760below3feet2.831

1439871120below3feet2.717

1439871480below3feet2.625

1439871840below3feet2.533

该查询返回所有包含字符串”level”的field key和tag key对应的数值。更多关于正则表达式的介绍可查看官方文档。

InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐