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.
Consultez le contrat configuration et commandes pour les priorités, les valeurs par défaut, les sélecteurs et les codes de sortie.
Réglages des commandes directes
Chaque commande lit sa propre section. Une option explicite en ligne de commande l’emporte sur le fichier. Les listes de règles et de ressources passées au lancement remplacent la liste correspondante. Une lecture explicite avec monit --rsc écarte les actions configurées pour cette invocation. La simulation reste accessible avec --dry-run.
stats:
rsc: [cpu_percent, mem_usage]
output: json
serve:
interval: 60
status_token_file: /run/secrets/status

