Die Aufzeichnung von Servermetriken mit Tools wie Munin ist das eine, aber wie kann ein kleiner Serveradministrator seine Dienste wie Webserver oder Datenbank einfach überwachen, bei Bedarf automatisiert neu starten und ggf. auch Neustarts via Weboberfläche auslösen? Genau das bietet das Tools Monit.
Ist ein Dienst nicht mehr erreichbar? Automatisierter Neustart. Verbraucht ein Dienst zuviel Resourcen - Neustart. Manueller Neustart ohne spontanem SSH Zugriff- Webdienst!
Monit installieren
sudo apt-get update
sudo apt-get install monit
Weboberfläche
Die Monit Weboberfläche auf Port 8080
freigeben; die Host-IP sowie den Zugriffsschutz mittels HTTP Basic Auth konfigurieren (Platzhalter HOST_IP, USER, PASSWORD entsprechend ersetzen).
sudo vi /etc/monit/monitrc
set httpd port 8080 and use address __HOST_IP__ allow __USER__:__PASSWORD__
Überwachung des nginx Webservers
Ist der Zugriff vom lokalen Host nicht möglich wird der Dienst neu gestartet. Bei einer CPU Nutzung ab 40% wird entsprechend gewarnt, bei mehr als 60% der Dienst neu gestartet. Nach 10 Neustart-Versuchen in Folge wird abgebrochen.
cat <<EOF | sudo tee /etc/monit/conf.d/nginx.conf
check process nginx with pidfile /var/run/nginx.pid
start program = "/bin/systemctl start nginx"
stop program = "/bin/systemctl stop nginx"
if failed host 127.0.0.1 port 80 then restart
if cpu is greater than 40% for 2 cycles then alert
if cpu > 60% for 5 cycles then restart
if 10 restarts within 10 cycles then timeout
EOF
Überwachung der MySQL Datenbank
Ist der Zugriff vom lokalen Host nicht möglich wird der Dienst neu gestartet, nach 5 Neustarts in Folge wird abgebrochen.
cat <<EOF | sudo tee /etc/monit/conf.d/mysql.conf
check process mysqld with pidfile "/var/run/mysqld/mysqld.pid"
start program = "/bin/systemctl start mysql"
stop program = "/bin/systemctl stop mysql"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
EOF
Überwachung der Redis Key/Value Datenbank
Ist der Zugriff vom lokalen Host nicht möglich wird der Dienst neu gestartet, ebenso wenn die CPU Nutzung über 95% liegt. Sollte der Speicherverbrauch über 100MByte liegen erfolgt ein Alarm, nach 5 Neustarts in Folge wird abgebrochen.
cat <<EOF | sudo tee /etc/monit/conf.d/redis.conf
check process redis-server with pidfile "/var/run/redis/redis-server.pid"
start program = "/bin/systemctl start redis-server"
stop program = "/bin/systemctl stop redis-server"
if totalmem > 100 Mb then alert
if children > 255 for 5 cycles then stop
if cpu usage > 95% for 3 cycles then restart
if failed host 127.0.0.1 port 6379 then restart
if 5 restarts within 5 cycles then timeout
EOF
Monit neu starten
sudo systemctl restart monit