Documentation

开始编写数据

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

本教程将指导您了解如何使用行协议将数据写入InfluxDB的基本知识。如果使用像Telegraf或InfluxDB客户端库这样的工具,它们会为您构建行协议,但了解行协议的工作原理是很好的。

行协议

所有写入InfluxDB的数据都是使用行协议写入的,这是一种基于文本的格式,可让您提供必要的信息以将数据点写入InfluxDB。本教程涵盖了行协议的基本知识,但有关详细信息,请参阅行协议参考

行协议元素

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

* Required
  • * measurement: 用于标识存储数据的measurement的字符串。
  • 标签集: 以逗号分隔的键值对列表,每个代表一个标签。标签键和值为未加引号的字符串。 空格、逗号和等号字符必须被转义。
  • * 字段集: 以逗号分隔的键值对列表,每个表示一个字段。字段键是未加引号的字符串。 空格和逗号必须转义。 字段值可以是 字符串 (带引号), 浮点数整数无符号整数,或 布尔值
  • timestamp: Unix 时间戳 与数据相关。InfluxDB 支持高达纳秒的精度。 如果时间戳的精度不是纳秒,你必须在将数据写入 InfluxDB 时指定精度。

行协议元素解析

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

myMeasurement,tag1=val1,tag2=val2 field1="v1",field2=1i 0000000000000000000


有关架构设计建议,请参见 InfluxDB schema design

构建行协议

通过对行协议的基本理解,您现在可以构建行协议并将数据写入InfluxDB。考虑一个使用案例,您从家中的传感器收集数据。每个传感器收集温度、湿度和一氧化碳读数。要收集这些数据,请使用以下模式:

  • 测量: home
    • 标签
      • room: 客厅或厨房
    • 字段
      • temp: 摄氏度中的温度 (浮点数)
      • hum: 湿度百分比 (浮点数)
      • co: 一百万分之一的空气中一氧化碳含量 (整数)
    • 时间戳: Unix 时间戳,单位为精度

数据从2022-01-01T08:00:00Z (UTC)开始,每小时收集,直到2022-01-01T20:00:00Z (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 UIinflux CLIInfluxDB API将上述行协议写入InfluxDB。

  1. 访问 localhost:8086 在浏览器中登录并访问 InfluxDB 用户界面。

  2. 使用左侧导航栏导航到 加载数据 >

  1. 点击 添加数据 到您想要写入数据的桶,然后选择 行协议
  2. 选择 手动输入
  3. 重要 在上面的精度下拉菜单中,选择(以匹配行协议中的时间戳精度)。
  4. 复制上面的 行协议 并粘贴到行协议文本字段中。
  5. 点击 写入数据.

用户界面将确认数据已成功写入。

  1. 如果您还没有,请下载、安装并配置 influx CLI

  2. 使用influx write命令以上的行协议写入InfluxDB。

    提供以下内容:

    • -b, --bucket--bucket-id 标志,后面跟要写入的桶名称或 ID。
    • -p, --precision 标志与时间戳精度 (s)。
    • 字符串编码的行协议。
    • 连接和认证凭据
    influx write \
      --bucket get-started \
      --precision s "
    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 HTTP API将数据写入InfluxDB,请使用POST请求方法向InfluxDB API /api/v2/write端点发送请求。

POST http://localhost:8086/api/v2/write

请在您的请求中包含以下内容:

  • Headers:
    • Authorization: Token
    • Content-Type: 文本/纯文本; 字符集=utf-8
    • Accept: 应用/json
  • 查询参数:
    • org: InfluxDB 组织名称
    • bucket: InfluxDB 数据桶名称
    • precision: 时间戳精度 (默认是 ns)
  • 请求体: 行协议作为纯文本

以下示例使用 cURL 和 InfluxDB API 将行协议写入 InfluxDB:

export INFLUX_HOST=http://localhost:8086
export INFLUX_ORG=<YOUR_INFLUXDB_ORG>
export INFLUX_TOKEN=<YOUR_INFLUXDB_API_TOKEN>

curl --request POST \
"$INFLUX_HOST/api/v2/write?org=$INFLUX_ORG&bucket=get-started&precision=s" \
  --header "Authorization: Token $INFLUX_TOKEN" \
  --header "Content-Type: text/plain; charset=utf-8" \
  --header "Accept: application/json" \
  --data-binary "
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中,让我们查询它。



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: