The Prometheus Blackbox Exporter probes HTTP endpoints and exposes the results as Prometheus metrics. This lets you pull Alert24 healthcheck status into your existing Prometheus/Grafana stack, create dashboards, and set up AlertManager rules alongside your other infrastructure metrics.
Before you start
You'll need:
- An Alert24 API key (Settings → API Keys → Create API Key)
- The ID of the check you want to monitor, found in Monitoring → [check name] or via the API
- A running Blackbox Exporter instance (
blackbox_exporterbinary or Docker image)
Configure the Blackbox Exporter
In your blackbox.yml, define a module for Alert24 healthchecks:
modules:
alert24_healthcheck:
prober: http
timeout: 10s
http:
valid_status_codes: [200]
method: GET
fail_if_not_matches_regexp:
- '"status":"ok"'
The valid_status_codes: [200] setting marks 503 responses as probe failures, which is the intended behavior.
Configure Prometheus scraping
In your prometheus.yml, add a scrape job for each check:
scrape_configs:
- job_name: alert24_checks
metrics_path: /probe
params:
module: [alert24_healthcheck]
static_configs:
- targets:
# Single-check endpoints
- https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY/YOUR_CHECK_ID_1
- https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY/YOUR_CHECK_ID_2
# Org-wide endpoint
- https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: blackbox-exporter:9115
Key metrics
| Metric | Description |
|---|---|
probe_success |
1 = healthy (200), 0 = unhealthy (503) |
probe_http_status_code |
The raw HTTP status code |
probe_http_duration_seconds |
Total request duration |
probe_duration_seconds |
End-to-end probe duration |
AlertManager rule example
groups:
- name: alert24
rules:
- alert: Alert24CheckDown
expr: probe_success{job="alert24_checks"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Alert24 check is reporting down"
description: "{{ $labels.instance }} has been reporting unhealthy for over 1 minute."
Tips
- Scrape interval: The Blackbox Exporter makes an HTTP request on each Prometheus scrape. Set
scrape_intervalfor this job to match your desired polling frequency (e.g.1m). Don't go below 10s — Alert24 rate limits at 60 req/min per API key. fail_if_not_matches_regexp: The optional'"status":"ok"'regex check in the module config adds a content-level assertion on top of the status code check. Useful if you want extra assurance, but the status code alone is sufficient.- Grafana dashboard: Use the official Blackbox Exporter dashboard as a starting point. Filter by
job="alert24_checks"to isolate these probes.