Third-Party Monitor Setup

Grafana Blackbox Exporter + Alert24 Healthcheck Integration

Scrape Alert24 healthcheck endpoints with Prometheus Blackbox Exporter and visualize uptime in Grafana. Includes YAML config, scrape job, and AlertManager rule.

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_exporter binary 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_interval for 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.