diff --git a/k8s/infra/logging/grafana-values.yaml b/k8s/infra/logging/grafana-values.yaml index c4dad62..2bef677 100644 --- a/k8s/infra/logging/grafana-values.yaml +++ b/k8s/infra/logging/grafana-values.yaml @@ -209,3 +209,25 @@ sidecar: disableDelete: false foldersFromFilesStructure: true searchNamespace: ALL + +# ── Alerting ────────────────────────────────────────────────────────────────── +# One contact point: Gotify. Gotify refuses Grafana's payload shape with +# 400 "Field 'message' is required", so a bridge service translates the JSON +# first (k8s/apps/gotify/bridge). Grafana posts to the bridge, the bridge posts +# to /message with an app token. +alerting: + contactpoints.yaml: + apiVersion: 1 + contactPoints: + - orgId: 1 + name: gotify + receivers: + - uid: gotify-webhook + type: webhook + disableResolveMessage: false + settings: + url: http://grafana-gotify-bridge.notifications.svc.cluster.local:8080/alert + httpMethod: POST + # 0 sends every alert in one request. The bridge names the extra + # count in the message body. + maxAlerts: 0