You need to enable JavaScript to run this app.
导航
influx2 sink 配置实践
最近更新时间:2024.11.08 14:46:58首次发布时间:2024.11.08 14:46:58

本文介绍了如何借助北向通道将边缘节点采集的设备属性数据上报到第三方 InfluxDB V2 时序数据库。

准备工作

  1. 准备一个边缘节点,并完成模拟数据源

    注意

    边缘智能软件版本必须在 v2.7.0 及以上。

  2. 部署一个 InfluxDB V2 时序数据库。
    在与边缘节点网络连通的设备上,使用 Docker 部署一个 InfluxDB V2 数据库,映射 8086 端口到宿主机并配置必须的环境变量。您可以使用如下示例脚本:

    docker run \
     -d \
     --name influxdb2 \
     --publish 8086:8086 \
     --env DOCKER_INFLUXDB_INIT_MODE=setup \
     --env DOCKER_INFLUXDB_INIT_USERNAME=admin \
     --env DOCKER_INFLUXDB_INIT_PASSWORD=admin123 \
     --env DOCKER_INFLUXDB_INIT_ORG=vei \
     --env DOCKER_INFLUXDB_INIT_BUCKET=north \
     --env DOCKER_INFLUXDB_INIT_RETENTION=30d \
     --env DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=aHR0cHM6Ly9jb25zb2xlLnZvbGNlbmdpbmUuY29tL3ZlaQ== \
     influxdb:2.7
    

    部署完成后,在设备上访问127.0.0.1:8086,确认 InfluxDB 数据库可以正常运行。
    Image

  3. 参照创建北向通道,创建一个包含 influx2 sink 的北向通道。
    按以下方式配置数据源(source)和数据目的地(sink):

    类型

    配置项

    说明

    数据源配置

    节点

    选择您的边缘节点。

    设备模板

    选择 全部

    驱动模板

    选择 全部

    设备实例

    选择您在模拟数据源操作中,接入到边缘节点的虚拟设备。

    sink 节点配置

    sink 类型

    选择 influx2

    参数配置

    • addr:设置为 <宿主机 IP>:8086
    • org:设置为 vei(依据 InfluxDB 部署脚本中环境变量的定义)。
    • bucket:设置为 north(依据 InfluxDB 部署脚本中环境变量的定义)。
    • token:设置为 aHR0cHM6Ly9jb25zb2xlLnZvbGNlbmdpbmUuY29tL3ZlaQ==(依据 InfluxDB 部署脚本中环境变量的定义)。

    Image

完成以上配置后,单击 连通性测试。确保连通性测试成功,然后单击 保存

验证数据上报结果

准备工作完成后,北向通道将被部署到边缘节点。当北向通道正常运行时,虚拟设备的随机属性数据将被上报到 InfluxDB。您可以按以下方式进行验证:

  1. 登录 InfluxDB 控制台,并访问 Data Explorer 页面。
  2. 选择 bucketmeasurement,并配置数据过滤,然后单击 SUBMIT
    这时可以在页面上方查看接收的数据。
    Image

配置示例

示例1:使用数据采集时刻的时间戳

默认情况下,边缘节点将数据上报到 InfluxDB 时,使用后端组件的系统时间作为时间戳。系统时间与实际的数据采集时间可能存在一些偏差。如需以数据采集时刻作为 InfluxDB 的数据写入时间戳,可以按以下方式配置:

  1. 编辑北向通道。

  2. 参数配置 中,修改以下参数:

    • precision:设置为 ns
    • tsFieldName:设置为 __meta.origin

    Image

  3. 完成 连通性测试,然后单击 保存

北向通道保存后会自动重新部署。当修改后的北向通道正常运行后,您可以到 InfluxDB 的 Data Explorer 页面验证结果。当您检查最新接收到的数据时,会发现数据写入时间戳就是数据采集时间。
Image

示例2:为时序数据添加自定义 Tag

为时序数据添加 tag 可以增加数据可读性和可解释性,也能够提升查询性能。
如需为数据添加自定义 tag,按以下方式配置:

  1. 编辑北向通道。
  2. 参数配置 中,将 tags 设置为 { "device_name" = "{{ .__meta.deviceName }}", "tag1" = "xxx" }
    • device_name引用了采集的设备原始数据中设备实例的标识符。
    • tag1为自定义的标签。

    注意

    在添加的 tags 中,所有的 key-value 必须为 String 类型。

    Image
  3. 完成 连通性测试,然后单击 保存

北向通道保存后会自动重新部署。当修改后的北向通道正常运行后,您可以到 InfluxDB 的 Data Explorer 页面验证结果。当您开启 View Raw Data,会发现 Raw Data 中包含新增的自定义标签。
Image

示例3:过滤物模型属性数据

如果您希望上报到 InfluxDB 的设备属性数据只包含物模型中的部分属性数据,可以按以下方式配置:

  1. 编辑北向通道。
  2. 参数配置 中,将 fields 设置为希望入库数据中包含的属性列表。
    例如,将该参数设置为 [ "read_write:rw_int", "read_write:rw_float", "read_write:rw_double" ],表示只有 read_write 模块下的 rw_intrw_floatrw_double 三个属性的数据会被转发到 InfluxDB。fields 数组中每个元素的格式为 <物模型模块标识符>:<物模型功能(属性)标识符>;如果是默认模块下的功能(属性),那么不用添加<物模型模块标识符>:
    Image
  3. 完成 连通性测试,然后单击 保存

北向通道保存后会自动重新部署。当修改后的北向通道正常运行后,您可以到 InfluxDB 的 Data Explorer 页面验证结果。当您删除 InfluxDB 的历史数据并重启数据库,可以在 Data Explorer 界面看到 fields 的变化。
Image

influx2 sink 参数说明

下表介绍了 influx2 sink 支持的所有参数。

参数

数据类型

是否必选

说明

示例值

addr

String

InfluxDB 的地址。

http://127.0.0.1:8086

org

String

InfluxDB 的 org 属性。

vei

bucket

String

InfluxDB 的 bucket 名称。

north

measurement

String

InfluxDB 的 measurement。

data_format

token

String

InfluxDB 的访问 token。

aHR0cHM6Ly9jb25zb2xlLnZvbGNlbmdpbmUuY29tL3ZlaQ==

precision

String

时间精度。该参数有以下取值:ns、us、ms、s。默认值为 ms。

ms

tsFieldName

String

设置一个字段名称,该字段的值用作数据写入数据库的时间戳。若未设置该字段,则数据写入时间戳为默认值(写入时的系统时间)。
例如,假设数据为 {"ts": 1888888888}tsFieldName 被设置为 ts,那么 1888888888 将作为这条数据写入数据库的时间戳。

说明

请确保您指定的时间戳字段的精度与 precision 设置相同。

ts

fields

Array

要返回的字段。每个元素的格式为 <物模型模块标识符>_<物模型功能标识符>;如果功能模块是默认,那么<物模型模块标识符>_可以省略。

示例:
如果只需要默认模块下的 temperatureread_write 模块下的 humidity 数据,那么可以将字段设置为 ["temperature", "read_write:humidity"]

["temperature", "read_write:humidity"]

tags

Object

标签键值对。格式为 {"tag1":"value1"}。值可以引用采集的元数据。如需引用,可使用 Golang 模板提取。

{"tag1":"value1"}

useLineProtocol

Boolean

是否使用行协议写入。默认值为 false
使用行协议写入情形下,设置数据模板属性时,其格式化结果应当按照行协议格式进行格式化。

true