将来自mqtt队列的数据存储到两个influxdb测量中



我建立了一个由telegrap、influxdb和chroograp组成的influxdata架构,以收集来自环境传感器(温度、压力和湿度计(的数据。目前,我正在完美地从mqtt收集数据和元数据,以实现具有无限数据保留的测量。

现在,该项目的用户希望,从通过mqtt的记录中,数据无限存储在一个度量中,元数据存储在第二个度量中并保留6个月。

目前,我解析json、解码base64、将值转换为标签和字段、重命名它们或将它们存储在带有telegraph的ONE测量中都没有问题。但我不太擅长将它们复制到两个测量值并并行处理。

例如,以下是我从mqtt:捕获的json帧

{
"applicationID":"1",
"applicationName":"chirp-app",
"deviceName":"0200000001",
"devEUI":"60c5a8fffe76ea89",
"rxInfo":[
{
"gatewayID":"60c5a8fffe76154b",
"uplinkID":"70254019-7f5b-42cd-8cdf-c6f1eaf421c8",
"name":"rak7249",
"time":"2020-10-23T14:29:14.260435Z",
"rssi":-76,
"loRaSNR":9,
"location":{
"latitude":43.50438,
"longitude":1.52947,
"altitude":293
}
}
],
"txInfo":{
"frequency":868100000,
"dr":0
},
"adr":true,
"fCnt":1290,
"fPort":8,
"data":"CAIBZwdosAZzJyYCZwCtBAIBtA==",
"object":{
"analogInput":{
"4":4.36,
"8":3.59
},
"barometer":{
"6":1002.2
},
"humiditySensor":{
"7":88
},
"temperatureSensor":{
"2":17.3
}
}
}

以下是从mqtt队列创建的记录如何存储在influxdb:中

Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> use iot
Using database iot
> select time, device_id, longitude, latitude, altitude, temperature, pressure, humidity from device_0200000001 order by time desc limit 5
name: device_0200000001
time                device_id  longitude latitude altitude temperature pressure humidity
----                ---------  --------- -------- -------- ----------- -------- --------
1603698989487116640 0200000001 1.52989   43.50454 275      11.4        995.5    89
1603698383735575991 0200000001 1.52981   43.50444 267      11.4        995.5    89
1603697777987368971 0200000001 1.52983   43.5044  232      11.4        995.3    88.5
1603697172240129341 0200000001 1.52988   43.50445 235      11.5        995.2    88
1603696566494739058 0200000001 1.52999   43.50457 243      11.6        995      87

我想得到的:

  • 包含数据的序列:device_02000001 (time, device_id, temperature, pressure, humidity)
  • 包含数据和元数据的系列:device_meta_0200000001 (time, device_id, temperature, pressure, humidity, gatewayID, uplinkID, name, gw_time, rssi, loRaSNR, latitude, longitude, altitude)

有人能告诉我如何并行处理数据,然后将它们存储在两个不同的测量中吗?

我已经尝试创建两个使用相同mqtt文件的配置文件,但每次重新启动telegrapf时,它都会崩溃,并出现错误systemd[1]:telegraf.service: Start request repeated too quickly.

感谢您的帮助

Thierry

问题只是文件所有权的问题。使用sudo创建的conf文件属于根用户

最新更新