How to Monitor Uptime with Grafana

Set up uptime monitoring with Grafana using Blackbox Exporter and Synthetic Monitoring. Step-by-step guide with dashboards and alerting.

· Project Helena · 3 min read ·
uptime monitoring Grafana Prometheus

If you already use Grafana for observability, adding uptime monitoring is a natural extension. Here’s how to set it up with both self-hosted and cloud approaches.

Option 1: Blackbox Exporter (Self-Hosted)

The Prometheus Blackbox Exporter probes endpoints via HTTP, TCP, DNS, and ICMP, exposing results as Prometheus metrics that Grafana can visualize.

Setup

  1. Deploy Blackbox Exporter:
docker-compose.yml
services:
blackbox-exporter:
image: prom/blackbox-exporter:latest
ports:
- "9115:9115"
volumes:
- ./blackbox.yml:/etc/blackbox_exporter/config.yml
  1. Configure probes:
blackbox.yml
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
valid_status_codes: [200]
method: GET
follow_redirects: true
tcp_connect:
prober: tcp
timeout: 5s
dns_check:
prober: dns
timeout: 5s
dns:
query_name: "example.com"
query_type: "A"
  1. Configure Prometheus scraping:
prometheus.yml
scrape_configs:
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://example.com
- https://api.example.com/health
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

  • probe_success — 1 if probe succeeded, 0 if failed
  • probe_duration_seconds — Total probe duration
  • probe_http_status_code — HTTP response status code
  • probe_ssl_earliest_cert_expiry — SSL certificate expiry timestamp

Grafana Dashboard

Create a dashboard with these panels:

  • Uptime percentage — avg_over_time(probe_success[30d]) * 100
  • Response time — probe_duration_seconds
  • SSL expiry countdown — (probe_ssl_earliest_cert_expiry - time()) / 86400 (days until expiry)
  • Status overview — Table showing all targets with current status

Alerting

# Grafana alert rule
- alert: EndpointDown
expr: probe_success == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Endpoint {{ $labels.instance }} is down"

Option 2: Grafana Cloud Synthetic Monitoring

If you use Grafana Cloud, Synthetic Monitoring is built in and runs checks from 20+ global locations without managing infrastructure.

Setup

  1. Go to Grafana Cloud → Synthetic Monitoring
  2. Add a new check (HTTP, multi-step, DNS, TCP, or traceroute)
  3. Select probe locations
  4. Configure alerting rules
  5. View results in pre-built dashboards

Advantages Over Self-Hosted

  • Multi-region by default — Probes run from multiple global locations
  • No infrastructure — No Prometheus or Blackbox Exporter to manage
  • Pre-built dashboards — Instant visibility without configuration
  • Integrated alerting — Uses Grafana’s alerting system

Limitations

  • 5 checks on free tier — Limited for comprehensive monitoring
  • Costs scale — More checks = higher bill
  • Less customizable — Can’t modify probe behavior like self-hosted

Limitations of Grafana for Uptime Monitoring

Whether self-hosted or cloud, Grafana as a monitoring tool has gaps:

  • No built-in status pages — You need a separate tool for public-facing status
  • Single-region (self-hosted) — Blackbox Exporter runs from one location without complex multi-instance setups
  • Requires Prometheus knowledge — Not a turnkey uptime monitoring solution
  • No native incident management — Alerting only, no incident lifecycle tracking

When to Use Grafana vs Dedicated Tools

Use Grafana when:

  • You already run Prometheus/Grafana for infrastructure
  • You want monitoring data alongside existing dashboards
  • You have engineering capacity to maintain the setup

Use a dedicated tool (like Warden) when:

  • You need built-in status pages and incident communication
  • You want a turnkey solution with minimal setup — a single binary rather than a Prometheus, Blackbox Exporter and Alertmanager stack
  • You need sub-minute check intervals without hand-rolling scrape configs

Note that Warden, like a self-hosted Blackbox Exporter, probes from the single host it runs on. If your requirement is genuinely multi-region probing, Grafana Cloud Synthetic Monitoring covers that and Warden does not.

The best approach for many teams: use Grafana for infrastructure dashboards and a dedicated uptime tool for external availability monitoring and client-facing status pages.


Related tools:

Put one endpoint under observation

Set up your first Warden monitor, confirm successful checks, then verify a failure and recovery with a disposable endpoint. Keep server boot time, synthetic availability and application health as separate measurements.

Monitor your services with Warden

Catch sustained outages and slow responses, keep incident evidence, and share status with your team. Warden by Project Helena is open-source uptime monitoring with adaptive P50/P95 latency and role-scoped AI operations.

Managed hosting includes one Warden instance, updates and backups. $49/month, no setup fee; access within one business day after successful payment.

Check product fit and capabilities · Uptime today; metrics, logs and traces planned