Appearance
Grafana
Grafana unified alerting Webhook contact points POST Alertmanager-shaped alert groups to Exhale. Each tenant gets a unique HTTPS URL token. Exhale scrubs the payload, upserts a Pulse (source=grafana), and runs triage when status is firing / alerting.
See Incoming integrations for how Grafana fits alongside PagerDuty, OpsGenie, and Manual webhook.
OpenAPI: POST /webhooks/grafana (header token) and POST /webhooks/grafana/{token}.
Endpoint
After Connect in Connections → Integrations → Observability & alerts → Grafana:
Preferred (keeps tokens out of proxy access logs):
POST https://exhale.kolstromsystems.com/webhooks/grafanaSend header X-Exhale-Webhook-Token: {token}.
Path form (also supported):
POST https://exhale.kolstromsystems.com/webhooks/grafana/{token}Design partners may substitute https://exhale-staging.kolstromsystems.com as the host.
token— opaque URL segment; this token authenticates the delivery.- Response: 202 Accepted with
pulse_id,status,created, andmessage.
Unknown tokens return 404. Disabled or expired-trial tenants return 403.
Customer setup
- Sign in as admin → Connections → Integrations → Grafana.
- Click Connect Grafana and copy the webhook URL.
- In Grafana, add a Webhook contact point and paste the Exhale URL.
- Route alerts to that contact point via a notification policy.
- Send test alert creates a synthetic pulse and marks the integration configured.
Rotate webhook token invalidates the previous URL immediately — update Grafana after rotating.
Payload shape
| Field | Required | Notes |
|---|---|---|
groupKey | Yes | Stable id for dedupe (source=grafana) |
status | No | firing / alerting, resolved / ok |
title | No | Pulse title (else commonLabels.alertname) |
Lifecycle mapping
Grafana status | Pulse status |
|---|---|
firing, alerting | Received → triage |
resolved, ok | Resolved |
Example
bash
TOKEN="your-url-token"
curl -i -X POST "https://exhale.kolstromsystems.com/webhooks/grafana/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"status":"firing","groupKey":"demo-group","title":"High CPU"}'Related
Full detail (dedupe, env vars, security): Grafana webhooks in the repository wiki.