Prometheus website monitoring
Prometheus website monitoring starts with one scrape target: point Prometheus at Relvato's metrics endpoint, or point Grafana or Grafana Cloud's own Prometheus scraping at the same URL, and graph and alert on monitor failures, uptime, SSL and domain expiry right alongside everything else you already watch.
Works on every plan, Free included, with any Relvato API key — even a read-only one. The answer refreshes at most every 30 seconds, so a 60-second scrape interval is plenty.
Scraping it in three steps
No app to install: Prometheus reads the metrics endpoint like any other exporter.
Create an API key
In Relvato, open API access and create a key. A read-only key is enough — the metrics endpoint only reads.
Add the scrape job
Point Prometheus at /api/v1/metrics with the key as a Bearer token. Add ?siteId= to scrape one site instead of the whole account.
Graph and alert on it
The series behave like any other exporter's: build Grafana panels, or alert straight from Prometheus and Alertmanager.
scrape_configs:
- job_name: relvato
scheme: https
metrics_path: /api/v1/metrics
# params: { siteId: ["st_1a2b3c"] } # one site instead of the whole account
scrape_interval: 60s
authorization:
type: Bearer
credentials_file: /etc/prometheus/relvato_api_key # holds rlv_your_key
static_configs:
- targets: ["app.relvato.com"]credentials_file keeps the key out of the config file; use credentials instead to paste it inline. Each scrape counts as one request toward your plan's rate limit.
What the metrics endpoint exposes
GET /api/v1/metrics answers in the Prometheus text format (0.0.4): every site and monitor in your account as gauges, cached for 30 seconds.
Every series carries site and site_id; monitor series add monitor, monitor_id, monitor_key and group.
| Metric | What it means |
|---|---|
relvato_monitor_up | 1 when a monitor's latest run passed, 0 when it found a problem. No series at all when the latest run couldn't run — see monitor_last_outcome instead. |
relvato_monitor_last_outcome | 1 for the latest run's outcome (outcome="ok", "issue" or "not-run"), so you can alert on couldn't-run too. |
relvato_monitor_last_run_timestamp_seconds / _duration_seconds | When the last run happened and how long it took, in seconds. |
relvato_uptime_up / relvato_uptime_response_time_seconds | Uptime state and response time, per probe region. |
relvato_heartbeat_up / relvato_port_up | Heartbeats and port monitors. |
relvato_ssl_certificate_expiry_timestamp_seconds / relvato_domain_expiry_timestamp_seconds | SSL certificate and domain expiry dates. |
relvato_site_ownership_proven | Whether the site's ownership is proven. |
relvato_runs_used / relvato_runs_limit | Runs used this month against your plan's monthly limit. |
A scrape looks like this:
# TYPE relvato_monitor_up gauge
relvato_monitor_up{site="style4street.com",site_id="st_1a2b3c",monitor="Guest checkout",monitor_id="ck_4d5e6f",monitor_key="woo-checkout",group="flow"} 1
relvato_monitor_up{site="style4street.com",site_id="st_1a2b3c",monitor="Vulnerability scan",monitor_id="ck_7a8b9c",monitor_key="vuln-scan",group="security"} 0
# TYPE relvato_monitor_last_outcome gauge
relvato_monitor_last_outcome{site="style4street.com",site_id="st_1a2b3c",monitor="Storefront",monitor_id="ck_1f2e3d",monitor_key="storefront",group="flow",outcome="not-run"} 1
# TYPE relvato_monitor_last_run_timestamp_seconds gauge
relvato_monitor_last_run_timestamp_seconds{site="style4street.com",site_id="st_1a2b3c",monitor="Guest checkout",monitor_id="ck_4d5e6f",monitor_key="woo-checkout",group="flow"} 1794214842
# TYPE relvato_uptime_response_time_seconds gauge
relvato_uptime_response_time_seconds{site="style4street.com",site_id="st_1a2b3c",region="eu"} 0.183
relvato_uptime_response_time_seconds{site="style4street.com",site_id="st_1a2b3c",region="us"} 0.412
# TYPE relvato_ssl_certificate_expiry_timestamp_seconds gauge
relvato_ssl_certificate_expiry_timestamp_seconds{site="style4street.com",site_id="st_1a2b3c"} 1799971200
# TYPE relvato_runs_used gauge
relvato_runs_used 412Works with Grafana and Datadog too
Add the same URL as a Prometheus data source in Grafana, or let Grafana Cloud's own Prometheus scraping collect it directly — no separate integration to install. Datadog's OpenMetrics integration reads the identical URL and Authorization: Bearer header.
Alert when a monitor finds a problem
Two rules to start with: fire when a monitor's latest run finds a problem, and fire again before a certificate expires.
groups:
- name: relvato
rules:
- alert: RelvatoMonitorFoundAProblem
expr: relvato_monitor_up == 0
for: 5m
annotations:
summary: "{{ $labels.monitor }} on {{ $labels.site }} found a problem"
- alert: RelvatoCertificateExpiringSoon
expr: relvato_ssl_certificate_expiry_timestamp_seconds - time() < 14 * 86400
annotations:
summary: "The certificate on {{ $labels.site }} expires in less than 14 days"Not running Prometheus? Relvato can open a PagerDuty incident directly, no scraping required: PagerDuty website monitoring →
Or post the problem straight to a Slack channel: Website monitoring alerts in Slack →
Prometheus, answered
Which plans can scrape the metrics endpoint?
Every plan, Free included, with any Relvato API key — even a read-only one. The metrics endpoint only reads, so it never needs a full-access key.
How fresh is the data?
The answer is cached for at most 30 seconds, so a 60-second scrape interval is plenty. Each scrape counts as one request toward your plan's rate limit.
Can I scrape just one site?
Yes: add ?siteId= with the site's Relvato id to the URL, and the answer covers only that site instead of your whole account.
What happens when a monitor couldn't run?
There's no relvato_monitor_up series for it. relvato_monitor_last_outcome with outcome="not-run" is 1 instead, so you can alert on a firewall blocking Relvato or the site not answering too.
Does this work with Grafana Cloud or Datadog?
Yes. Grafana Cloud's own Prometheus scraping and Datadog's OpenMetrics integration both read the same URL and Authorization: Bearer header — nothing Relvato-specific to install on either side.
Where's the full list of metrics and labels?
The Prometheus and Grafana section of the developer reference lists every metric, every label and the alert rules above in full.
Do I need Prometheus running to get alerted?
No. Relvato can send alerts on its own, straight to PagerDuty, Slack and other chat apps, without you running or maintaining Prometheus.
More ways to work with Relvato
Put your monitors on the dashboards you already watch
Create an API key and add the scrape job — the first metrics show up within a minute.