Prometheus

Surveillance de site avec Prometheus

Cette surveillance de site avec Prometheus récupère le point de terminaison de métriques de Relvato, ou pointe Grafana ou le scraping Prometheus propre à Grafana Cloud vers la même URL, pour représenter graphiquement les échecs de moniteurs, l'uptime, le SSL et l'expiration du domaine, juste à côté de tout ce que vous surveillez déjà.

Fonctionne sur toutes les offres, Free compris, avec n'importe quelle clé API Relvato, même en lecture seule. La réponse se rafraîchit au plus toutes les 30 secondes, un intervalle de scrape de 60 secondes est donc largement suffisant.

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
Un scrape au format texte Prometheus — la même réponse que lisent Grafana et l'intégration OpenMetrics de Datadog.
Mise en place

Prêt à scraper en trois étapes

Aucune application à installer : Prometheus lit le point de terminaison de métriques comme n'importe quel autre exporter.

01

Créez une clé API

Dans Relvato, ouvrez « API access » et créez une clé. Une clé en lecture seule suffit : le point de terminaison de métriques ne fait que lire.

02

Ajoutez le job de scrape

Pointez Prometheus vers /api/v1/metrics avec la clé comme jeton Bearer. Ajoutez ?siteId= pour ne scraper qu'un seul site plutôt que tout le compte.

03

Représentez-les et alertez dessus

Les séries se comportent comme celles de n'importe quel autre exporter : construisez des panneaux Grafana, ou alertez directement depuis Prometheus et 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 garde la clé hors du fichier de configuration ; utilisez credentials à la place pour la coller directement. Chaque scrape compte comme une requête au regard de la limite de votre offre.

Ce qu'il contient

Ce qu'expose le point de terminaison de métriques

GET /api/v1/metrics répond au format texte Prometheus (0.0.4) : chaque site et chaque moniteur de votre compte sous forme de gauges, mis en cache pendant 30 secondes.

Chaque série porte site et site_id ; les séries de moniteur ajoutent monitor, monitor_id, monitor_key et group.

MétriqueCe qu'elle signifie
relvato_monitor_up1 quand la dernière exécution d'un moniteur a réussi, 0 quand elle a trouvé un problème. Aucune série du tout quand la dernière exécution n'a pas pu tourner — voir monitor_last_outcome à la place.
relvato_monitor_last_outcome1 pour le résultat de la dernière exécution (outcome="ok", "issue" ou "not-run"), pour pouvoir aussi alerter sur « n'a pas pu tourner ».
relvato_monitor_last_run_timestamp_seconds / _duration_secondsQuand a eu lieu la dernière exécution et combien de temps elle a pris, en secondes.
relvato_uptime_up / relvato_uptime_response_time_secondsÉtat de l'uptime et temps de réponse, par région de sonde.
relvato_heartbeat_up / relvato_port_upHeartbeats et moniteurs de port.
relvato_ssl_certificate_expiry_timestamp_seconds / relvato_domain_expiry_timestamp_secondsDates d'expiration du certificat SSL et du domaine.
relvato_site_ownership_provenSi la propriété du site est prouvée.
relvato_runs_used / relvato_runs_limitExécutions utilisées ce mois-ci par rapport à la limite mensuelle de votre offre.

Un scrape ressemble à ceci :

# 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 et Datadog

Fonctionne aussi avec Grafana et Datadog

Ajoutez la même URL comme source de données Prometheus dans Grafana, ou laissez le scraping Prometheus propre à Grafana Cloud la récupérer directement — aucune intégration séparée à installer. L'intégration OpenMetrics de Datadog lit la même URL et le même en-tête Authorization: Bearer.

Alertes

Alertez quand un moniteur trouve un problème

Deux règles pour commencer : se déclencher quand la dernière exécution d'un moniteur trouve un problème, et se déclencher à nouveau avant l'expiration d'un certificat.

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"

Vous n'utilisez pas Prometheus ? Relvato peut ouvrir un incident PagerDuty directement, sans aucun scraping : Surveillance de site avec PagerDuty →

Ou publier le problème directement dans un canal Slack : Alertes de surveillance de site dans Slack →

FAQ

Prometheus, expliqué

Quelles offres peuvent scraper le point de terminaison de métriques ?

Toutes les offres, Free compris, avec n'importe quelle clé API Relvato, même en lecture seule. Le point de terminaison de métriques ne fait que lire, il n'a donc jamais besoin d'une clé en accès complet.

À quel point les données sont-elles fraîches ?

La réponse est mise en cache au plus 30 secondes, un intervalle de scrape de 60 secondes est donc largement suffisant. Chaque scrape compte comme une requête au regard de la limite de votre offre.

Puis-je ne scraper qu'un seul site ?

Oui : ajoutez ?siteId= avec l'identifiant Relvato du site à l'URL, et la réponse ne couvre plus que ce site au lieu de tout votre compte.

Que se passe-t-il quand un moniteur n'a pas pu tourner ?

Il n'y a aucune série relvato_monitor_up pour lui. relvato_monitor_last_outcome avec outcome="not-run" vaut 1 à la place, pour pouvoir aussi alerter quand un pare-feu bloque Relvato ou que le site ne répond pas.

Cela fonctionne-t-il avec Grafana Cloud ou Datadog ?

Oui. Le scraping Prometheus propre à Grafana Cloud et l'intégration OpenMetrics de Datadog lisent la même URL et le même en-tête Authorization: Bearer — rien de spécifique à Relvato à installer d'un côté comme de l'autre.

Où trouver la liste complète des métriques et des labels ?

La section « Prometheus and Grafana » de la référence développeurs liste chaque métrique, chaque label et les règles d'alerte ci-dessus en entier.

Ai-je besoin de faire tourner Prometheus pour être alerté ?

Non. Relvato peut envoyer des alertes seul, directement vers PagerDuty, Slack et d'autres applications de chat, sans que vous ayez à faire tourner ni à maintenir Prometheus.

À lire aussi

D'autres façons de travailler avec Relvato

Mettez vos moniteurs sur les tableaux de bord que vous regardez déjà

Créez une clé API et ajoutez le job de scrape — les premières métriques apparaissent en moins d'une minute.