最近发现rrdtool的一个奇怪行为:如果数据是随机插入到数据库中的,图上会出现“飞溅”,这可以在附图中看到。我还注意到传入的数据与数据库转储中的数据不匹配。请告诉我我做错了什么。
我试过 rrdtool 版本 1.6.0 和 1.7.2,平台是带有 Armbian Linux(内核版本:5.4.45-sunxi)的 Orange Pi One(armv7l)。我还在 x86 平台上进行了测试,它看起来工作正常。
RRD 文件是使用以下命令创建的:
$ rrdcreate /var/db/homed_sensor_7.rrd --step 10 DS:data:GAUGE:3600:U:U RRA:AVERAGE:0.5:1:8640
数据来自 MQTT 随机时间,并通过下一个命令插入到数据库中,例如:
$ rrdupdate /var/db/homed_sensor_7.rrd N:24.8125
输入带有时间戳和值的数据日志:
$ cat /var/log/homed.log | grep 'Sensor 7' | grep '2020.08.11 08:1'
2020.08.11 08:10:08.667 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:10:09.616 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:10:13.400 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:10:14.348 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:10:40.324 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:10:41.269 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:10:45.894 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:10:46.856 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:10:54.293 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:10:55.215 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:10:58.032 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:10:58.972 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:11:03.592 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:11:04.518 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:11:22.266 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:11:23.204 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:11:49.320 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:11:50.264 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:12:08.986 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:12:09.906 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:12:19.224 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:12:20.159 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:12:35.085 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:12:35.999 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:13:10.514 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:13:11.453 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:13:34.626 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:13:36.513 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:13:57.952 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:13:58.896 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:14:12.028 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:14:12.982 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:14:33.386 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:14:34.341 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:14:43.482 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:14:43.711 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:14:45.597 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:14:46.534 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:15:08.645 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:15:09.751 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:15:12.852 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:15:13.317 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:18:41.772 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:18:42.712 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:19:07.107 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:19:08.058 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:19:33.253 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:19:34.194 homed-sensor: Sensor 7 temperature 24.75
2020.08.11 08:19:53.916 homed-sensor: Sensor 7 temperature 24.8125
2020.08.11 08:19:54.860 homed-sensor: Sensor 7 temperature 24.75
RRD同时转储:
$ rrdtool dump /var/db/rrd/homed_sensor_7.rrd | grep '2020-08-11 08:1'
<!-- 2020-08-11 08:10:00 MSK / 1597122600 --> <row><v>2.600518229e+01</v></row>
<!-- 2020-08-11 08:10:10 MSK / 1597122610 --> <row><v>2.480645131e+01</v></row>
<!-- 2020-08-11 08:10:20 MSK / 1597122620 --> <row><v>2.350490220e+01</v></row>
<!-- 2020-08-11 08:10:30 MSK / 1597122630 --> <row><v>2.546319293e+01</v></row>
<!-- 2020-08-11 08:10:40 MSK / 1597122640 --> <row><v>2.546319293e+01</v></row>
<!-- 2020-08-11 08:10:50 MSK / 1597122650 --> <row><v>2.480096602e+01</v></row>
<!-- 2020-08-11 08:11:00 MSK / 1597122660 --> <row><v>2.480094575e+01</v></row>
<!-- 2020-08-11 08:11:10 MSK / 1597122670 --> <row><v>2.391521916e+01</v></row>
<!-- 2020-08-11 08:11:20 MSK / 1597122680 --> <row><v>2.570375508e+01</v></row>
<!-- 2020-08-11 08:11:30 MSK / 1597122690 --> <row><v>2.305996423e+01</v></row>
<!-- 2020-08-11 08:11:40 MSK / 1597122700 --> <row><v>2.655912879e+01</v></row>
<!-- 2020-08-11 08:11:50 MSK / 1597122710 --> <row><v>2.480876661e+01</v></row>
<!-- 2020-08-11 08:12:00 MSK / 1597122720 --> <row><v>2.481034981e+01</v></row>
<!-- 2020-08-11 08:12:10 MSK / 1597122730 --> <row><v>2.480667576e+01</v></row>
<!-- 2020-08-11 08:12:20 MSK / 1597122740 --> <row><v>2.480821922e+01</v></row>
<!-- 2020-08-11 08:12:30 MSK / 1597122750 --> <row><v>2.481094399e+01</v></row>
<!-- 2020-08-11 08:12:40 MSK / 1597122760 --> <row><v>2.266941020e+01</v></row>
<!-- 2020-08-11 08:12:50 MSK / 1597122770 --> <row><v>2.552484289e+01</v></row>
<!-- 2020-08-11 08:13:00 MSK / 1597122780 --> <row><v>2.552484289e+01</v></row>
<!-- 2020-08-11 08:13:10 MSK / 1597122790 --> <row><v>2.552484289e+01</v></row>
<!-- 2020-08-11 08:13:20 MSK / 1597122800 --> <row><v>2.366359064e+01</v></row>
<!-- 2020-08-11 08:13:30 MSK / 1597122810 --> <row><v>2.595585752e+01</v></row>
<!-- 2020-08-11 08:13:40 MSK / 1597122820 --> <row><v>2.383080995e+01</v></row>
<!-- 2020-08-11 08:13:50 MSK / 1597122830 --> <row><v>2.578249258e+01</v></row>
<!-- 2020-08-11 08:14:00 MSK / 1597122840 --> <row><v>2.476898851e+01</v></row>
<!-- 2020-08-11 08:14:10 MSK / 1597122850 --> <row><v>2.485007357e+01</v></row>
<!-- 2020-08-11 08:14:20 MSK / 1597122860 --> <row><v>2.249212094e+01</v></row>
<!-- 2020-08-11 08:14:30 MSK / 1597122870 --> <row><v>2.712694797e+01</v></row>
<!-- 2020-08-11 08:14:40 MSK / 1597122880 --> <row><v>2.480676238e+01</v></row>
<!-- 2020-08-11 08:14:50 MSK / 1597122890 --> <row><v>2.397873126e+01</v></row>
<!-- 2020-08-11 08:15:00 MSK / 1597122900 --> <row><v>2.563894731e+01</v></row>
<!-- 2020-08-11 08:15:10 MSK / 1597122910 --> <row><v>2.480573101e+01</v></row>
<!-- 2020-08-11 08:15:20 MSK / 1597122920 --> <row><v>2.333396444e+01</v></row>
<!-- 2020-08-11 08:15:30 MSK / 1597122930 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:15:40 MSK / 1597122940 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:15:50 MSK / 1597122950 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:16:00 MSK / 1597122960 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:16:10 MSK / 1597122970 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:16:20 MSK / 1597122980 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:16:30 MSK / 1597122990 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:16:40 MSK / 1597123000 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:16:50 MSK / 1597123010 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:17:00 MSK / 1597123020 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:17:10 MSK / 1597123030 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:17:20 MSK / 1597123040 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:17:30 MSK / 1597123050 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:17:40 MSK / 1597123060 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:17:50 MSK / 1597123070 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:18:00 MSK / 1597123080 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:18:10 MSK / 1597123090 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:18:20 MSK / 1597123100 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:18:30 MSK / 1597123110 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:18:40 MSK / 1597123120 --> <row><v>2.488628828e+01</v></row>
<!-- 2020-08-11 08:18:50 MSK / 1597123130 --> <row><v>2.432612710e+01</v></row>
<!-- 2020-08-11 08:19:00 MSK / 1597123140 --> <row><v>2.529321738e+01</v></row>
<!-- 2020-08-11 08:19:10 MSK / 1597123150 --> <row><v>2.268383952e+01</v></row>
<!-- 2020-08-11 08:19:20 MSK / 1597123160 --> <row><v>2.587393409e+01</v></row>
<!-- 2020-08-11 08:19:30 MSK / 1597123170 --> <row><v>2.587393409e+01</v></row>
<!-- 2020-08-11 08:19:40 MSK / 1597123180 --> <row><v>2.316523793e+01</v></row>
<!-- 2020-08-11 08:19:50 MSK / 1597123190 --> <row><v>2.645360868e+01</v></row>
<!-- 2020-08-11 08:10:00 MSK / 1597122600 --> <row><v>2.479729023e+01</v></row>