将mqtt队列中的数据存储到两个XDB测量中

将mqtt队列中的数据存储到两个XDB测量中,mqtt,iot,influxdb,telegraf,Mqtt,Iot,Influxdb,Telegraf,我建立了一个由telegraf、influxdb和chronograf组成的influxdata体系结构,用于从环境传感器(温度、压力和湿度计)收集数据。目前,我正在完美地从mqtt收集数据和元数据,以实现具有无限数据保留的测量 现在,项目的用户希望,从通过mqtt的记录中,数据无限存储在一个度量中,元数据存储在第二个度量中,保留期为6个月 目前,我在解析json、解码base64、将值转换为标记和字段、重命名它们或使用telegraf将它们存储在一个度量中都没有问题。但我不太擅长将它们复制成两

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

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

目前,我在解析json、解码base64、将值转换为标记和字段、重命名它们或使用telegraf将它们存储在一个度量中都没有问题。但我不太擅长将它们复制成两个测量值并并行处理它们

例如,下面是我从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队列创建的记录如何存储在XDB中:

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
我想要的是:

  • 包含以下数据的系列:
    设备\u 02000001(时间、设备id、温度、压力、湿度)
  • 包含数据和元数据的系列:
    device\u meta\u 02000000001(时间、设备id、温度、压力、湿度、网关id、上行链路id、名称、gw\u时间、rssi、loRaSNR、纬度、经度、高度)
有人能告诉我如何并行处理数据,然后将它们存储在两个不同的测量中吗

我已经尝试创建两个使用相同mqtt文件的配置文件,但每次重新启动telegraf时,它都会崩溃,并出现错误systemd[1]:
telegraf.service:Start请求重复得太快。

谢谢你的帮助


Thierry

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