Mein eigener Server

Dokumentation meiner Projekte und Hobbies

Monit

Bebilderte Schritt für Schritt Anleitung zur Installation von Monit.

Monit überwacht Dein System, startet ggf. Dienste neu und hält Dich mit Statusmails auf dem laufenden.

Monit Installation

Wir setzen bei dieser Konfig auf die admin Apache Seite von munin auf. Solltet Ihr munin übersprungen haben bitte die DNS Einträge und Vhost Konfig von munin anschauen und bei der Monit Konfiguration ergänzen.

Ihr meldet Euch als root am System an bzw. nutzt das su- Kommando um zum root user zu wechseln.

monit_1Zuerst führt Ihr ein apt-get update durch damit das Inhaltsverzeichnis von apt-get auf dem neuesten Stand ist.

monit_2Installation von munin mit apt-get install monit

Monit Konfig Datei sichern mit: cp /etc/monit/monitrc /etc/monit/monitrc_orig

Monit Konfigdatei anpassen: vi /etc/monit/monitrc

set daemon 60 
set mailserver localhost

set mail-format { from: monit@web001.eigener-server.ch }
set alert hostmaster@eigener-server.ch

set httpd port 2812 and
 use address web001.eigener-server.ch
 allow admin:monit

(Bei use address muss Euer Servername eventuell mit Domain angegeben werden. Das was in der Datei cat /ets/hosts steht.)

Monit neu starten: service monit restart

Proxy via Apache

monit_3Proxy Paket für Apache installieren: apt-get install libapache2-mod-proxy-html

monit_4Proxy aktivieren:

a2enmod proxy
a2enmod proxy_html
a2enmod proxy_http

Zur Apache vhost Datei hinzufügen (vor der Zeile </VirtualHost>): vi /etc/apache2/sites-available/admin

  ProxyPass /monit/  http://monit_local:2812/
  ProxyPassReverse /monit/  http://monit_local:2812/
  <Location /monit/>
       Deny from all
       Allow from env=AllowAdmin
  </Location>

Apache Konfig neu laden: service apache2 reload

Jetzt monit testen (Username admin und Passwort monit): http://admin.eigener-server.ch/monit/

Monit und cron

Neues File anlegen: vi /etc/monit/conf.d/cron

check process cron with pidfile /var/run/crond.pid
  group system
  start program = "/etc/init.d/cron start"
  stop  program = "/etc/init.d/cron stop"
  if 5 restarts within 5 cycles then timeout
  depends on cron_rc

check file cron_rc with path /etc/init.d/cron
  group system
  if failed checksum then unmonitor
  if failed permission 755 then unmonitor
  if failed uid root then unmonitor
  if failed gid root then unmonitor

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und Filesystem

Neues File anlegen: vi /etc/monit/conf.d/filesystem

check filesystem rootfs with path /
  if space usage > 80% then alert

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und SSH

Neues File anlegen: vi /etc/monit/conf.d/sshd

check process sshd with pidfile /var/run/sshd.pid
  start program = "/etc/init.d/ssh start"
  stop  program = "/etc/init.d/ssh stop"
  if failed port 22 protocol ssh then restart
  if 5 restarts within 5 cycles then timeout

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und Bind9

Neues File anlegen: vi /etc/monit/conf.d/bind9

check process named with pidfile /chroot/named/var/run/named.pid
  group bind
  start program = "/etc/init.d/bind9 start"
  stop program = "/etc/init.d/bind9 stop"
  if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
  if failed host 127.0.0.1 port 53 type udp protocol dns then restart
  if 5 restarts within 5 cycles then timeout

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und fail2ban

Neues File anlegen: vi /etc/monit/conf.d/fail2ban

check process fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
  group security
  start program "/etc/init.d/fail2ban start"
  stop program "/etc/init.d/fail2ban stop"
  if failed unixsocket /var/run/fail2ban/fail2ban.sock then restart
  if 5 restarts within 5 cycles then timeout

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und mysql

