monit-docker

MONIT-DOCKER / v0.0.64

Configuration et règles

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 json

check-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.