InfluxDB写入数据
InfluxDB写入数据

InfluxDB为摄取或写入数据提供了许多不同的选项,包括 以下内容:

  • Influx用户界面(UI)
  • InfluxDB HTTP API
  • influx CLI
  • Telegraf
  • InfluxDB客户端库

本教程将引导您完成使用线路协议编写 数据到InfluxDB。如果使用像Telegraf或InfluxDB客户端库这样的工具,它们将 为您构建线路协议,但最好了解线路协议的工作原理。

线路协议

所有写入InfluxDB的数据都是使用线路协议写入的,基于文本的 格式,允许您提供将数据点写入InfluxDB的必要信息。 本教程涵盖线路协议的基础知识,但要了解详细信息, 参见线路协议参考。

线路协议元素

每一行协议都包含以下元素:

  • 要求* * 测量:标识要存储数据的测量值的字符串。
  • 标签集:逗号分隔的键值对列表,每个键值对代表一个标签。 标记键和值是不带引号的字符串。空格、逗号和等号必须转义。
  • * 字段集:逗号分隔的列表键值对,每个键值代表一个字段。 字段键是不带引号的字符串。空格和逗号必须转义。 字段值可以是字符串(带引号), 漂浮物, 整数, 无符号整数, 或布尔值。
  • 时间戳:Unix时间戳 与数据相关联。InfluxDB支持纳秒精度。 如果时间戳的精度不是以纳秒为单位,则必须指定 将数据写入InfluxDB时的精度。

线路协议元素解析

  • 测量:第一个空格前的第一个未转义逗号之前的所有内容。
  • 标记集:第一个未转义逗号和第一个未转义空格之间的键值对。
  • 字段集:第一个和第二个未转义空格之间的键值对。
  • timestamp:第二个未转义的空格之后的整数值。
  • 行由换行符(\n)分隔。 线路协议对空白敏感。

测量,tag1=val1,tag2=val2 field1=“v1”,field2=1i0000000000000000


有关架构设计建议,请参见 InfluxDB模式设计.

构造线路协议

对线路协议有了基本的了解,现在就可以构造线路协议了 并将数据写入InfluxDB。 考虑一个用例,您从家中的传感器收集数据。 每个传感器收集温度、湿度和一氧化碳读数。 要收集此数据,请使用以下模式:

  • 测量home
    • 标签
      • room:客厅或厨房
    • 字段
      • temp:温度,单位为°C(浮动)
      • hum:湿度百分比(浮动)
      • co:一氧化碳,单位为百万分率(整数)
    • timestamp:Unix时间戳,秒精度

从2022-01- 01 T08:00:00 Z(UTC)开始每小时收集一次数据,直到2022-01- 01 T20:00:00 Z(UTC)。 生成的线路协议如下所示:

家庭传感器数据线协议
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
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200

将线路协议写入InfluxDB

使用InfluxDB UI、influx CLI或InfluxDB API编写 上面的行协议到InfluxDB。

InfluxDB UI 流入CLI InfluxDB API

  1. 访问 本地主机:8086 在浏览器中登录并访问InfluxDB UI。

  2. 使用左侧导航栏导航至Load Data> Buckets。

    加载数据

  3. 单击存储桶上的添加数据 要将数据写入,请选择“线路协议”。

  4. 选择“手动输入”。

  5. 重要信息在线上方的精度下拉菜单中 协议文本字段中,选择秒(以匹配 线路协议中的时间戳)。

  6. 复制上面的线路协议并粘贴 输入线路协议文本字段。

  7. 单击“写入数据”。

UI将确认数据已成功写入。

查看写入数据

恭喜!您已将数据写入InfluxDB。所述方法 以上是手动写入数据的方式,但还有其他选项可用:

  • 使用无代码解决方案将数据写入InfluxDB
  • 使用开发人员工具将数据写入InfluxDB

现在有了存储在InfluxDB中的数据,让我们来查询它。

我的微信