Página de estado pública que monitorea los servicios que hospeda osm.lat (OpenStreetMap Latinoamérica). Permite ver qué servicios están operativos o con problemas y reportar incidentes mediante issues de GitHub.
Este proyecto está basado en Fettle, una página de estado open source impulsada por GitHub Actions, Issues y Pages.
La página se publica en GitHub Pages y el dominio está configurado en el archivo CNAME.
Para conocer el listado de servicios que ofrece osm.lat puedes visitar: Servicios OSM LatAm.
- Estado global del sistema: indica si todos los servicios están operativos, hay una interrupción parcial o una caída general.
- Lista de servicios: cada uno con su nombre, porcentaje de tiempo operativo en los últimos 90 días y una barra de colores por día (verde = bien, naranja = parcial, rojo = caído).
- Incidentes recientes: issues de GitHub con la etiqueta
incident, agrupados por mes, con estado (resuelto / en investigación) y fechas.
- Un workflow de GitHub Actions se ejecuta cada 15 minutos (configurable en
.github/workflows/health-check.yml). - Para cada servicio definido en
public/urls.cfgse hace una petición HTTP; se considera éxito si el código es 200, 202, 301, 302 o 307. - Cada resultado (fecha/hora, éxito/fallo, tiempo de respuesta) se guarda en
public/status/<servicio>_report.log. - Solo se conservan los últimos 90 días de datos por servicio (~8640 líneas por log).
- Si hay cambios, se hace commit y push automático con el mensaje
[Automated] Update Health Check Logs.
- Primera falla: se envía una alerta inmediata por Telegram (si está configurado).
- Problema persistente: tras 5 verificaciones consecutivas fallidas (~75 minutos), se crea automáticamente un issue en GitHub con etiquetas
incidentyautomated, y se notifica por Telegram. - Recuperación: cuando el servicio vuelve a responder, se envía notificación de recuperación por Telegram y se cierra el issue si existía.
La configuración de Telegram y los secrets se explica en:
- NOTIFICATIONS.md — funcionamiento y configuración de notificaciones.
- CONFIGURACION_SECRETS.md — cómo configurar los secrets en GitHub.
- El health check genera muchos commits. Para evitar que el repositorio crezca sin límite, un workflow de trim (
.github/workflows/trim-history.yml) se ejecuta cada domingo a las 03:00 UTC y opcionalmente de forma manual. - Ese workflow deja solo los últimos 500 commits (aprox. 5 días de historial) y hace force-push. El número de commits a conservar es configurable en el workflow y en
scripts/trim-history-last-n.sh.
Edita public/urls.cfg. Cada línea tiene el formato:
NombreDelServicio=https://url-del-servicio/
Ejemplo:
Website=https://osm.lat/
Pad=https://pad.osm.lat
Los nombres no pueden tener espacios; se usan para generar los archivos public/status/<NombreDelServicio>_report.log.
-
Telegram (opcional): crea un bot con @BotFather, obtén el token y el Chat ID, y añade en GitHub (Settings → Secrets and variables → Actions):
TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID
-
Issues automáticos: se usa el
GITHUB_TOKENque proporciona GitHub Actions; no hace falta configurar nada más para la creación y cierre de issues.
Detalle completo en NOTIFICATIONS.md y CONFIGURACION_SECRETS.md.
- En el repositorio: Settings → Pages.
- Origen: GitHub Actions (el workflow
.github/workflows/pages.ymlse dispara en cada push amainy publica la carpetaoutde Next.js).
En .github/workflows/health-check.yml modifica la línea cron:
schedule:
- cron: "0/15 * * * *" # cada 15 minutos (actual)Ejemplos: "0 * * * *" = cada hora; "0 0/6 * * *" = cada 6 horas.
- Ve a Issues.
- Crea un nuevo issue (puedes usar la plantilla "Problema en componente de OSM.lat").
- Añade la etiqueta
incidental issue para que aparezca en la sección de incidentes de la página.
| Parte | Detalle |
|---|---|
| Hosting | GitHub Pages (build con Next.js y export estático). |
| Monitoreo | Workflow cada 15 min; escribe en public/status/*.log y hace commit. |
| Estado | public/status/.service_states.json guarda fallos consecutivos e ID de issue por servicio. |
| Incidentes | Issues con label incident; la página los obtiene vía API de GitHub. |
| Datos en la UI | La página lee los logs desde raw.githubusercontent.com/OSMLatam/status/main/public/status/ y los issues desde la API del repo. |
Para adaptar tu fork (basado en Fettle):
- URLs de servicios: edita
public/urls.cfg. - URLs en el código: sustituye
OSMLatam/statusportu-usuario/tu-repoen:src/incidents/hooks/useIncidents.tsx(API de issues)src/services/hooks/useServices.tsx(URL de los logs)src/services/hooks/useSystemStatus.tsx(URL de los logs)
- Pages: en Settings → Pages, elige GitHub Actions como origen.
- Label: crea la etiqueta
incidenten tu repo para que los incidentes se muestren en la página.
Las contribuciones son bienvenidas: pull requests, reporte de bugs o sugerencias mediante issues.