monit config for docker containers
| Home |
This monit and scripts were used in Ubuntu 20.04
/etc/monit/monitrc
set mailserver "email-smtp.us-east-1.amazonaws.com" port 587
username "XX"
password "XXY"
using tlsv12
set mail-format {
from: DEV Monit <admin@example.com>
subject: monit alert -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Your faithful employee,
Monit
}
set alert admin1@example.com
set alert admin2@example.com
set httpd port 2812 and
use address localhost # only accept connection from localhost (drop if you use M/Monit)
allow localhost # allow localhost to connect to the server and
allow admin:pass123 # require user 'admin' with password 'pass123'
check system $HOST
if loadavg (1min) per core > 2 for 5 cycles then alert
if loadavg (5min) per core > 1.5 for 10 cycles then alert
if cpu usage > 95% for 10 cycles then alert
if memory usage > 75% then alert
if swap usage > 40% then alert
include /etc/monit/conf.d/*
include /etc/monit/conf-enabled/*
/etc/monit/conf.d/magento
# Docker Compose associates containers with the specific
# docker-compose.yml file and its location. If you run docker-compose
# from a different directory (even with the same file content), Docker
# might not recognize the existing containers because it considers
# them associated with the docker-compose.yml file from the original
# directory.
# Monitor Magento
CHECK PROGRAM test_magento WITH PATH /etc/monit/scripts/check_magento.sh
start program = "/usr/bin/docker-compose -f /home/ubuntu/HCF/scripts/docker_scripts/bitnami_magento243/docker-compose.yml start"
stop program = "/usr/bin/docker-compose -f /home/ubuntu/HCF/scripts/docker_scripts/bitnami_magento243/docker-compose.yml stop"
IF status != 0 FOR 2 CYCLES THEN RESTART
IF 4 RESTARTS WITHIN 10 CYCLES THEN UNMONITOR
# bitnami_magento243_mariadb_1
CHECK PROGRAM test_mysql WITH PATH /etc/monit/scripts/check_mysql.sh
start program = "/usr/bin/docker-compose -f /home/ubuntu/HCF/scripts/docker_scripts/bitnami_magento243/docker-compose.yml start"
## stop program = "/usr/bin/docker-compose -f /home/ubuntu/HCF/scripts/docker_scripts/bitnami_magento243/docker-compose.yml stop"
IF status != 0 FOR 2 CYCLES THEN RESTART
IF 4 RESTARTS WITHIN 10 CYCLES THEN UNMONITOR
# bitnami_magento243_elasticsearch_1
# On elasticsearch monit config, commented out the stop program which is optional. We don't want to stop magento and mysql too, and then restart everything.
# For example, to avoid manual restart of jupyter lab inside the magento instance.
CHECK PROGRAM test_elasticsearch WITH PATH /etc/monit/scripts/check_elasticsearch.sh
start program = "/usr/bin/docker-compose -f /home/ubuntu/HCF/scripts/docker_scripts/bitnami_magento243/docker-compose.yml start"
## stop program = "/usr/bin/docker-compose -f /home/ubuntu/HCF/scripts/docker_scripts/bitnami_magento243/docker-compose.yml stop"
IF status != 0 FOR 2 CYCLES THEN RESTART
IF 4 RESTARTS WITHIN 10 CYCLES THEN UNMONITOR
/etc/monit/scripts/checkeliasticsearch.sh
#!/bin/bash container_name="bitnami_magento243_elasticsearch_1" # Check if the container is running if [ "$(docker container inspect -f '{{.State.Status}}' $container_name)" = "running" ]; then exit 0 else # Container not running, print an error and exit with code 1 echo "Error: $container_name not running." >&2 exit 1 fi
/etc/monit/scripts/checkmagento.sh
#!/bin/bash container_name="bitnami_magento243_magento_1" # Check if the container is running if [ "$(docker container inspect -f '{{.State.Status}}' $container_name)" = "running" ]; then exit 0 else # Container not running, print an error and exit with code 1 echo "Error: $container_name not running." >&2 exit 1 fi
/etc/monit/scripts/checkmysql.sh
#!/bin/bash container_name="bitnami_magento243_mariadb_1" # Check if the container is running if [ "$(docker container inspect -f '{{.State.Status}}' $container_name)" = "running" ]; then exit 0 else # Container not running, print an error and exit with code 1 echo "Error: $container_name not running." >&2 exit 1 fi