alertmanager alerte pas quand prometheus crash

Posté par hugues44 le 11/01/2025
RÉSOLU

hugues44

Membre depuis le 15/12/2019

Yo la team. J'ai un souci super chiant. Mon Prometheus a crashé, impossible de le redémarrer pour X raisons, mais Alertmanager n'a jamais envoyé d'alerte pour dire que Prometheus est down. C'est le but de l'alerte "PrometheusDown" non? Genre si l'agent qui surveille est down, y'a personne pour crier au loup. Comment vous gérez ça?


# ma règle d'alerte prometheus
- alert: PrometheusDown
  expr: up{job="prometheus"} == 0
  for: 5m
  labels:
    severity: critical
  annotations:
    summary: "Prometheus instance {{ $labels.instance }} down"
    description: "Prometheus {{ $labels.instance }} is down or unreachable."

Commentaires

roger-meunier

Membre depuis le 27/12/2024

ah le piège classique ! si ton prometheus qui est censé déclencher l'alerte est lui-même down, il ne peut évidemment pas envoyer l'alerte à alertmanager. c'est une limite fondamentale de l'auto-surveillance.

dupre-michel

Membre depuis le 15/06/2024

Exactement ce que dit user 2. Pour surveiller Prometheus, il faut un système externe ou un Prometheus secondaire. Ta règle `up{job="prometheus"} == 0` ne sert à rien si Prometheus ne peut même pas l'évaluer.

thierry-brun

Membre depuis le 02/02/2020

La solution la plus courante c'est d'avoir un deuxième Prometheus minimaliste, juste là pour scraper le Prometheus principal et envoyer l'alerte s'il voit que le principal est down. Ou même un service tierce partie type UptimeRobot.

laurent-roger

Membre depuis le 18/02/2020

tu peux aussi utiliser un `blackbox_exporter` qui ping l'endpoint `/metrics` de ton prometheus principal. si le blackbox voit que c down, il envoie une métrique à un *autre* prometheus (ou à lui-même s'il est configuré pour un scrape local) qui déclenchera l'alerte.

hugues44

Membre depuis le 15/12/2019

D'accord je comprends mieux le principe du watchdog. C'est hyper logique en fait. Donc ma règle est bonne pour surveiller n'importe quel autre service, mais pas le prometheus qui la porte. Je pensais que Alertmanager avait une astuce ou un keepalive natif.

roger-meunier

Membre depuis le 27/12/2024

Non Alertmanager reçoit passivement les alertes. Il ne fait pas de monitoring actif. C'est Prometheus qui le nourrit. Donc si le tube est cassé, plus rien n'arrive. Un Prometheus secondaire est la solution la plus robuste et idiomatique.

dupre-michel

Membre depuis le 15/06/2024

Tu peux aussi envisager un simple script cron sur une machine distincte qui fait un `curl` sur l'endpoint `/metrics` de Prometheus et qui envoie une alerte Slack/Email si ça répond pas. Moins Promethean mais ça marche pour les cas d'urgence.

thierry-brun

Membre depuis le 02/02/2020

Pour la solution blackbox exporter, l'idée est que ce blackbox soit scrapé par un autre Prometheus, ou que tu aies une configuration spéciale qui permet à Prometheus de s'auto-scraper *et* de le faire remonter si lui-même crashait (ce qui est un peu un paradoxe). Le mieux c'est le second Prometheus.

laurent-roger

Membre depuis le 18/02/2020

Oui un "meta-Prometheus" si tu veux. C'est pas forcément lourd, juste une instance qui scrape 2-3 cibles critiques dont le Prometheus principal, le Alertmanager, et ptete un grafana. Juste pour l'upness.

hugues44

Membre depuis le 15/12/2019

Super clair merci. Je vais partir sur un petit Prometheus secondaire qui scrute l'endpoint `/_status` de l'instance principale, ça me semble le plus propre. Merci pour toutes les explications et les pistes, c super utile

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire