Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Depuración del alto uso de memoria

Cada serie temporal en Prometheus se identifica de manera única por su nombre de métrica y pares clave-valor opcionales llamados etiquetas.

Las etiquetas permiten filtrar y agregar los datos de series temporales, pero también multiplican la cantidad de datos que Prometheus recopila.

Cada serie temporal tiene un conjunto definido de etiquetas, y Prometheus genera una nueva serie temporal para todas las combinaciones únicas de etiquetas. Si una métrica tiene dos etiquetas adjuntas, se generan dos series temporales para esa métrica. Cambiar cualquier valor de etiqueta, incluyendo añadir o eliminar una etiqueta, creará una nueva serie temporal.

Prometheus está optimizado para almacenar datos que están indexados por series. Está diseñado para un número relativamente consistente de series temporales y un número relativamente grande de muestras que necesitan ser recopiladas de los exportadores a lo largo del tiempo.

Inversamente, Prometheus no está optimizado para acomodar un número de series temporales que cambie rápidamente. Por esa razón, pueden ocurrir grandes picos de uso de memoria cuando se instala la monitorización en clústeres donde se están creando y destruyendo muchos recursos, especialmente en clústeres multi-inquilinos.

Reducción de picos de memoria

Para reducir el consumo de memoria, se puede configurar Prometheus para almacenar menos series temporales, raspando menos métricas o adjuntando menos etiquetas a las series temporales. Para ver qué series utilizan más memoria, puedes consultar la página de estado de TSDB (base de datos de series temporales) en la interfaz de usuario de Prometheus.

Las soluciones de Prometheus distribuidas como Thanos y Cortex utilizan una arquitectura alternativa en la que se despliegan múltiples instancias pequeñas de Prometheus. En el caso de Thanos, las métricas de cada Prometheus se agregan en el despliegue común de Thanos, y luego esas métricas se exportan a un almacenamiento persistente, como S3. Esta arquitectura más robusta evita sobrecargar cualquier instancia única de Prometheus con demasiadas series temporales, al tiempo que preserva la capacidad de consultar métricas a nivel global.