Cambios principales: - build.zig: root_source_file → root_module con b.createModule() - stdout: std.io.getStdOut() → std.fs.File.stdout().deprecatedWriter() - ArrayList: std.ArrayList → std.array_list.Managed - file.reader(): deprecatedReader() para compatibilidad - HTTP Client: client.open/send/wait → client.fetch() - sleep: std.time.sleep → std.Thread.sleep Código funciona correctamente con Zig 0.15.2. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
165 lines
4.3 KiB
Markdown
165 lines
4.3 KiB
Markdown
# 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)
|