Grafana: Dynamic Retentions (InfluxDB)
If you plan to store metric data in an InfluxDB for a long time, you have to downsample the data (reduce the granularity to increase the scalability). More about downsampling: InfluxDB: Downsampling
Downsampling in InfluxDB means you create a new "database/bucket" and write the downsampled data into it. This leads to problems with dashboards.
Inhaltsverzeichnis
Problem explanation
We assume: You have three different retention policies/configurations.
- telegraf: Retention = 30 Days, Granularity = raw
- telegraf_90d: Retention = 90 Days, Granularity = 1h
- telegraf_365d: Retention = 365 Days, Granularity = 12h
If we create a dashboard, for example in Grafana, we have to specify the bucket (InfluxDB 2.x) or the retention-policy (InfluxDB 1.x) in our query.
For example we write our query to select the bucket "telegraf". This bucket have only data 30 days back because of the retention configuration.
This means if we select an timespan in Grafana > 30 days, the data are not complete, respectively data older then 30 days are missing.
This is because the data older then 30 days are not anymore stored in the bucket "telegraf" instead the data are stored downsampled in the bucket "telegraf_90d".
Solution
To prevent the mentioned problem above, we are using Grafana's "Template Variables" to create a dynamic retention selection.
Grafana template variables for dynamic retention policies on InfluxDB 2.x
In InfluxDB 2.x retention policies are no longer seperate objects like in InfluxDB 1.x. In InfluxDB 2.x retention is an bucket configuration.