使用influxctl命令行工具写入行协议数据
使用influxctl CLI将行协议数据写入InfluxDB集群。
构建行协议
通过对 行协议 的基本理解, 您现在可以构建行协议并将数据写入 InfluxDB。 考虑一个用例,您从家中的传感器收集数据。 每个传感器收集温度、湿度和一氧化碳读数。 要收集这些数据,请使用以下模式:
- 测量:
home- 标签
room: 客厅或厨房
- 字段
temp: 摄氏度中的温度 (浮点数)hum: 湿度百分比 (浮点数)co: 一百万分之一的空气中一氧化碳含量 (整数)
- 时间戳: Unix 时间戳,单位为秒精度
- 标签
以下行协议表示上述描述的模式:
home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
对于本教程,您可以将此行协议直接作为字符串传递给influxctl write命令,或者通过stdin,或者您可以将其保存到文件中并从中读取。
将行协议写入InfluxDB
使用influxctl write命令将家庭传感器样本数据写入您的InfluxDB集群。提供以下内容:
使用database名称的
--database标志一个 数据库令牌(在目标数据库上具有写权限)使用
--token标志使用
--precision标志的时间戳精度为秒 (s)行协议。 通过以下方式之一传递行协议:
- a string on the command line
- a path to a file that contains the query
- a single dash (
-) to read the query from stdin
替换以下内容:
DATABASE_NAME: 要写入的数据库名称。DATABASE_TOKEN: 具有对目标数据库写权限的数据库令牌。
在你的终端中,输入以下命令以创建示例数据文件:
cat <<EOF > ./home.lp &&LINE_PROTOCOL_FILEPATH=./home.lp home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000 home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000 home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600 home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600 home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200 home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200 home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800 home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800 home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400 home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400 home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000 home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000 EOF
输入以下CLI命令将样本文件中的数据写入:
influxctl write \ --databaseDATABASE_NAME\ --tokenDATABASE_TOKEN\ --precision s \ $LINE_PROTOCOL_FILEPATH
替换以下内容:
DATABASE_NAME: 要写入的数据库名称。DATABASE_TOKEN: 具有目标数据库写入权限的数据库令牌。$LINE_PROTOCOL_FILEPATH: 包含行协议的文件的文件路径。可以是绝对文件路径或相对于当前工作目录的路径。
cat $LINE_PROTOCOL_FILEPATH | influxctl write \
--database DATABASE_NAME \
--token DATABASE_TOKEN \
--precision s \
-
替换以下内容:
DATABASE_NAME: 要写入的数据库名称。DATABASE_TOKEN: 具有目标数据库写入权限的数据库令牌。$LINE_PROTOCOL_FILEPATH: 包含行协议的文件的文件路径。可以是绝对文件路径或相对于当前工作目录的相对路径。