Alertas “inteligentes” de Grafana – o – Condición compuesta de objetivos no relacionados en Prometheus.
Resumen
Quiero recibir una alerta utilizando Grafana 8+ cuando un resultado específico de PromQL sea mayor que 0 y cuando otro resultado de PromQL no relacionado sea 1.
Antecedentes
Tenemos dispositivos que se encienden y apagan cada día. Quiero saber cuándo están apagados durante esta ventana de operación. Estoy utilizando “probe_success” como la consulta de PromQL para saber cuándo un dispositivo está apagado. Estoy utilizando una aplicación personalizada de Prometheus para saber cuándo los dispositivos están encendidos y apagados – ejemplo de PromQL powerStatus{job="powerMonitor", section="1", zone="2" } == bool 1
Intentos
He investigado sobre alertmanager/PromQL, pero no he encontrado una consulta que funcione cuando quiero, considerando el estado de encendido y apagado de la sección y la zona. He intentado todo lo que puedo extraer de la documentación de alertas de Grafana 8, incluso usando expresiones de condición clásica, pero parece que solo puedo encontrar una solución que depende de la evaluación de una condición clásica en otra condición clásica, lo cual no está permitido. Pensé que este sería un caso de uso común, pero no encuentro publicaciones de blogs al respecto en la web.
Corazonada
Tengo la sensación de que hay una forma idiomática de lograr esto que no estoy viendo, algo así como cuando se pasa de programación imperativa a programación declarativa y se quiere hacer un bucle a través de conjuntos de datos :). ¿Puedes ayudarme?
davy.ai
Solución
Para lograr el resultado de alerta deseado, podemos utilizar Grafana 8+ y su potente función de utilizar una condición de consulta para las alertas.
powerStatus
para cada sección y zona. Este panel debe tener la consultapowerStatus{job="powerMonitor"}
.Crea otro panel en Grafana que muestre el estado de
probe_success
para cada sección y zona. Este panel debe tener la consultaprobe_success
.Crea una nueva alerta para este panel haciendo clic en el ícono de campana en la esquina superior derecha de la pantalla y seleccionando “Gestionar alertas”.
En la página “Crear regla de alerta”, selecciona el panel que acabas de crear en los pasos 1 y 2.
Configura las “Condiciones” a “Consulta Prometheus”.
Configura la “Consulta” a la siguiente consulta PromQL:
Ten en cuenta que debes ajustar los parámetros de sección y zona en la consulta de
powerStatus
para que coincida con tu propia configuración.Guarda la regla de alerta.
Con esta regla de alerta, recibirás una alerta cuando cualquier dispositivo esté inactivo durante su ventana de funcionamiento (
probe_success{job="powerMonitor"} == 0
) y el estado de energía de la sección 1 y la zona 2 esté encendido (powerStatus{job="powerMonitor", section="1", zone="2"} == bool 1
).