# service-monitor - Monitor de Servicios en Zig > **Última actualización**: 2025-12-08 ## Descripción del Proyecto Monitor que verifica periódicamente que los servicios en nuestro servidor Hetzner (Simba) estén funcionando correctamente, con notificaciones si algo falla. **Lenguaje**: Zig 0.15.2 **Objetivo**: Herramienta de monitoreo simple y ligera, sin dependencias de servicios externos como UptimeRobot. ## Servicios a Monitorear ### Servidor Simba (188.245.244.244) | Servicio | URL/Puerto | Verificación | |----------|------------|--------------| | **Forgejo** | https://git.reugenio.com | HTTP 200 | | **Forgejo SSH** | git.reugenio.com:2222 | Conexión TCP | | **Simifactu API** | https://simifactu.com | HTTP 200 | | **Mundisofa** | https://mundisofa.com | HTTP 200 | | **Menzuri** | https://menzuri.com | HTTP 200 | ## Funcionalidades Planificadas ### Fase 1 - Básico - [ ] Verificar HTTP status de URLs - [ ] Verificar puertos TCP abiertos - [ ] Output en terminal (estado actual) ### Fase 2 - Monitoreo Continuo - [ ] Modo daemon (corre en background) - [ ] Intervalo configurable - [ ] Log de eventos ### Fase 3 - Notificaciones - [ ] Notificación desktop (libnotify) - [ ] Log a archivo - [ ] Opcional: webhook/email ## Stack Técnico - **Zig 0.13.0** - Lenguaje principal - **HTTP Client** - std.http - **TCP Sockets** - std.net - **Sin dependencias externas** - Solo stdlib de Zig ## Filosofía del Proyecto - Binario único, pequeño, portable - Puede correr en el servidor o en máquina local - Sin dependencias de servicios cloud externos - Consumo mínimo de recursos --- ## Equipo y Metodología ### Quiénes Somos - **Usuario**: Desarrollador independiente, proyectos comerciales propios - **Claude**: Asistente de programación (Claude Code) ### Normas de Trabajo Centralizadas **IMPORTANTE**: Todas las normas de trabajo están en: ``` /mnt/cello2/arno/re/recode/TEAM_STANDARDS/ ``` **Archivos clave a leer**: - `LAST_UPDATE.md` - **LEER PRIMERO** - Cambios recientes en normas - `NORMAS_TRABAJO_CONSENSUADAS.md` - Metodología fundamental - `QUICK_REFERENCE.md` - Cheat sheet rápido - `INFRASTRUCTURE/` - Documentación de servidores (IPs, puertos, servicios) ### Protocolo de Comunicación Entre Proyectos 1. **Al iniciar conversación**: Leer `TEAM_STANDARDS/LAST_UPDATE.md` 2. **Si modificas normas**: Actualizar `LAST_UPDATE.md` con fecha y cambios 3. **Commits**: Siempre a Forgejo (git.reugenio.com), nunca a GitHub ### Control de Versiones ```bash # Este proyecto git remote: git@git.reugenio.com:reugenio/service-monitor.git (pendiente crear) # Crear repo en Forgejo cuando esté listo el código inicial ``` ### Documentación del Sistema Local El ordenador de trabajo está documentado en: ``` /home/re/cello/claude/claude.md /home/re/cello/claude/docs/ ``` ### Documentación del Servidor Información detallada del servidor Simba: ``` /mnt/cello2/arno/re/recode/TEAM_STANDARDS/INFRASTRUCTURE/SERVIDOR_HETZNER.md ``` --- ## Estructura del Proyecto (Planificada) ``` service-monitor/ ├── CLAUDE.md # Este archivo ├── src/ │ ├── main.zig # Punto de entrada │ ├── checker.zig # Lógica de verificación │ ├── http.zig # Cliente HTTP │ ├── tcp.zig # Verificación TCP │ ├── config.zig # Configuración de servicios │ └── notify.zig # Sistema de notificaciones ├── build.zig # Sistema de build de Zig ├── services.json # Lista de servicios a monitorear (configurable) └── README.md # Documentación de uso ``` ## Comandos Útiles ```bash # Compilar zig build # Ejecutar verificación única zig build run # Modo daemon zig build run -- --daemon --interval 60 # Release para servidor zig build -Doptimize=ReleaseFast -Dtarget=x86_64-linux ``` ## Ejemplo de Uso (Planificado) ```bash # Verificar todos los servicios una vez $ service-monitor check ✅ git.reugenio.com - 200 OK (45ms) ✅ git.reugenio.com:2222 - TCP OK (12ms) ✅ simifactu.com - 200 OK (89ms) ✅ mundisofa.com - 200 OK (67ms) ✅ menzuri.com - 200 OK (72ms) # Modo watch (cada 60 segundos) $ service-monitor watch --interval 60 ``` --- ## Notas de Desarrollo *Esta sección se irá llenando conforme avance el proyecto* --- **Estado**: Proyecto nuevo, pendiente iniciar desarrollo (después de forgejo-cli)