Service Monitoring auf Debian mit Monit

394 Wörter 2 Minuten Lesezeit

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