Siéntete libre de compartir nuestros tutoriales y códigos con tus amigos, necesitamos tu ayuda para hacer crecer esta comunidad.
Solución:
Una opción es enrutar las alertas que desea silenciar a un “null” receptor. En alertmanager.yaml
:
route:
# Other settings...
group_wait: 0s
group_interval: 1m
repeat_interval: 1h
# Default receiver.
receiver: "null"
routes:
# continue defaults to false, so the first match will end routing.
- match:
# This was previously named DeadMansSwitch
alertname: Watchdog
receiver: "null"
- match:
alertname: CPUThrottlingHigh
receiver: "null"
- receiver: "regular_alert_receiver"
receivers:
- name: "null"
- name: regular_alert_receiver
Bueno, logré que funcionara configurando una inhibi_rule hackish:
inhibit_rules:
- target_match:
alertname: 'CPUThrottlingHigh'
source_match:
alertname: 'DeadMansSwitch'
equal: ['prometheus']
los DeadMansSwitch
es, por diseño, una alerta “siempre activada” enviada con el operador Prometheus, y el prometheus
etiqueta es una etiqueta común para todas las alertas, por lo que la CPUThrottlingHigh
termina inhibido para siempre. Apesta, pero funciona.
Ventajas:
- Esto se puede hacer a través del archivo de configuración (usando el
alertmanager.config
parámetro del timón). - los
CPUThrottlingHigh
la alerta todavía está presente en Prometheus para su análisis. - los
CPUThrottlingHigh
la alerta solo aparece en la interfaz de usuario de Alertmanager si la casilla “Inhibido” está marcada. - No hay notificaciones molestas en mis receptores.
Contras:
- Cualquier cambio en
DeadMansSwitch
o elprometheus
el diseño de la etiqueta romperá esto (lo que solo implica que las alertas se activen nuevamente).
Actualizar:Mis contras se hicieron reales…
los DeadMansSwitch
altertname acaba de cambiar en el operador estable/prometeo 4.0.0. Si usa esta versión (o superior), el nuevo nombre de alerta es Watchdog
.
Dudo que exista una manera de silenciar las alertas a través de la configuración (aparte de enrutar dichas alertas a un /dev/null
receptor, es decir, uno sin correo electrónico ni ningún otro mecanismo de notificación configurado, pero la alerta aún aparecería en la interfaz de usuario de Alertmanager).
Aparentemente puedes usar la herramienta de línea de comando amtool
que viene con alertmanager para agregar un silencio (aunque no puedo ver una manera de establecer un tiempo de vencimiento para el silencio).
O puede usar la API directamente (aunque no está documentada y en teoría puede cambiar). De acuerdo con este hilo de usuarios de Prometheus, esto debería funcionar:
curl https://alertmanager/api/v1/silences -d '
"matchers": [
"name": "alername1",
"value": ".*",
"isRegex": true
],
"startsAt": "2018-10-25T22:12:33.533330795Z",
"endsAt": "2018-10-25T23:11:44.603Z",
"createdBy": "api",
"comment": "Silence",
"status":
"state": "active"
'
Acuérdate de que tienes la capacidad de glosar si te fue preciso.