I think the part you've missed is that an *alertmanager* webhook message is completely different to a *discord* webhook message. You need an application in between to translate - that is, it receives an alertmanager webhook message, and send it on to discord with a different payload.
If you google "alertmanager discord" then the first two hits are projects which do exactly this: https://github.com/benjojo/alertmanager-discord https://github.com/rogerrum/alertmanager-discord Now, you linked to this bit of helm chart: https://github.com/cbirkenbeul/k3s-gitops/blob/main/cluster/apps/monitoring/kube-prometheus-stack/helmrelease.yaml That doesn't use alertmanager webhooks at all. It uses the *slack* sending capability of alertmanager. Does Discord accept Slack-formatted API messages? If so, then it might work. This suggests that it could: https://stackoverflow.com/questions/66076875/discord-slack-compatible-webhook But there's a separate API endpoint for accepting Slack-format requests: https://discord.com/developers/docs/resources/webhook#execute-slackcompatible-webhook So either: 1. you're not POSTing to the correct endpoint (the Slack-compatible one) 2. something about alertmanager's request makes Discord unhappy (i.e. it's not as Slack-compatible as it claims to be) If you think it's case (2) then you can take it up with Discord support - although they probably will want to see the body of the HTTP request, and the body of the 400 response that comes back. On Tuesday, 30 August 2022 at 14:00:04 UTC+1 Fabrice Semti wrote: > > > *Best regards,* > > *Fabrice Semti* > > 📧 [email protected] 📧 [email protected] > 🌐 fabricesemti.com <https://fabricesemti.com/> > > > ---------- Forwarded message --------- > Feladó: Fabrice Semti <[email protected]> > Date: 2022. aug. 30., K, 13:42 > Subject: Re: [prometheus-users] Re: discord - "unrecoverable error" > To: Brian Candler <[email protected]> > > > Hi Brian, > > Thanks for the reply. > > You haven't said what you've configured as the receiver (target) of the >> webhook. > > > So I have created a webhook on my discord channel. (The same webhook was > tested on the online tester) > > [image: image.png] > > Therefore, if you're pointing the Prometheus alertmanager webhook receiver >> *directly* at a Discord API, it definitely won't work. You will need some >> middleware to translate the Alertmanager webhook payload into something the >> target API understands. Google "alertmanager discord" for some options. >> > > I have based my config on this one > <https://github.com/cbirkenbeul/k3s-gitops/blob/main/cluster/apps/monitoring/kube-prometheus-stack/helmrelease.yaml>, > > which seems to be in line with what I found for "alertmanager discord"... > > My config is: > > alertmanager: > config: > global: > slack_api_url: "${SECRET_ALERT_MANAGER_DISCORD_WEBHOOK}" > resolve_timeout: 5m > receivers: > - name: "null" > - name: "discord" > slack_configs: > - channel: "#prometheus" > icon_url: https://avatars3.githubusercontent.com/u/3380462 > username: "Prometheus" > send_resolved: true > title: |- > [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ > .Alerts.Firing | len }}{{ end }}] {{ if ne .CommonAnnotations.summary > ""}}{{ .CommonAnnotations.summary }}{{ else }}{{ .CommonLabels.alertname > }}{{ end }} > text: >- > {{ range .Alerts -}} > **Alert:** {{ .Annotations.title }}{{ if > .Labels.severity }} - `{{ .Labels.severity }}`{{ end }} > **Description:** {{ if ne .Annotations.description > ""}}{{ .Annotations.description }}{{else}}N/A{{ end }} > **Details:** > {{ range .Labels.SortedPairs }} • *{{ .Name }}:* `{{ > .Value }}` > {{ end }} > {{ end }} > route: > group_by: ["alertname", "job"] > group_wait: 30s > group_interval: 5m > repeat_interval: 6h > receiver: "discord" > routes: > - receiver: "null" > match: > alertname: Watchdog > - receiver: "discord" > match_re: > severity: critical|warning|error > continue: true > inhibit_rules: > - source_match: > severity: "critical" > target_match: > severity: "warning" > equal: ["alertname", "namespace"] > > ingress: > enabled: true > pathType: Prefix > ingressClassName: "nginx" > annotations: > cert-manager.io/cluster-issuer: "letsencrypt-production" > external-dns.alpha.kubernetes.io/target: "ipv4.${SECRET_DOMAIN}" > external-dns/is-public: "true" > hajimari.io/enable: "true" > hajimari.io/icon: "fire-alert" > # nginx.ingress.kubernetes.io/auth-url: "https://oauth. > ${SECRET_DOMAIN}/oauth2/auth" > # nginx.ingress.kubernetes.io/auth-signin: "https://oauth. > ${SECRET_DOMAIN}/oauth2/start?rd=$scheme://$best_http_host$request_uri" > # nginx.ingress.kubernetes.io/auth-response-headers: > "x-auth-request-user, x-auth-request-email, x-auth-request-access-token" > hosts: > - &host "alert-manager.${SECRET_DOMAIN}" > tls: > - hosts: > - *host > secretName: "alert-manager-tls" > alertmanagerSpec: > storage: > volumeClaimTemplate: > spec: > storageClassName: "hdd-nfs-storage" > resources: > requests: > storage: 1Gi > > resources: > requests: > cpu: 11m > memory: 37M > > > > You can of course make one alertmanager receiver which does both, which is >> perhaps what you're already doing: >> >> receivers: >> - name: discord/slack >> slack_configs: >> - ... >> webhook_configs: >> - ... >> >> >> Yes, pretty much that is what I am aiming for, and I only lightly > modified what I have seen in other repos (such as above or this one > <https://github.com/North14/home-cluster/blob/125cc4938947e9ce07df6ba4bc7e3d6170590d41/cluster/apps/monitoring/kube-prometheus-stack/helm-release.yaml> > > ), so I am not sure what is not right... > Any further clues would be much appreciated... > > > > *Best regards,* > > *Fabrice Semti* > > 📧 [email protected] 📧 [email protected] > 🌐 fabricesemti.com <https://fabricesemti.com/> > > > Brian Candler <[email protected]> ezt írta (időpont: 2022. aug. 30., K, > 11:11): > >> You haven't said what you've configured as the receiver (target) of the >> webhook. >> >> Whatever it is, it is responding with a 400 error, which means that the >> request being sent is invalid. >> >> The format of the webhook payload sent by Alertmanager is *fixed*. For >> an example see: >> https://prometheus.io/docs/alerting/latest/configuration/#webhook_config >> >> This will be different to what a "Discord webhook tester" sends. >> >> Therefore, if you're pointing the Prometheus alertmanager webhook >> receiver *directly* at a Discord API, it definitely won't work. You will >> need some middleware to translate the Alertmanager webhook payload into >> something the target API understands. Google "alertmanager discord" for >> some options. >> >> As for sending to slack, you should use the Alertmanager built-in slack >> integration, not webhook: >> https://prometheus.io/docs/alerting/latest/configuration/#slack_config >> >> You can of course make one alertmanager receiver which does both, which >> is perhaps what you're already doing: >> >> receivers: >> - name: discord/slack >> slack_configs: >> - ... >> webhook_configs: >> - ... >> >> On Tuesday, 30 August 2022 at 08:03:42 UTC+1 [email protected] wrote: >> >>> Hi Everyone, >>> >>> Seeking some help here - very new to Prometheus/Alert Manager, must add. >>> >>> - I set up the kube-prometheus-stack as per: >>> https://github.com/fabricesemti80/home-stack/blob/42f23c6e62184b037908e84d52776a717889ff20/cluster/apps/monitoring/kube-prometheus-stack/helmrelease.yaml#L81 >>> >>> - log errors are similar to this: >>> >>> ts=2022-08-30T06:50:59.456Z caller=dispatch.go:354 level=error >>> component=dispatcher msg="Notify for alerts failed" num_alerts=3 >>> err="discord/slack[0]: notify retry canceled due to unrecoverable error >>> after 1 attempts: channel \"#prometheus\": unexpected status code 400: >>> {\"attachments\": [\"0\"]}" >>> >>> - I used this site <https://disforge.com/tool/webhook-tester> to test >>> the webhook >>> >>> - the test - with the same parameters used in the manifest - was >>> successful (see attached screenshot), therefore I think my settings are >>> correct. >>> >>> Any suggestions what am I missing please? >>> >>> Thanks, >>> F. >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "Prometheus Users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/prometheus-users/uqNf-alj0i0/unsubscribe >> . >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/prometheus-users/e7f7f14f-514f-474c-8052-5bae2c0a6a64n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/prometheus-users/e7f7f14f-514f-474c-8052-5bae2c0a6a64n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "Prometheus Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/prometheus-users/33a1a588-f170-4b26-9285-fdc7db3fd509n%40googlegroups.com.

