Prometheus, el sistema de monitorización y alertas de código abierto, permite ajustar el tiempo y tamaño de retención de sus datos locales mediante flags personalizados. Esta capacidad es especialmente útil para optimizar el uso del almacenamiento en entornos con recursos limitados o requisitos específicos de retención de datos.
Parámetros de retención de almacenamiento en Prometheus
Prometheus dispone de dos flags clave para configurar la retención de datos en disco:
storage.tsdb.retention.time
: define el tiempo máximo que se conservarán los datos. El valor predeterminado es 15 días. Si se establece explícitamente, anula cualquier configuración anterior destorage.tsdb.retention
.storage.tsdb.retention.size
(experimental): especifica el tamaño máximo (en bytes) de los bloques de almacenamiento que se deben conservar. Los datos más antiguos se eliminan primero cuando se alcanza este límite. Por defecto está deshabilitado (0
). Soporta unidades como B, KB, MB, GB, TB, PB, EB (por ejemplo,512MB
).
¿Por qué es importante configurar esto?
Prometheus almacena sus datos en el directorio:
/var/opt/gitlab/prometheus
Si este directorio se llena, Prometheus puede dejar de funcionar correctamente, afectando a la recolección de métricas y alertas. Para evitar que esto ocurra, es fundamental establecer límites tanto por tiempo como por tamaño en la retención de datos.
Cómo configurar la retención en GitLab
Para personalizar estos parámetros en una instancia de GitLab que utiliza Prometheus, sigue los siguientes pasos:
- Edita el archivo de configuración:
Abre/etc/gitlab/gitlab.rb
y agrega o modifica la sección correspondiente a Prometheus con los parámetros deseados:prometheus['flags'] = {
'storage.tsdb.path' => "/var/opt/gitlab/prometheus/data",
'storage.tsdb.retention.time' => "7d",
'storage.tsdb.retention.size' => "2GB",
'config.file' => "/var/opt/gitlab/prometheus/prometheus.yml"
}
- Reconfigura GitLab:
Aplica los cambios ejecutando:sudo gitlab-ctl reconfigure
Otra solución alternativa
Si prefieres una configuración más simple y directa, también puedes establecer solo el parámetro de retención por tiempo (por ejemplo, 1 día) sin necesidad de definir ruta ni archivo de configuración, como en el siguiente ejemplo:
prometheus['flags'] = {
# 'storage.tsdb.path' => "/var/opt/gitlab/prometheus/data",
'storage.tsdb.retention.time' => "1d",
# 'config.file' => "/var/opt/gitlab/prometheus/prometheus.yml"
}
Esta configuración también es válida y funcional. Establecer un tiempo de retención más corto puede ser una solución eficaz para evitar que el disco se llene, especialmente en entornos donde se puede tolerar una pérdida frecuente de métricas históricas.
Conclusión
Si el disco donde Prometheus almacena sus datos comienza a llenarse (/var/opt/gitlab/prometheus
), existen dos soluciones efectivas:
- Limitar el tiempo y tamaño de retención de datos mediante las flags
storage.tsdb.retention.time
ystorage.tsdb.retention.size
. - Reducir exclusivamente el tiempo de retención, como en el ejemplo anterior, para minimizar el uso de disco sin mayor complejidad.
Ambas soluciones ayudan a mantener el sistema de monitorización funcionando correctamente y a evitar interrupciones por falta de espacio.
Nota: El parámetro
storage.tsdb.retention.size
es experimental y podría modificarse en futuras versiones de Prometheus. Se recomienda revisar la documentación oficial al actualizar.