Neues File anlegen: vi /etc/monit/conf.d/mysql

check process mysql with pidfile /var/run/mysqld/mysqld.pid
  group database
  start program = "/etc/init.d/mysql start"
  stop program = "/etc/init.d/mysql stop"
  if failed unix "/var/run/mysqld/mysqld.sock" then restart
  if cpu > 60% for 2 cycles then alert
  if cpu > 80% for 5 cycles then restart
  if totalmem > 150 MB for 5 cycles then restart
  if loadavg(5min) greater than 10 for 8 cycles then stop
  if 5 restarts within 5 cycles then timeout
  depends on mysql_bin
  depends on mysql_rc

check file mysql_bin with path /usr/sbin/mysqld
  group database
  if failed checksum then unmonitor
  if failed permission 755 then unmonitor
  if failed uid root then unmonitor
  if failed gid root then unmonitor

check file mysql_rc with path /etc/init.d/mysql
  group database
  if failed checksum then unmonitor
  if failed permission 755 then unmonitor
  if failed uid root then unmonitor

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und Apache

Neues File anlegen: vi /etc/monit/conf.d/apache

check process apache2 with pidfile /var/run/apache2.pid
  #Below is actions taken by monit when service got stuck.
  start program = "/etc/init.d/apache2 start"
  stop program  = "/etc/init.d/apache2 stop"
  # Admin will notify by mail if below of the condition satisfied.
  if cpu is greater than 60% for 2 cycles then alert
  if cpu > 80% for 5 cycles then restart
  if totalmem > 512 MB for 5 cycles then restart
  if children > 250 then restart
  if loadavg(5min) greater than 10 for 8 cycles then stop
  if 3 restarts within 5 cycles then timeout
  group www
  depends on apache_bin
  depends on apache_rc

check file apache_bin with path /usr/sbin/apache2
  group www
  if failed checksum then unmonitor
  if failed permission 755 then unmonitor
  if failed uid root then unmonitor
  if failed gid root then unmonitor

check file apache_rc with path /etc/init.d/apache2
  group www
  if failed checksum then unmonitor
  if failed permission 755 then unmonitor
  if failed uid root then unmonitor

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und Erreichbarkeit

Neues File anlegen (IP anpassen): vi /etc/monit/conf.d/reach

check host web001 with address 1.2.3.4
  if failed icmp type echo with timeout 4 seconds then alert
  #if failed port 25 type tcp protocol smtp then alert
  if failed port 53 type udp protocol dns then alert

check host internet with address 8.8.8.8
  if failed icmp type echo with timeout 4 seconds then alert

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und Webseiten Inhalt

Neues File anlegen: vi /etc/monit/conf.d/webseite

check host eigener-server.ch with address eigener-server.ch
  if failed url https://www.eigener-server.ch and content == "Eigener Server in 24h"
  timeout 30 seconds for 1 cycles then alert

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Monit und NTP

Neues Verzeichnis anlegen (falls noch nicht vorhanden): mkdir /etc/monit/script

Neues File anlegen: vi /etc/monit/script/ntpcheck.sh

#!/bin/sh

NTPQ="/usr/bin/ntpq"

ERC=`$NTPQ -pn 2> /dev/null | grep -E -c '^\*'`
if [ $ERC -eq 1 ] ; then
  return 0
else
  return 1
fi

File ausführbar machen: chmod +x /etc/monit/script/ntpcheck.sh

Neues File anlegen: vi /etc/monit/conf.d/ntpcheck

check program ntpcheck with path "/etc/monit/script/ntpcheck.sh"
  if status != 0 then alert

Testen der Konfiguration mit: monit -t

Anschliessend Monit neu starten: service monit restart

Status im monit ansehen: http://admin.eigener-server.ch/monit/

Weiter geht es mit der Installation von Postfix & Dovecot damit die emails auch mal gesendet werden können.