Monitorización web con Prometheus
La monitorización web con Prometheus empieza extrayendo el endpoint de métricas de Relvato, o apuntando Grafana o el propio scraping de Prometheus de Grafana Cloud a la misma URL, y grafica y alerta sobre fallos de monitores, uptime, SSL y caducidad de dominio junto a todo lo que ya vigilas.
Funciona en todos los planes, también en Free, con cualquier clave de API de Relvato, incluso de solo lectura. La respuesta se actualiza como máximo cada 30 segundos, así que un intervalo de scrape de 60 segundos sobra.
Lista para hacer scraping en tres pasos
No hay que instalar ninguna app: Prometheus lee el endpoint de métricas como cualquier otro exporter.
Crea una clave de API
En Relvato, abre «API access» y crea una clave. Una clave de solo lectura basta: el endpoint de métricas solo lee.
Añade el job de scrape
Apunta Prometheus a /api/v1/metrics con la clave como token Bearer. Añade ?siteId= para extraer solo un sitio en vez de toda la cuenta.
Grafícalo y alerta sobre ello
Las series se comportan como las de cualquier otro exporter: construye paneles en Grafana, o alerta directamente desde Prometheus y 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 mantiene la clave fuera del archivo de configuración; usa credentials en su lugar para pegarla directamente. Cada scrape cuenta como una solicitud contra el límite de tu plan.
Qué expone el endpoint de métricas
GET /api/v1/metrics responde en el formato de texto de Prometheus (0.0.4): cada sitio y monitor de tu cuenta como gauges, en caché durante 30 segundos.
Cada serie lleva site y site_id; las series de monitores añaden monitor, monitor_id, monitor_key y group.
| Métrica | Qué significa |
|---|---|
relvato_monitor_up | 1 cuando la última ejecución de un monitor pasó, 0 cuando encontró un problema. No hay serie cuando la última ejecución no pudo correr: mira monitor_last_outcome en su lugar. |
relvato_monitor_last_outcome | 1 para el resultado de la última ejecución (outcome="ok", "issue" o "not-run"), para que también puedas alertar sobre «no pudo correr». |
relvato_monitor_last_run_timestamp_seconds / _duration_seconds | Cuándo fue la última ejecución y cuánto tardó, en segundos. |
relvato_uptime_up / relvato_uptime_response_time_seconds | Estado de uptime y tiempo de respuesta, por región de sondeo. |
relvato_heartbeat_up / relvato_port_up | Heartbeats y monitores de puerto. |
relvato_ssl_certificate_expiry_timestamp_seconds / relvato_domain_expiry_timestamp_seconds | Fechas de caducidad del certificado SSL y del dominio. |
relvato_site_ownership_proven | Si la propiedad del sitio está demostrada. |
relvato_runs_used / relvato_runs_limit | Ejecuciones usadas este mes frente al límite mensual de tu plan. |
Un scrape se ve así:
# 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 412También funciona con Grafana y Datadog
Añade la misma URL como fuente de datos de Prometheus en Grafana, o deja que el propio scraping de Prometheus de Grafana Cloud la recoja directamente: sin otra integración que instalar. La integración OpenMetrics de Datadog lee la misma URL y la misma cabecera Authorization: Bearer.
Alerta cuando un monitor encuentra un problema
Dos reglas para empezar: dispara cuando la última ejecución de un monitor encuentra un problema, y dispara otra vez antes de que caduque un certificado.
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"¿No usas Prometheus? Relvato puede abrir una incidencia en PagerDuty directamente, sin necesidad de scraping: Monitorización web con PagerDuty →
O publicar el problema directamente en un canal de Slack: Alertas de monitorización web en Slack →
Prometheus, explicado
¿Qué planes pueden hacer scraping del endpoint de métricas?
Todos los planes, también Free, con cualquier clave de API de Relvato, incluso de solo lectura. El endpoint de métricas solo lee, así que nunca necesita una clave de acceso completo.
¿Qué tan actualizados están los datos?
La respuesta se guarda en caché como máximo 30 segundos, así que un intervalo de scrape de 60 segundos sobra. Cada scrape cuenta como una solicitud contra el límite de tu plan.
¿Puedo hacer scraping de un solo sitio?
Sí: añade ?siteId= con el id de Relvato del sitio a la URL, y la respuesta cubrirá solo ese sitio en vez de toda tu cuenta.
¿Qué pasa cuando un monitor no pudo correr?
No hay serie relvato_monitor_up para él. relvato_monitor_last_outcome con outcome="not-run" vale 1 en su lugar, así que también puedes alertar cuando un firewall bloquea a Relvato o el sitio no responde.
¿Funciona con Grafana Cloud o Datadog?
Sí. El propio scraping de Prometheus de Grafana Cloud y la integración OpenMetrics de Datadog leen la misma URL y la misma cabecera Authorization: Bearer, sin nada específico de Relvato que instalar en ninguno de los dos.
¿Dónde está la lista completa de métricas y etiquetas?
La sección «Prometheus and Grafana» de la referencia para desarrolladores lista cada métrica, cada etiqueta y las reglas de alerta de arriba al completo.
¿Necesito tener Prometheus para recibir alertas?
No. Relvato puede enviar alertas por su cuenta, directamente a PagerDuty, Slack y otras apps de chat, sin que tengas que ejecutar ni mantener Prometheus.
Más formas de trabajar con Relvato
Lleva tus monitores a los paneles que ya vigilas
Crea una clave de API y añade el job de scrape: las primeras métricas aparecen en menos de un minuto.