我正在设置一个从电报收集指标到 influxdb 的设置。然后grafana使用influxdb作为数据源来展示图表。
我的问题是减少磁盘使用量,所以我想对旧数据(超过 3 天)进行下采样并保持新数据(不到 3 天)原样(原始)
我尝试了 influxdb 的保留策略 (RP) 和连续查询 (CQ),如指南中所述: https ://docs.influxdata.com/influxdb/v1.2/guides/downsampling_and_retention
influxdb ("telegraf")
+----------------------------+
| |
| +-----------------------+ |
| | table disk_raw | |
| | CURRENT RP (RAW) +---------+
| | (deleted after 3d) | | |
| +-----------------------+ | |CQ (average 30 min of datapoints into 1)
| +-----------------------+ | |
| | table_disk_ds | | |
| | LONGTERM RP +<--------+
| |(downsampled, kept 90d)| |
| +-----------------------+ |
| +<----+
+----------------------------+ |
|
|
grafana | grafana query
+----------------------------+ |
| | |
| +----------------------+ | |
| | data graph | +-----+
| +----------------------+ |
| |
+----------------------------+
问题是 - 此解决方案为您提供 2 个表,一个用于原始数据,一个用于下采样数据。CQ 不断地写入下采样数据。这对我来说不太好:
- 我正在使用 grafana 查询 influxdb,它从单个表读取到图形。我想要一张旧数据和新数据的图表。
- 使用 2 个数据库会增加磁盘使用率
有没有办法对同一张表中的旧记录进行下采样?
配置示例: https ://docs.influxdata.com/influxdb/v1.2/guides/downsampling_and_retention
格拉法纳查询
SELECT mean("used_percent") FROM "disk" WHERE ("device" = 'dm-0') AND $timeFilter GROUP BY time(10s) fill(none)