Cómo crear una alerta de uso alto de CPU en Prometheus paso a paso
Aprende a configurar reglas de alerta en Prometheus usando PromQL para detectar picos de consumo de CPU e integrar avisos con Alertmanager.
Resumen
- Prometheus recopila métricas de forma continua mediante sondeos HTTP a los objetivos.
- El lenguaje PromQL calcula tasas de uso de CPU comparando datos pasados y actuales.
- Las reglas de alerta definen condiciones lógicas que activan notificaciones al superar límites.
- Alertmanager centraliza, agrupa y despacha las alertas hacia canales como Slack o correo.
- Ajustar el tiempo de persistencia evita falsos positivos causados por picos breves.
Por qué monitorear el uso de CPU con Prometheus
Mantener servidores funcionando sin interrupciones imprevistas exige vigilancia constante sobre los recursos de hardware. Si bien monitorear el consumo de energía de servidores vía IPMI revela costos eléctricos, el comportamiento lógico de una máquina depende de métricas de software. Prometheus se ha convertido en el estándar de la industria para monitoreo debido a su capacidad de recolectar datos de series temporales de manera continua. En la práctica, esto significa que almacena valores numéricos con marcas de tiempo, permitiendo analizar el comportamiento histórico de una aplicación a lo largo de los días.
Cuando la CPU de un servidor alcanza su límite máximo, los procesos se ralentizan, las solicitudes HTTP tardan en responder y los usuarios experimentan latencia generalizada. El gran desafío de la ingeniería moderna no es solo descubrir que un sistema falló, sino recibir un aviso antes de que el problema afecte al usuario final. Para lograr este objetivo, creamos reglas automatizadas que vigilan los indicadores de rendimiento y disparan alertas cuando el procesador permanece sobrecargado durante demasiado tiempo.
Cómo PromQL calcula el consumo de CPU
Para crear una alerta eficiente, debemos comprender cómo Prometheus interpreta la actividad del procesador. El sistema de monitoreo no lee porcentajes preconfigurados directamente del sistema operativo, sino contadores acumulativos del tiempo que la CPU pasa ejecutando diversas tareas. Cada núcleo gasta ciclos en modo de usuario, modo de sistema, esperando operaciones de disco o simplemente inactivo.
El lenguaje de consulta de Prometheus, llamado PromQL, permite transformar estos contadores sin procesar en tasas porcentuales fáciles de analizar. Utilizamos funciones como rate() combinada con el selector node_cpu_seconds_total para calcular qué tanto se exigió el procesador en los últimos minutos. Del mismo modo que diagnosticamos cuellos de botella en servidores físicos, supervisar el procesador evita fallos en cascada, de forma similar a como liberar espacio en disco en Linux cuando Docker llena el caché previene caídas repentinas por falta de almacenamiento.
Paso a paso para configurar la regla de alerta en YAML
Las reglas de alerta en Prometheus se almacenan en archivos de configuración en formato YAML que el servidor lee al iniciar. Necesitamos definir un archivo específico, comúnmente llamado alert.rules.yml, donde especificamos la expresión matemática, la gravedad del problema y el tiempo de espera antes de enviar la notificación.
Para configurar la regla de manera práctica y segura en su entorno de monitoreo, siga los pasos a continuación:
- Abra la terminal de su servidor y acceda al directorio donde se almacenan los archivos de configuración de Prometheus, típicamente ubicado en
/etc/prometheus/. - Cree un nuevo archivo de texto llamado
cpu_alerts.ymlutilizando un editor como nano o vim. - Inserte la estructura de la regla de alerta utilizando PromQL para detectar cuando el uso de CPU supere el límite seguro del ochenta por ciento durante más de cinco minutos.
groups:
- name: cpu_alerts
rules:
- alert: HighCpuUsage
expr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode='idle'}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: 'Uso alto de CPU detectado en la instancia {{ $labels.instance }}'
description: 'El consumo del procesador esta por encima del 80% durante los ultimos 5 minutos.'
El parámetro for: 5m presente en el código anterior actúa como un filtro de paciencia para el sistema. En la práctica, asegura que Prometheus espere a que el procesador esté sobrecargado durante cinco minutos continuos antes de activar la alarma, previniendo falsos positivos provocados por picos breves que duran pocos segundos.
Integrando Prometheus con Alertmanager
Crear la regla dentro de Prometheus es solo el primer paso del monitoreo inteligente. El servidor Prometheus detecta que se cumplió la condición, pero Alertmanager es el componente complementario diseñado específicamente para administrar notificaciones y entregar mensajes al equipo humano.
Alertmanager recibe las alertas generadas sin procesar, elimina duplicados cuando múltiples servidores fallan al mismo tiempo, agrupa eventos correlacionados y los enruta hacia canales externos. Podemos configurarlo para enviar mensajes instantáneos a Slack, despachar correos electrónicos al equipo de guardia o incluso activar llamadas automáticas en casos de emergencia crítica durante la madrugada.
Consideraciones finales sobre monitoreo proactivo
Configurar alertas de CPU bien calibradas transforma la operación de una infraestructura tecnológica, cambiando al equipo de una postura reactiva a una acción preventiva. El secreto de un buen monitoreo no es generar cientos de avisos ruidosos que terminan siendo ignorados, sino crear reglas asertivas basadas en datos reales de uso. Ajustar los umbrales de tolerancia e integrar herramientas como Prometheus y Alertmanager garantiza estabilidad y tranquilidad para sostener aplicaciones en crecimiento continuo.