# Graphiques

`argus-chart` dessine le graphique d'une fenêtre que vous choisissez : un jour, une semaine ISO, un mois, un trimestre, une année ou une plage. Il a trois vues, `daily`, `period` et `hourly`, et s'exécute sur le serveur, là où sont les fichiers de données. Chaque commande écrit un PNG dans `/srv/argus/<year>/images/`.

## Les trois vues

- `argus-chart daily [YEAR]` dessine l'historique d'une année, un point par jour, l'année en cours par défaut.
- `argus-chart period [window]` compte chaque série sur une fenêtre, une ligne par série.
- `argus-chart hourly [window]` compte chaque série à chaque heure de la journée, de 00 à 23, additionné sur une fenêtre.

`period` et `hourly` acceptent les mêmes fenêtres : `--day YYYY-MM-DD`, `--week YYYY-Www` pour une semaine ISO du lundi au dimanche, `--month YYYY-MM`, `--quarter YYYY-Qn`, `--year YYYY`, ou `--from YYYY-MM-DD --to YYYY-MM-DD`. Sans fenêtre, ils utilisent l'année en cours. Une fenêtre qui couvre deux années lit les fichiers des deux.

## Trois commandes

```bash
argus-chart period --day 2026-10-30
argus-chart period --month 2026-10 --split week
argus-chart hourly --week 2026-W44
```


La première dessine un jour, avec un point par heure. La seconde dessine une image par semaine ISO d'octobre. La troisième dessine 24 positions par série pour la semaine, ce qui montre les heures auxquelles vous êtes attaqué, et non les jours.

Un utilisateur ordinaire ne peut pas écrire dans `/srv/argus/` ; ajoutez `--out DIR` pour écrire dans un répertoire personnel. Lorsqu'une fenêtre contient au plus 31 points, la valeur est imprimée à côté de chaque point.

## L'heure d'observation, pas l'heure de l'attaque

Chaque tranche porte l'horloge locale du serveur, écrite par le collecteur au moment où le journal a enregistré la tentative. Cet horodatage peut être postérieur au moment où la tentative a commencé ; le titre du graphique indique « local server time » pour que le lecteur ne la prenne pas pour le début de l'attaque. Le changement d'heure d'été décale un jour d'une heure, un effet qui s'estompe sur une semaine complète.

## Les séries sont superposées, jamais additionnées

Chaque ligne de l'image est une série : `ssh_direct` pour SSH, `ip_ban_<jail>` pour chaque jail Fail2Ban, `ip_ban_<scenario>` pour chaque scénario CrowdSec. Son nom est le nom du fichier sans l'année, donc `ssh_direct_2026.txt` appartient à `ssh_direct`.

Argus n'invente pas un score à partir d'outils différents. Chaque série garde la même couleur d'une année à l'autre, définie avec `ARGUS_COULEUR_<series>` ou tirée d'un hachage du nom.

```bash
argus-chart period --week 2026-W44 --list-series
argus-chart period --week 2026-W44 --series ssh_direct
argus-chart hourly --month 2026-10 --series ssh_direct,ip_ban_sshd --out ~/argus-out
```


## Lire les nombres au lieu de l'image

`--print-data` donne les nombres au lieu de l'image, sous forme de tableau séparé par des tabulations sur la sortie standard :

```bash
argus-chart period --week 2026-W44 --print-data
argus-chart hourly --day 2026-10-30 --print-data
```


## Les anciennes données quotidiennes dans la vue horaire

Une ligne d'un fichier de données se lit `<count> <date>T<hour>`, par exemple `492 2026-10-30T14`. Les fichiers plus anciens, écrits lorsque la collecte était encore quotidienne, contiennent une ligne par jour à l'heure 00. Une telle série ne porte aucune heure exploitable, si bien que la vue horaire l'exclut et la nomme dans le titre du graphique plutôt que d'empiler une seule barre à minuit. `period` et `daily` la dessinent encore comme points quotidiens.

Les fenêtres, le découpage, les options et la règle `T00` sont détaillés dans [docs/charts.md](https://github.com/RonanDavalan/Argus/blob/main/docs/charts.md).

