Actualizar CLAUDE.md - proyecto completado v1.2
- Estado actualizado a COMPLETO v1.2 - Estructura real del proyecto (8 archivos src/) - Comandos con path completo a Zig 0.15.2 - Ecosistema Zig documentado (zcatui, zsqlite, zpdf) - Notas tecnicas: migracion Zig 0.15, SMTP STARTTLS - Historial de desarrollo con commits clave - Mejoras futuras pendientes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
dbcf8c696b
commit
dfc75be016
1 changed files with 209 additions and 126 deletions
335
CLAUDE.md
335
CLAUDE.md
|
|
@ -1,165 +1,248 @@
|
|||
# service-monitor - Monitor de Servicios en Zig
|
||||
|
||||
> **Última actualización**: 2025-12-08
|
||||
> **Ultima actualizacion**: 2025-12-08
|
||||
> **Lenguaje**: Zig 0.15.2
|
||||
> **Estado**: PROYECTO COMPLETADO v1.2
|
||||
> **Repositorio**: git@git.reugenio.com:reugenio/service-monitor.git
|
||||
|
||||
## Descripción del Proyecto
|
||||
## Descripcion del Proyecto
|
||||
|
||||
Monitor que verifica periódicamente que los servicios en nuestro servidor Hetzner (Simba) estén funcionando correctamente, con notificaciones si algo falla.
|
||||
Monitor que verifica periodicamente que los servicios en nuestro servidor Hetzner (Simba) esten 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
|
||||
**Funcionalidades implementadas**:
|
||||
- Verificacion HTTP/HTTPS con tiempos de respuesta
|
||||
- Verificacion TCP con resolucion DNS
|
||||
- Modo watch (loop continuo con intervalo configurable)
|
||||
- Modo daemon (background con fork() + setsid())
|
||||
- Log a archivo
|
||||
- Configuracion externa (CSV)
|
||||
- Notificaciones desktop (notify-send)
|
||||
- Notificaciones email (SMTP con STARTTLS via curl)
|
||||
- Notificaciones Telegram (Bot API via curl)
|
||||
|
||||
---
|
||||
|
||||
## Equipo y Metodología
|
||||
## Estructura del Proyecto
|
||||
|
||||
### Quiénes Somos
|
||||
- **Usuario**: Desarrollador independiente, proyectos comerciales propios
|
||||
- **Claude**: Asistente de programación (Claude Code)
|
||||
```
|
||||
service-monitor/
|
||||
├── CLAUDE.md # Este archivo - especificacion y continuidad
|
||||
├── build.zig # Sistema de build Zig
|
||||
├── services.conf # Configuracion activa
|
||||
├── services.conf.example # Ejemplo documentado
|
||||
├── service-monitor # Binario compilado
|
||||
├── service-monitor.log # Log de ejecucion
|
||||
├── service-monitor.pid # PID en modo daemon
|
||||
│
|
||||
├── src/
|
||||
│ ├── main.zig # Entry point + CLI + logica principal (317 lineas)
|
||||
│ ├── http.zig # Cliente HTTP/HTTPS (77 lineas)
|
||||
│ ├── tcp.zig # Verificacion TCP (68 lineas)
|
||||
│ ├── config.zig # Parser de configuracion (233 lineas)
|
||||
│ ├── notify.zig # Notificaciones desktop (77 lineas)
|
||||
│ ├── daemon.zig # Daemonizacion (101 lineas)
|
||||
│ ├── smtp.zig # Cliente SMTP (260 lineas)
|
||||
│ └── telegram.zig # Cliente Telegram (107 lineas)
|
||||
│
|
||||
└── docs/
|
||||
├── PROYECTO_COMPLETO.md # Documentacion tecnica completa
|
||||
└── DIARIO_DESARROLLO.md # Historial de desarrollo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Comandos Utiles
|
||||
|
||||
```bash
|
||||
# Zig path
|
||||
ZIG=/mnt/cello2/arno/re/recode/zig/zig-0.15.2/zig-x86_64-linux-0.15.2/zig
|
||||
|
||||
# Compilar
|
||||
$ZIG build
|
||||
|
||||
# Verificar una vez
|
||||
./service-monitor
|
||||
|
||||
# Modo watch (cada 60 segundos)
|
||||
./service-monitor --watch
|
||||
|
||||
# Modo watch cada 30 segundos
|
||||
./service-monitor -w -i 30
|
||||
|
||||
# Con log a archivo
|
||||
./service-monitor -w -l
|
||||
|
||||
# Con notificaciones desktop
|
||||
./service-monitor -w -n
|
||||
|
||||
# Daemon en background
|
||||
./service-monitor -w -d
|
||||
|
||||
# Todo junto
|
||||
./service-monitor -w -i 60 -d -l -n
|
||||
|
||||
# Config personalizado
|
||||
./service-monitor -c /ruta/config.conf
|
||||
|
||||
# Ayuda
|
||||
./service-monitor --help
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Servicios Monitoreados (Servidor Simba)
|
||||
|
||||
| Servicio | Tipo | Endpoint | Puerto |
|
||||
|----------|------|----------|--------|
|
||||
| Forgejo HTTP | HTTPS | git.reugenio.com | 443 |
|
||||
| Forgejo SSH | TCP | git.reugenio.com | 2222 |
|
||||
| Simifactu | HTTPS | simifactu.com | 443 |
|
||||
| Mundisofa | HTTPS | mundisofa.com | 443 |
|
||||
| Menzuri | HTTPS | menzuri.com | 443 |
|
||||
|
||||
---
|
||||
|
||||
## Archivo de Configuracion
|
||||
|
||||
Formato CSV simple en `services.conf`:
|
||||
|
||||
```
|
||||
# Servicios HTTP
|
||||
http,Forgejo (HTTP),https://git.reugenio.com
|
||||
http,Simifactu API,https://simifactu.com
|
||||
http,Mundisofa,https://mundisofa.com
|
||||
http,Menzuri,https://menzuri.com
|
||||
|
||||
# Servicios TCP
|
||||
tcp,Forgejo (SSH),git.reugenio.com,2222
|
||||
|
||||
# Telegram
|
||||
telegram,BOT_TOKEN,CHAT_ID
|
||||
|
||||
# Email
|
||||
email,destinatario@email.com
|
||||
email_smtp,smtp.servidor.com,587,usuario,password,from@email.com
|
||||
```
|
||||
|
||||
**Credenciales completas**: `TEAM_STANDARDS/INFRASTRUCTURE/NOTIFICACIONES.md`
|
||||
|
||||
---
|
||||
|
||||
## Equipo y Metodologia
|
||||
|
||||
### Normas de Trabajo Centralizadas
|
||||
|
||||
**IMPORTANTE**: Todas las normas de trabajo están en:
|
||||
**IMPORTANTE**: Todas las normas de trabajo estan 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
|
||||
- `NORMAS_TRABAJO_CONSENSUADAS.md` - Metodologia fundamental
|
||||
- `QUICK_REFERENCE.md` - Cheat sheet rapido
|
||||
- `INFRASTRUCTURE/` - Documentacion de servidores (IPs, puertos, servicios)
|
||||
|
||||
### Control de Versiones
|
||||
|
||||
```bash
|
||||
# Este proyecto
|
||||
git remote: git@git.reugenio.com:reugenio/service-monitor.git (pendiente crear)
|
||||
# Remote
|
||||
git remote: git@git.reugenio.com:reugenio/service-monitor.git
|
||||
|
||||
# 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
|
||||
# Branches
|
||||
main # Codigo estable
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Estructura del Proyecto (Planificada)
|
||||
## Ecosistema Zig - Proyectos Relacionados
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
Este proyecto forma parte del ecosistema Zig desarrollado en 2025:
|
||||
|
||||
## Comandos Útiles
|
||||
| Proyecto | Descripcion | Estado | Repo |
|
||||
|----------|-------------|--------|------|
|
||||
| **service-monitor** | Monitor de servicios (este) | COMPLETO v1.2 | git.reugenio.com/reugenio/service-monitor |
|
||||
| **zcatui** | TUI library (ratatui-style) | COMPLETO v1.0 | git.reugenio.com/reugenio/zcatui |
|
||||
| **zsqlite** | SQLite wrapper | COMPLETO v0.1 | git.reugenio.com/reugenio/zsqlite |
|
||||
| **zpdf** | PDF generator | COMPLETO v0.1 | git.reugenio.com/reugenio/zpdf |
|
||||
|
||||
### Descripcion de cada proyecto:
|
||||
|
||||
- **zcatui**: Libreria TUI para Zig inspirada en ratatui (Rust). 13 widgets implementados, 103+ tests.
|
||||
- **zsqlite**: Wrapper SQLite que compila sqlite3.c directamente en el binario. API idiomatica Zig.
|
||||
- **zpdf**: Generador PDF puro Zig. Texto, graficos, 14 fuentes Type1, PDF 1.4.
|
||||
|
||||
---
|
||||
|
||||
## Notas Tecnicas
|
||||
|
||||
### Migracion a Zig 0.15.2
|
||||
|
||||
La migracion a Zig 0.15.2 requirio cambios importantes:
|
||||
|
||||
| Cambio | Antes (0.13) | Despues (0.15) |
|
||||
|--------|--------------|----------------|
|
||||
| Build.zig | `root_source_file` | `root_module` con `b.createModule()` |
|
||||
| stdout | `std.io.getStdOut().writer()` | `std.fs.File.stdout().deprecatedWriter()` |
|
||||
| ArrayList | `std.ArrayList(T).init(alloc)` | `std.array_list.Managed(T).init(alloc)` |
|
||||
| file.reader() | sin args | `deprecatedReader()` |
|
||||
| HTTP Client | `client.open()` + `send()` + `wait()` | `client.fetch()` |
|
||||
| sleep | `std.time.sleep()` | `std.Thread.sleep()` |
|
||||
|
||||
### SMTP con STARTTLS
|
||||
|
||||
Se usa curl como subprocess para SMTP (mas fiable que TLS nativo):
|
||||
|
||||
```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
|
||||
echo -e "From: ...\r\nTo: ...\r\nSubject: ...\r\n\r\nBody" | \
|
||||
curl -s --url "smtp://smtp.mailbox.org:587" --ssl-reqd \
|
||||
-u "usuario:password" \
|
||||
--mail-from "<from@email.com>" \
|
||||
--mail-rcpt "<to@email.com>" -T -
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notas de Desarrollo
|
||||
## Historial de Desarrollo
|
||||
|
||||
*Esta sección se irá llenando conforme avance el proyecto*
|
||||
| Fecha | Version | Cambio |
|
||||
|-------|---------|--------|
|
||||
| 2025-12-08 | v1.2 | Migracion Zig 0.15.2 + SMTP STARTTLS via curl |
|
||||
| 2025-12-07 | v1.1 | Telegram + Email + Daemon mode |
|
||||
| 2025-12-06 | v1.0 | HTTP/TCP check + watch mode + log + notify |
|
||||
|
||||
### Commits clave:
|
||||
|
||||
| Hash | Descripcion |
|
||||
|------|-------------|
|
||||
| e2e19da | Fase 1: Monitor basico HTTP/TCP |
|
||||
| 3946f83 | Fase 2: Modo watch + CLI + timestamps |
|
||||
| dfcfd31 | Log a archivo |
|
||||
| 5a17d74 | Fase 3: Notificaciones desktop |
|
||||
| 655dcb8 | Daemon mode + config externo |
|
||||
| a011d9e | SMTP y Telegram |
|
||||
| f31ce95 | Migracion a Zig 0.15.2 |
|
||||
| 4a9d0e6 | SMTP con STARTTLS via curl |
|
||||
|
||||
---
|
||||
|
||||
**Estado**: Proyecto nuevo, pendiente iniciar desarrollo (después de forgejo-cli)
|
||||
## Pendiente (Mejoras futuras)
|
||||
|
||||
- [ ] Notificacion de recuperacion (servicio vuelve a funcionar)
|
||||
- [ ] Rate limiting de notificaciones (evitar spam)
|
||||
- [ ] Metricas/estadisticas de uptime
|
||||
- [ ] Web dashboard (usando zcatui o similar)
|
||||
|
||||
---
|
||||
|
||||
## Referencias
|
||||
|
||||
- Documentacion tecnica completa: `docs/PROYECTO_COMPLETO.md`
|
||||
- Guia Zig 0.15: `TEAM_STANDARDS/INFRASTRUCTURE/ZIG_0.15_GUIA.md`
|
||||
- Credenciales: `TEAM_STANDARDS/INFRASTRUCTURE/NOTIFICACIONES.md`
|
||||
- Servidor Simba: `TEAM_STANDARDS/INFRASTRUCTURE/SERVIDOR_HETZNER.md`
|
||||
|
||||
---
|
||||
|
||||
**service-monitor - Monitor de Servicios Zig**
|
||||
*Proyecto completado 2025-12-08*
|
||||
|
|
|
|||
Loading…
Reference in a new issue