# Funcionamiento

Argus es una cadena de procesamiento por lotes, no un servicio. Una tarea cron ejecuta un recolector para cada fuente, los recolectores añaden recuentos a archivos de texto plano y una segunda tarea dibuja los gráficos con gnuplot. Ningún proceso de Argus queda en ejecución entre dos noches.

## Recogida

Los recolectores son scripts separados, uno por fuente, de modo que el fallo de uno no detiene a los demás:

- `collect-ssh.sh` lee `auth.log` o journald y cuenta los ataques SSH;
- `collect-fail2ban.sh` lee los bloqueos de cada jail de Fail2Ban, cuando Fail2Ban está instalado;
- `collect-crowdsec.sh` lee las alertas de cada escenario de CrowdSec, cuando CrowdSec está instalado.

`/etc/cron.d/argus` inicia la recogida a las 00:05. Una dirección de origen se convierte en un ataque cuando alcanza `ARGUS_SSH_THRESHOLD` intentos fallidos en un día, 5 por defecto. El recuento se conserva; la dirección no.

## Archivos de texto plano

Los recolectores escriben `$ARGUS_DATA_DIR/<year>/<series>_<year>.txt`, por defecto bajo `/srv/argus/`. Cada línea contiene un recuento y una franja horaria, `<count> <YYYY-MM-DDTHH>`. No hay base de datos ni índice que reconstruir: un archivo puede leerse, copiarse o compararse con una herramienta de texto.

Una serie es el nombre del archivo sin el año, así que `ssh_direct_2026.txt` es la serie `ssh_direct`. Un archivo por fuente y por año mantiene el historial legible después de que cambie un recolector.

## Renderizado

La tarea de los gráficos empieza a las 00:15 y llama a `chart-daily.sh`, que reconstruye los totales diarios a partir de los archivos de texto plano y dibuja la imagen del año. Las vistas `period` y `hourly` se dibujan a petición con `argus-chart`, a partir de los mismos archivos. El dibujo lo hace gnuplot, y cada imagen llega a `<data directory>/<year>/images/`.

A las 00:20, `argus-doctor.sh` comprueba que cada recolector se ejecutó el día anterior. Cada recolector escribe una línea de latido cada día, incluso cuando ha contado cero eventos, para que un día tranquilo y un recolector detenido puedan distinguirse.

## Ningún demonio

Argus no expone ningún servicio ni interfaz web, y no mantiene ningún proceso vivo. Basta un servidor con 1 GB de RAM, y una noche sin recogida deja intactos los archivos anteriores. Los gráficos se leen donde se copian, en el equipo de escritorio, con cualquier visor de imágenes.

Los scripts, los ajustes y la estructura de archivos se describen en el repositorio: [README](https://github.com/RonanDavalan/Argus/blob/main/README.md), [guía de instalación](https://github.com/RonanDavalan/Argus/blob/main/docs/install.md).

