Nommer les connexions Docker, sélectionner les conteneurs et réutiliser des règles lisibles.
1. Créer un fichier YAML
Enregistrez ceci dans monit-docker.yml. Remplacez le motif web* par celui de vos conteneurs.
clients:
local:
config:
base_url: unix:///var/run/docker.sock
ctn-groups:
web:
match:
- 'name:web*'
conditions:
memory_high:
expr:
- mem_percent > 90
commands:
graceful_restart:
exec:
- restart:
kwargs:
timeout: 10
2. Valider sans Docker
monit-docker -c ./monit-docker.yml --client local --ctn-group web \
check-config --cmd-if '@memory_high ? @graceful_restart' --output jsoncheck-config vérifie la structure et les références sans connexion Docker ni action. Il exige un fichier ou une configuration inline non vide ; un fichier contenant {} est une configuration minimale valide. Un YAML complètement vide ne l’est pas.
3. Utiliser les alias
monit-docker -c ./monit-docker.yml --client local --ctn-group web cron \
--state-file "$HOME/.local/state/monit-docker/web.json" \
--cooldown 300 --dry-run \
--cmd-if '@memory_high ? @graceful_restart'
Comprendre une condition
mem_percent > 90 ? restart associe une condition à une action. Les expressions d’un alias sont combinées avec ET. Plusieurs options --cmd-if peuvent chacune déclencher leur séquence : évitez des règles qui se contredisent.
mem_usage est une quantité en octets et accepte des seuils comme 100MiB. cpu_percent peut dépasser 100 sur plusieurs cœurs. monit réalise un contrôle simple sans cooldown persistant ; choisissez cron ou serve pour l’état persistant.
Chemins et variables
Le chemin par défaut est /etc/monit-docker/monit-docker.yml. Choisissez-le avec -c ou MONIT_DOCKER_CONFFILE. MONIT_DOCKER_CONFIG fournit du YAML inline lorsque le fichier n’existe pas ; un fichier existant est prioritaire.
MONIT_DOCKER_LOGFILE et MONIT_DOCKER_RUNTIMEDIR contrôlent les chemins de journal et d’exécution. Le répertoire parent du journal doit exister. Le fichier d’état se choisit séparément avec --state-file.
Les modèles Mako de configuration sont du code de confiance : ne chargez pas de configuration provenant d’une source inconnue.