Este artículo explica cómo crear una nueva política de retención por defecto para una base de datos InfluxDB. Las políticas de retención de InfluxDB definen por cuánto tiempo el motor mantiene los datos (métricas recolectadas) y cuántas copias se almacenan en el cluster (factor de replicación). Las políticas de retención son únicas por base de datos y junto con cada medición y tag definen una serie.

Las políticas de retención son otra característica especial de InfluxDB ya que, a diferencia de los motores de bases de datos convencionales, en InfluxDB los datos no son persistentes sino que se almacenan sólo por un cierto período de tiempo. Esto ocurre debido a que las métricas de rendimiento se acumulan rápidamente y no tiene sentido almacenarlas por mucho tiempo.

Veamos cómo crear una nueva política de retención por defecto para una base de datos InfluxDB, o cómo alterar una política existente para mantener los datos por mayor o menor cantidad de tiempo.



Cuando se crea una base de datos, InfluxDB crea una política de retención por defecto llamada autogen con duración infinita, factor de replicación igual a 1 y duración de shard de 1 semana. Si no se altera esta política por defecto de duración infinita, el volumen de datos puede crecer considerablemente, especialmente cuando se almacenan métricas de monitoreo y rendimiento:

root@influxdb:~# grep '^\[data\]' -A 5 /etc/influxdb/influxdb.conf 
[data]
  # Controls if this node holds time series data shards in the cluster
  enabled = true

  dir = "/var/lib/influxdb/data"

En este caso se han acumulado 14 GB de datos en menos de 1 año:

root@influxdb:~# ll -d /var/lib/influxdb/
drwxr-xr-x 5 influxdb influxdb 5 oct 19  2018 /var/lib/influxdb/
root@influxdb:~# du -hs /var/lib/influxdb/data/collectd/
14G	/var/lib/influxdb/data/collectd/

Modificar una política de retención

Para modificar la duración de la política de retención autogenerada, simplemente se debe ejecutar una sentencia ALTER. Por ejemplo, para establecer la duración de la política de retención "autogen" de la base de datos "collectd" en 200 días, ejecutar:

> alter retention policy autogen on collectd duration 200d;

Tener en cuenta que al ejecutar esta sentencia inmediatamente se ELIMINARÁN TODAS LAS MÉTRICAS de más de 200 días de antigüedad.

La duración se puede especificar en segundos (s), minutos (m), horas (h), días (d) y más.

Crear una nueva política de retención por defecto

De forma alternativa es posible crear una nueva política de retención. Sin embargo, es importante aclarar (recordar) que las métricas pertenecen a una política de retención. Por lo tanto, si se cargan valores en la política de retención por defecto. Y se modifica la misma (se cambia por una nueva). Se comenzará a cargar en una serie diferente. Es decir, crear una nueva política de retención por defecto equivale a un comienzo fresco (todas las métricas recolectadas hasta el momento quedarán asociadas a la política de retención anterior.

Veamos entonces cómo hacer una especie de fresh start creando una nueva política de retención con una duración limitada. Actualmente la base cuenta con una única política de retención "autogen":

> show retention policies on collectd;
name    duration    shardGroupDuration  replicaN    default
autogen 0s          168h0m0s            1           true

Para crear una nueva política de retención por defecto con duración de 180 días, utilizar una sentencia CREATE RETENTION POLICY:

> create retention policy collectd on collectd duration 180d replication 1 default;

Se observa que ahora la base cuenta con dos políticas de retención:

 show retention policies on collectd;
name        duration    shardGroupDuration  replicaN    default
autogen     0s          168h0m0s            1           false
collectd    4320h0m0s   168h0m0s            1           true

Todas las métricas recolectadas hasta el momento permanecen en la política "autogen". Y las nuevas recolectadas comienzan a almacenarse bajo la política "collectd" (salvo que se especifique explícitamente la política "autogen" al momento de insertar).

El último paso en este comienzo fresco bajo nueva política consiste en borrar la política "autogen". Cabe destacar una vez más que SE ELIMINARÁN ABSOLUTAMENTE TODAS LAS MÉTRICAS asociadas a dicha política:

> drop retention policy autogen on collectd;

Luego de un momento se completa el borrado de todos los datos recolectados bajo la política "autogen":

> show retention policies on collectd;
name        duration    shardGroupDuration  replicaN    default
collectd    4320h0m0s   168h0m0s            1           true

Es posible verificar la reducción drástica de espacio en disco utilizado por la base de datos:

root@influxdb:~# du -hs /var/lib/influxdb/data/collectd/
1,5K	/var/lib/influxdb/data/collectd/

A partir de ahora no se almacenarán datos por más de 180 días.

Referencias


Tal vez pueda interesarte


Compartí este artículo