Skip to content

Prometheus

Monitor alerts from Prometheus and Alertmanager

Configure this integration with:

  • Prometheus Base URL: URL of your Prometheus server (e.g., https://prometheus.example.com)
  • Alertmanager Base URL (optional): URL of your Alertmanager instance (e.g., https://alertmanager.example.com). Required for Silence components. If omitted, the Prometheus Base URL is used.
  • API Auth: none, basic, or bearer for API requests
  • Webhook Secret (recommended): If set, Alertmanager must send Authorization: Bearer <token> on webhook requests

The trigger setup panel in SuperPlane shows the generated webhook URL. Use the On Alert trigger setup instructions in the workflow sidebar for the exact alertmanager.yml snippet.

After editing config, reload Alertmanager (for example POST /-/reload when lifecycle reload is enabled).

The On Alert trigger starts a workflow execution when Alertmanager sends alerts to SuperPlane.

  • Receives Alertmanager webhook payloads
  • Optionally validates bearer auth when Webhook Secret is configured
  • Emits one event per matching alert as prometheus.alert
  • Filters by selected statuses (firing and/or resolved)
  • Statuses: Required list of alert statuses to emit
  • Alert Names: Optional exact alertname filters

When the node is saved, SuperPlane generates a webhook URL shown in the trigger setup panel. Copy that URL into your Alertmanager receiver.

Receiver registration in upstream Alertmanager is config-based (not API-created by SuperPlane). Use the setup instructions shown in the workflow sidebar for the exact alertmanager.yml snippet.

After updating Alertmanager config, reload it (for example POST /-/reload when lifecycle reload is enabled).

{
"data": {
"annotations": {
"description": "Demo alert from local Prometheus setup",
"summary": "SuperPlane test alert is firing"
},
"commonAnnotations": {
"description": "Demo alert from local Prometheus setup",
"summary": "SuperPlane test alert is firing"
},
"commonLabels": {
"alertname": "SuperplaneTestAlert",
"severity": "warning"
},
"endsAt": "0001-01-01T00:00:00Z",
"externalURL": "http://localhost:9093",
"fingerprint": "aac3b474e2c0658c",
"generatorURL": "http://fd66aa456472:9090/graph?g0.expr=vector%281%29\u0026g0.tab=1",
"groupKey": "{}:{alertname=\"SuperplaneTestAlert\"}",
"groupLabels": {
"alertname": "SuperplaneTestAlert"
},
"labels": {
"alertname": "SuperplaneTestAlert",
"severity": "warning"
},
"receiver": "superplane",
"startsAt": "2026-02-12T16:08:39Z",
"status": "firing"
},
"timestamp": "2026-02-12T16:18:03.362582388Z",
"type": "prometheus.alert"
}

The Create Silence component creates a silence in Alertmanager (POST /api/v2/silences) to suppress matching alerts.

  • Matchers: Required list of matchers. Each matcher has:
    • Name: Label name to match
    • Value: Label value to match
    • Is Regex: Whether value is a regex pattern (default: false)
    • Is Equal: Whether to match equality (true) or inequality (false) (default: true)
  • Duration: Required duration string (e.g. 1h, 30m, 2h30m)
  • Created By: Required name of who is creating the silence
  • Comment: Required reason for the silence

Emits one prometheus.silence payload with silence ID, status, matchers, timing, and creator info.

{
"data": {
"comment": "Scheduled maintenance window for database migration",
"createdBy": "SuperPlane",
"endsAt": "2026-02-12T17:30:00Z",
"matchers": [
{
"isEqual": true,
"isRegex": false,
"name": "alertname",
"value": "HighLatency"
},
{
"isEqual": true,
"isRegex": false,
"name": "severity",
"value": "critical"
}
],
"silenceID": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
"startsAt": "2026-02-12T16:30:00Z",
"status": "active"
},
"timestamp": "2026-02-12T16:30:05.123456789Z",
"type": "prometheus.silence"
}

The Expire Silence component expires an active silence in Alertmanager (DELETE /api/v2/silence/{silenceID}).

  • Silence: Required silence to expire. Supports expressions so users can reference $['Create Silence'].silenceID.

Emits one prometheus.silence.expired payload with silence ID and status.

{
"data": {
"silenceID": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
"status": "expired"
},
"timestamp": "2026-02-12T17:45:10.987654321Z",
"type": "prometheus.silence.expired"
}

The Get Alert component fetches active alerts from Prometheus (/api/v1/alerts) and returns the first alert that matches.

  • Alert Name: Required labels.alertname value to search for (supports expressions)
  • State: Optional filter (any, firing, pending, inactive)

Emits one prometheus.alert payload with labels, annotations, state, and timing fields.

{
"data": {
"annotations": {
"description": "Demo alert from local Prometheus setup",
"summary": "SuperPlane test alert is firing"
},
"labels": {
"alertname": "SuperplaneTestAlert",
"severity": "warning"
},
"startsAt": "2026-02-12T16:08:09.000517289Z",
"status": "firing",
"value": "1e+00"
},
"timestamp": "2026-02-12T16:18:05.943610583Z",
"type": "prometheus.alert"
}

The Get Silence component retrieves a silence from Alertmanager (GET /api/v2/silence/{silenceID}) by its ID.

  • Silence: Required silence to retrieve (supports expressions, e.g. {{ $['Create Silence'].silenceID }})

Emits one prometheus.silence payload with silence ID, status, matchers, timing, and creator info.

{
"data": {
"comment": "Scheduled maintenance window",
"createdBy": "SuperPlane",
"endsAt": "2026-02-12T17:30:00Z",
"matchers": [
{
"isEqual": true,
"isRegex": false,
"name": "alertname",
"value": "HighLatency"
}
],
"silenceID": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
"startsAt": "2026-02-12T16:30:00Z",
"status": "active"
},
"timestamp": "2026-02-12T16:30:05.123456789Z",
"type": "prometheus.silence"
}

The Query component executes an instant PromQL query against Prometheus (GET /api/v1/query).

  • Query: Required PromQL expression to evaluate (supports expressions). Example: up

Emits one prometheus.query payload with the result type and results.

{
"data": {
"result": [
{
"metric": {
"__name__": "up",
"instance": "localhost:9090",
"job": "prometheus"
},
"value": [
1708000000,
"1"
]
}
],
"resultType": "vector"
},
"timestamp": "2026-02-12T16:30:05.123456789Z",
"type": "prometheus.query"
}

The Query Range component executes a range PromQL query against Prometheus (GET /api/v1/query_range).

  • Query: Required PromQL expression to evaluate (supports expressions). Example: up
  • Start: Required start timestamp in RFC3339 or Unix format (supports expressions). Example: 2026-01-01T00:00:00Z
  • End: Required end timestamp in RFC3339 or Unix format (supports expressions). Example: 2026-01-02T00:00:00Z
  • Step: Required query resolution step (e.g. 15s, 1m)

Emits one prometheus.queryRange payload with the result type and results.

{
"data": {
"result": [
{
"metric": {
"__name__": "up",
"instance": "localhost:9090",
"job": "prometheus"
},
"values": [
[
1708000000,
"1"
],
[
1708000015,
"1"
],
[
1708000030,
"1"
]
]
}
],
"resultType": "matrix"
},
"timestamp": "2026-02-12T16:30:05.123456789Z",
"type": "prometheus.queryRange"
}