本文介绍了如何借助北向通道将边缘节点采集的设备属性数据上报到第三方 InfluxDB V2 时序数据库。
准备一个边缘节点,并完成模拟数据源。
注意
边缘智能软件版本必须在 v2.7.0 及以上。
部署一个 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 数据库可以正常运行。
参照创建北向通道,创建一个包含 influx2 sink 的北向通道。
按以下方式配置数据源(source)和数据目的地(sink):
类型 | 配置项 | 说明 |
---|---|---|
数据源配置 | 节点 | 选择您的边缘节点。 |
设备模板 | 选择 全部。 | |
驱动模板 | 选择 全部。 | |
设备实例 | 选择您在模拟数据源操作中,接入到边缘节点的虚拟设备。 | |
sink 节点配置 | sink 类型 | 选择 influx2。 |
参数配置 |
|
完成以上配置后,单击 连通性测试。确保连通性测试成功,然后单击 保存。
准备工作完成后,北向通道将被部署到边缘节点。当北向通道正常运行时,虚拟设备的随机属性数据将被上报到 InfluxDB。您可以按以下方式进行验证:
默认情况下,边缘节点将数据上报到 InfluxDB 时,使用后端组件的系统时间作为时间戳。系统时间与实际的数据采集时间可能存在一些偏差。如需以数据采集时刻作为 InfluxDB 的数据写入时间戳,可以按以下方式配置:
编辑北向通道。
在 参数配置 中,修改以下参数:
precision
:设置为 ns
。tsFieldName
:设置为 __meta.origin
。完成 连通性测试,然后单击 保存。
北向通道保存后会自动重新部署。当修改后的北向通道正常运行后,您可以到 InfluxDB 的 Data Explorer 页面验证结果。当您检查最新接收到的数据时,会发现数据写入时间戳就是数据采集时间。
为时序数据添加 tag 可以增加数据可读性和可解释性,也能够提升查询性能。
如需为数据添加自定义 tag,按以下方式配置:
tags
设置为 { "device_name" = "{{ .__meta.deviceName }}", "tag1" = "xxx" }
。
device_name
引用了采集的设备原始数据中设备实例的标识符。tag1
为自定义的标签。注意
在添加的 tags 中,所有的 key-value 必须为 String 类型。
北向通道保存后会自动重新部署。当修改后的北向通道正常运行后,您可以到 InfluxDB 的 Data Explorer 页面验证结果。当您开启 View Raw Data,会发现 Raw Data 中包含新增的自定义标签。
如果您希望上报到 InfluxDB 的设备属性数据只包含物模型中的部分属性数据,可以按以下方式配置:
fields
设置为希望入库数据中包含的属性列表。[ "read_write:rw_int", "read_write:rw_float", "read_write:rw_double" ]
,表示只有 read_write
模块下的 rw_int
、rw_float
和 rw_double
三个属性的数据会被转发到 InfluxDB。fields
数组中每个元素的格式为 <物模型模块标识符>:<物模型功能(属性)标识符>
;如果是默认模块下的功能(属性),那么不用添加<物模型模块标识符>:
。北向通道保存后会自动重新部署。当修改后的北向通道正常运行后,您可以到 InfluxDB 的 Data Explorer 页面验证结果。当您删除 InfluxDB 的历史数据并重启数据库,可以在 Data Explorer 界面看到 fields 的变化。
下表介绍了 influx2 sink 支持的所有参数。
参数 | 数据类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
addr | String | 是 | InfluxDB 的地址。 |
|
org | String | 是 | InfluxDB 的 org 属性。 |
|
bucket | String | 是 | InfluxDB 的 bucket 名称。 |
|
measurement | String | 是 | InfluxDB 的 measurement。 |
|
token | String | 是 | InfluxDB 的访问 token。 |
|
precision | String | 是 | 时间精度。该参数有以下取值:ns、us、ms、s。默认值为 ms。 |
|
tsFieldName | String | 否 | 设置一个字段名称,该字段的值用作数据写入数据库的时间戳。若未设置该字段,则数据写入时间戳为默认值(写入时的系统时间)。 说明 请确保您指定的时间戳字段的精度与 |
|
fields | Array | 否 | 要返回的字段。每个元素的格式为
|
|
tags | Object | 否 | 标签键值对。格式为 |
|
useLineProtocol | Boolean | 否 | 是否使用行协议写入。默认值为 |
|