Skip to content

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.

This is ingest (creates Pulses). For dashboard and alert enrichment at triage time, see Grafana context.

See Sources for how Grafana fits with the other incoming webhooks.

On the hosted app, use the URL Connections copies. It starts with https://exhaleoncall.com/webhooks/. The customer host does not publish /v1/webhooks/....


Endpoint ​

After Connect in Connections → Sources → Observability & alerts → Grafana:

Preferred (keeps tokens out of proxy access logs):

POST https://exhaleoncall.com/webhooks/grafana

Send header X-Exhale-Webhook-Token: {token}.

Path form (also supported):

POST https://exhaleoncall.com/webhooks/grafana/{token}
  • token — opaque URL segment; this token authenticates the delivery.
  • Response: 202 Accepted with pulse_id, status, created, and message.

Unknown tokens return 404. Disabled or expired-trial tenants return 403.


Customer setup ​

  1. Sign in as admin → Connections → Sources → Grafana.
  2. Click Connect Grafana and copy the webhook URL.
  3. In Grafana, add a Webhook contact point and paste the Exhale URL.
  4. Route alerts to that contact point via a notification policy.
  5. Send test alert creates a synthetic pulse and marks the integration configured.

See Grafana's official guide: Configure the webhook notifier for Alerting. See Grafana's official guide: Notification policies.

Rotate webhook token replaces the previous URL right away. Update Grafana after rotating.


Payload shape ​

FieldRequiredNotes
groupKeyYesStable id for dedupe (source=grafana)
statusNofiring / alerting, resolved / ok
titleNoPulse title (else commonLabels.alertname)

Lifecycle mapping ​

Grafana statusPulse status
firing, alertingReceived → triage
resolved, okResolved

Example ​

bash
TOKEN="your-url-token"
curl -i -X POST "https://exhaleoncall.com/webhooks/grafana/${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"status":"firing","groupKey":"demo-group","title":"High CPU"}'

See Errors & authentication for structured errors, 413 size limits, Redis delivery dedupe, and token rotation. Grafana has no vendor HMAC for these contact points — the Exhale URL token is the secret.

Exhale by Kolstrom Systems LLC