Présentation de l'Agent Watchflare
Démon Go léger qui collecte les métriques système, l'inventaire de paquets et les stats de conteneurs. Tourne sous un utilisateur sans privilèges, gRPC/TLS en sortie uniquement.
L’agent est un démon Go léger installé sur chaque hôte que vous voulez surveiller. Il tourne sous un utilisateur système sans privilèges et ne communique qu’en sortie, sans ouvrir aucun port entrant sur l’hôte surveillé.
Ce qu’il fait
L’agent exécute ces boucles indépendamment :
| Boucle | Intervalle | Rôle |
|---|---|---|
| Heartbeat | 5 s | Envoie un ping de présence avec les adresses IP actuelles |
| Métriques | 30 s | Collecte les métriques système et les envoie au Hub |
| Inventaire des paquets | 60 s après le démarrage, puis tous les jours à 03:00 | Analyse les paquets installés, envoie le delta au Hub |
| Inventaire des services | 60 s après le démarrage, puis toutes les 15 min | Catalogue les unités systemd (Linux avec systemd uniquement) |
| Santé des services | 30 s | Signale l’état en direct des services systemd (Linux avec systemd uniquement) |
Ce qu’il collecte
| Catégorie | Métriques |
|---|---|
| CPU | Usage %, iowait, steal (VMs) |
| Mémoire | Utilisée, disponible, buffers, cached, swap |
| Disque | Total, utilisé, débit lecture/écriture |
| Réseau | Bande passante entrante et sortante |
| Température | Capteurs de température CPU et autres (stockage, gestion d’énergie, etc.) sur les hôtes physiques |
| Système | Uptime, charge moyenne (1/5/15 min), nombre de processus |
| Conteneurs | CPU, mémoire, réseau par conteneur (Docker/Podman, à activer) |
| Services | Inventaire des unités systemd et état en direct sur les hôtes Linux |
| Paquets | Paquets installés, versions, et détection des obsolètes parmi ~30 gestionnaires de paquets pris en charge |
L’agent s’adapte automatiquement à son environnement :
| Environnement | Omis |
|---|---|
| Conteneur d’application (Docker, Podman) | Disque, E/S disque, réseau, swap, température |
| Conteneur système (LXC) | Rien, surveillé comme un hôte complet |
| Machine virtuelle | Capteurs de température |
| Hôte physique | Rien, collecte complète |
Comment ça marche
WAL (Write-Ahead Log) : Les métriques sont ajoutées à un fichier local avant d’être envoyées. Si le Hub est injoignable, les métriques s’accumulent dans le WAL et sont rejouées dans l’ordre à la prochaine connexion réussie. Les métriques ne sont pas perdues pendant les coupures brèves. Par défaut, le WAL stocke jusqu’à 10 Mo de données, et une fois plein, les enregistrements les plus anciens sont jetés. Cette limite est ajustable via wal_max_size_mb dans agent.conf.
Sécurité : Chaque requête gRPC est signée avec HMAC-SHA256 (identifiant de l’agent + horodatage + payload). Le Hub refuse les requêtes hors d’une fenêtre d’horodatage de ±5 minutes. Toute la communication est en TLS 1.3, et l’agent épingle le certificat CA du Hub à l’enrôlement.
Empreinte minimale : L’agent tourne sous l’utilisateur système sans privilèges watchflare (Linux) ou sous l’utilisateur qui l’invoque (macOS via Homebrew). Il n’a pas de shell, un répertoire home non inscriptible (/var/empty), et un accès en écriture uniquement à son propre dossier de données.
Prérequis système
Linux
- systemd (Ubuntu 18.04+, Debian 10+, RHEL/CentOS 7+, Fedora 30+, Amazon Linux 2+, Arch Linux)
curlouwget- accès
sudopour l’installation
macOS
- macOS 11 (Big Sur) ou plus récent
- Intel ou Apple Silicon (M1/M2/M3/M4)
- Homebrew