Prometheus

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.

GET /api/v1/metrics
# TYPE relvato_monitor_up gauge
relvato_monitor_up{site="style4street.com",monitor="Guest checkout",group="flow"} 1
relvato_monitor_up{site="style4street.com",monitor="Vulnerability scan",group="security"} 0
# TYPE relvato_uptime_response_time_seconds gauge
relvato_uptime_response_time_seconds{site="style4street.com",region="eu"} 0.183
A Prometheus text-format scrape — the same answer Grafana and Datadog's OpenMetrics integration read.
Set up

Scraping it in three steps

No app to install: Prometheus reads the metrics endpoint like any other exporter.

01

Create an API key

In Relvato, open API access and create a key. A read-only key is enough — the metrics endpoint only reads.

02

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.

03

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's in it

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.

MetricWhat it means
relvato_monitor_up1 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_outcome1 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_secondsWhen the last run happened and how long it took, in seconds.
relvato_uptime_up / relvato_uptime_response_time_secondsUptime state and response time, per probe region.
relvato_heartbeat_up / relvato_port_upHeartbeats and port monitors.
relvato_ssl_certificate_expiry_timestamp_seconds / relvato_domain_expiry_timestamp_secondsSSL certificate and domain expiry dates.
relvato_site_ownership_provenWhether the site's ownership is proven.
relvato_runs_used / relvato_runs_limitRuns 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 412
Grafana and Datadog

Works 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.

Alerting

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 →

FAQ

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.

Related

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.