# Fonctionnement

Argus est une chaîne de traitement par lots, pas un service. Une tâche cron exécute un collecteur pour chaque source, les collecteurs ajoutent des comptes à des fichiers texte plats, et une seconde tâche dessine les graphiques avec gnuplot. Aucun processus d'Argus ne reste actif entre deux nuits.

## Collecte

Les collecteurs sont des scripts séparés, un par source, si bien que la défaillance de l'un n'arrête pas les autres :

- `collect-ssh.sh` lit `auth.log` ou journald et compte les attaques SSH ;
- `collect-fail2ban.sh` lit les bannissements de chaque jail Fail2Ban, lorsque Fail2Ban est installé ;
- `collect-crowdsec.sh` lit les alertes de chaque scénario CrowdSec, lorsque CrowdSec est installé.

`/etc/cron.d/argus` lance la collecte à 00:05. Une adresse source devient une attaque lorsqu'elle atteint `ARGUS_SSH_THRESHOLD` tentatives échouées en une journée, 5 par défaut. Le compte est conservé ; l'adresse ne l'est pas.

## Fichiers plats

Les collecteurs écrivent `$ARGUS_DATA_DIR/<year>/<series>_<year>.txt`, par défaut sous `/srv/argus/`. Chaque ligne contient un compte et une tranche horaire, `<count> <YYYY-MM-DDTHH>`. Il n'y a ni base de données ni index à reconstruire : un fichier peut être lu, copié ou comparé avec un outil texte.

Une série est le nom du fichier sans l'année, donc `ssh_direct_2026.txt` est la série `ssh_direct`. Un fichier par source et par année garde l'historique lisible après un changement de collecteur.

## Rendu

La tâche des graphiques démarre à 00:15 et appelle `chart-daily.sh`, qui reconstruit les totaux quotidiens à partir des fichiers plats et dessine l'image de l'année. Les vues `period` et `hourly` sont dessinées à la demande avec `argus-chart`, à partir des mêmes fichiers. Le dessin est fait par gnuplot, et chaque image arrive dans `<data directory>/<year>/images/`.

À 00:20, `argus-doctor.sh` vérifie que chaque collecteur s'est exécuté la veille. Chaque collecteur écrit une ligne de battement de vie chaque jour, même lorsqu'il a compté zéro événement, afin qu'une journée calme et un collecteur arrêté puissent être distingués.

## Aucun démon

Argus n'expose aucun service ni interface web, et il ne maintient aucun processus actif. Un serveur de 1 Go de RAM suffit, et une nuit sans collecte laisse les fichiers précédents intacts. Les graphiques sont lus là où ils sont copiés, sur le poste de bureau, avec n'importe quelle visionneuse d'images.

Les scripts, les réglages et l'arborescence des fichiers sont décrits dans le dépôt : [README](https://github.com/RonanDavalan/Argus/blob/main/README.md), [guide d'installation](https://github.com/RonanDavalan/Argus/blob/main/docs/install.md).

