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 percentageavg_over_time(probe_success[30d]) * 100
  • Response timeprobe_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 multi-region monitoring without managing multiple Prometheus instances
  • You need built-in status pages and incident communication
  • You want a turnkey solution with minimal setup
  • You need sub-minute check intervals from multiple locations

The best approach for many teams: use Grafana for infrastructure dashboards and a dedicated uptime tool for external availability monitoring. Warden can export metrics to Prometheus, giving you the best of both worlds.


Related tools:

Stay in the loop

Get notified about new posts, product updates, and engineering insights.

Join the waitlist →