Alertmanager en Kubernetes rejette les webhooks envoyés par Prometheus

georges01 16/09/2024
RÉSOLU
georges01
Auteur
Avatar de georges01
georges01
Auteur

yo la team ! j'ai un souci avec mon stack Prometheus/Alertmanager sur K8s. Prometheus envoie bien les alerts à Alertmanager mais celui-ci les rejette avec un 400 Bad Request et des logs qui disent Failed to decode webhook request: invalid character 'p' looking for beginning of value


# excerpt from alertmanager-config.yaml
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: 'slack-notifications'

receivers:
  - name: 'slack-notifications'
    webhook_configs:
      - url: 'https://hooks.slack.com/services/TXXXX/BXXXX/XXXXXX'

les deux sont dans le même namespace. j'ai checké les services et les endpoints tout a l'air ok. pourquoi il rejette le payload ?

16/09/2024 à 22:18

8 commentaires

louis-alves
Membre Actif Secouriste
Avatar de louis-alves
louis-alves
Membre Actif Secouriste

salut le invalid character 'p' ça sent le json mal formé. prometheus envoie du json nickel d'habitude. t'es sûr que ton url de webhook dans Alertmanager c'est pas une url qui attend un format spécifique ? genre un endpoint Slack attends un payload spécifique

Modifié le 23/05/2026 à 16:20
marty-renee
Membre Actif Secouriste
Avatar de marty-renee
marty-renee
Membre Actif Secouriste

ouais des fois les proxys ou des reverse-proxies au milieu déforment le payload. t'as un ingress ou un service mesh entre Prometheus et Alertmanager ? genre istio ou linkerd qui ré-écrit des trucs ?

18/09/2024 à 19:28
georges01
Auteur
Avatar de georges01
georges01
Auteur

non pas de service mesh. c'est du direct service to service. l'URL slack est pour l'exemple mais j'ai le même souci avec un webhook custom que j'ai mis pour débugger qui log le request body. et le body c'est bien le json de prometheus

19/09/2024 à 15:23
louis-alves
Membre Actif Secouriste
Avatar de louis-alves
louis-alves
Membre Actif Secouriste

ah ok c pas le webhook slack qui est mal formaté alors. le message invalid character 'p' looking for beginning of value peut arriver si tu envoies à Alertmanager un POST request avec un Content-Type qui n'est pas application/json ou text/plain. des fois un client mal configuré envoie application/x-www-form-urlencoded

Modifié le 23/05/2026 à 16:20
marty-renee
Membre Actif Secouriste
Avatar de marty-renee
marty-renee
Membre Actif Secouriste

c'est clair Alertmanager attends du JSON. t'as checké les logs de Prometheus pour voir exactement ce qu'il envoie ? et la config de ton alertmanager.url dans Prometheus ? il faut bien que ça soit le endpoint /api/v2/alerts d'Alertmanager

Modifié le 23/05/2026 à 16:20
georges01
Auteur
Avatar de georges01
georges01
Auteur

j'ai bien alertmanager.url: http://alertmanager.monitoring.svc:9093/api/v2/alerts dans ma config Prometheus. je vais aller regarder les requêtes http exactes que Prometheus envoie. ptete un souci de header Content-Type

Modifié le 23/05/2026 à 16:20
louis-alves
Membre Actif Secouriste
Avatar de louis-alves
louis-alves
Membre Actif Secouriste

oui c'est ça un Content-Type: text/plain au lieu de application/json et boom, Alertmanager voit le 'p' de 'payload' (ou n'importe quel premier char) comme un début de valeur pour un JSON qu'il attendait. c'est un bug classique

Modifié le 23/05/2026 à 16:20
georges01
Auteur
Avatar de georges01
georges01
Auteur

bordel c'était ça ! j'avais un proxy débile qui ré-écrivait les headers et transformait le content-type en text/plain. une fois corrigé, les alerts tombent dans Alertmanager. merci les gars !

23/09/2024 à 21:31

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