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
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 ?
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
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`
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
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
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
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 !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
georges01
Membre depuis le 03/05/2024actif
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`
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 ?