This guide uses Docker Compose to run Monit for process monitoring.
For Docker installation, see Docker.
Monit is designed to run directly on the host system to monitor local processes. Running Monit in Docker limits its ability to monitor host processes. Consider installing Monit directly on your host:
# Debian/Ubuntu
sudo apt install monit
# RHEL/CentOS
sudo dnf install monit
If you still want to run Monit in Docker (e.g., for container monitoring), use the configuration below.
mkdir -p /opt/monit/{config,log}
cd /opt/monit
Create config/monitrc:
set daemon 60
set logfile /var/log/monit.log
set httpd port 2812
allow admin:admin123
# Example: Monitor a process
# check process nginx with pidfile /var/run/nginx.pid
# start program = "/etc/init.d/nginx start"
# stop program = "/etc/init.d/nginx stop"
Create docker-compose.yml:
services:
monit:
image: prooph/monit:latest
container_name: monit
hostname: monit
ports:
- "2812:2812"
volumes:
- ./config/monitrc:/etc/monit/monitrc:ro
- ./log:/var/log/monit:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- MONIT_HTTP_PORT=2812
- MONIT_HTTP_USER=admin
- MONIT_HTTP_PASSWORD=admin123
privileged: true
restart: unless-stopped
docker compose up -d
Check container status:
docker compose ps
View logs:
docker compose logs -f monit
Access web UI at http://SERVER_IP:2812 with:
adminadmin123docker compose exec monit monit status
docker compose restart monit
docker compose down
Add to config/monitrc:
check process dockerd with pidfile /var/run/docker.pid
start program = "/etc/init.d/docker start"
stop program = "/etc/init.d/docker stop"
if failed unixsocket /var/run/docker.sock then alert
Running containers in production? We help with:
Need help? office@linux-server-admin.com or Contact Us