Collecter en continu, exposer un état JSON et fournir des métriques Prometheus.
1. Démarrer l’agent
Après installation, lancez dans un terminal :
monit-docker serve --interval 30Le premier cycle commence immédiatement. Chaque cycle est suivi de 30 secondes d’attente : ce n’est pas une fréquence fixe de début de cycle. Par défaut, l’agent écoute sur 127.0.0.1:9808. Sans règle, il observe et aucun fichier d’état n’est requis.
2. Vérifier les endpoints
Depuis un second terminal :
curl -fsS http://127.0.0.1:9808/healthz
curl -i http://127.0.0.1:9808/readyz
curl -fsS http://127.0.0.1:9808/v1/status
curl -fsS http://127.0.0.1:9808/metrics| Endpoint | Signification |
|---|---|
| /healthz | HTTP 200 : processus vivant, même si Docker échoue. |
| /readyz | HTTP 200 si prêt, 503 sinon. |
| /v1/status | Dernier instantané, avec son champ ready ; HTTP 200 peut contenir ready=false. |
| /metrics | Format Prometheus. HTTP 200 ne garantit pas une collecte valide. |
3. Variante Docker persistante
docker run -d --name monit-docker-agent --restart unless-stopped \
-p 127.0.0.1:9808:9808 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
decryptus/monit-docker:0.0.64 \
monit-docker serve --bind 0.0.0.0 --interval 30
docker logs monit-docker-agentArrêtez l’agent du terminal avant de réutiliser le port 9808. Le bind 0.0.0.0 est interne au conteneur ; le port publié reste sur la boucle locale de l’hôte. Pour arrêter cette variante : docker stop monit-docker-agent.
4. Ajouter une règle
monit-docker --name 'web*' serve --interval 30 \
--state-file "$HOME/.local/state/monit-docker/web.json" \
--cooldown 600 --trigger-after 300 --max-gap 120 \
--dry-run --cmd-if 'mem_percent > 90 ? restart'Ce premier essai n’agit pas. Après revue, retirez --dry-run pour activer les actions et l’accumulation persistante des observations. Le fichier d’état devient obligatoire dès qu’il y a des règles, même en dry-run. Avec Docker, montez tout son répertoire, verrou compris.
Le délai max-gap doit dépasser l’intervalle de collecte. Une commande inconditionnelle --cmd n’attend pas trigger-after.
5. Exploiter l’agent
L’API de lecture n’intègre ni authentification ni TLS. Gardez-la sur localhost ou un réseau privé. Pour un navigateur, installez le proxy et l’interface HTTPS.
Par défaut, un instantané expire après max(90, 3 × interval) secondes. Une collecte échouée ou périmée masque les métriques des conteneurs. L’historique appartient à Prometheus ; les instantanés de l’agent sont en mémoire.
Ctrl+C ou SIGTERM demande l’arrêt, mais attend la fin du cycle courant. Le processus ne garantit pas un délai total maximal d’arrêt.