v1.3.3Version stable

Version stable v1.3.3

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.

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