Die Rootgemeinschaft hat nun eine Serverüberwachung mit monit bekommen.
Eine rudimentäre Serverüberwachung hat man im ISPConfig 3 ja bereits frei Haus. Nur gerade im email Bereich gibt es so viele Dienste, die in einander greifen, das man nicht auf anhieb erkennen kann, woran es liegt, wenn es klemmt.
Die wichtigsten Dienste habe ich nun in die Überwachung integriert, es werden aber mit der Zeit sicherlich noch weitere dazu kommen.
Die Konfigurationsdatei für monit bei Debian Lenny ist die /etc/monit/monitrc
Es sind ausreichend Beispiele in der Datei enthalten und in man monit gibt es weitere Hinweise.
Ich habe mich dazu entschlossen, den Dienst von aussen erreichbar zu gestallten, was aber ein erhebliches Sicherheitsrisiko darstellt. Deshalb ist der Zugang nur über ssl möglich. Das Passwort solte wirklich ein Passwort sein, denn man kann über die Weboberfläche die Dienste auf stoppen! Wenn man den Parameter Readonly hinter das Passwort stellt, hat man diese Gefahr gebannt. Wenn man die Einträge wegläßt, dann wird kein Webserver gestartet, alternativ kann man aber den Webserver nur für Localhost erreichbar machen.
Für die einzelnen Dienste benutze ich jeweils einzelne Dateien, die immer einzeln mit einem include geladen werden, damit ist das debuggen einfacher :-) Der Aufruf von monit -t macht einen Sysntax check und erpart einem so manche frustrierende Fehlersuche.
Bitte daran denken, das die Pfade wirklich passen müssen, simples Copy& Paste meiner Einträge wird nur selten gelingen.
#/etc/monit/monitrc
set httpd port 2812 and
SSL ENABLE
PEMFILE /etc/ssl/private/monit.pem
allow admin:geheimpassword readonly
set logfile /var/log/monit.log
set mail-format { from: monit(ätt)rootgemeinschaft.de }
set alert systemverwaltung (ätt) rootgemeinschaft.de
set alert andere(ätt)irgend.wo only on { timeout }
set daemon 60
include /etc/monit/conf.d/courier-imap
include /etc/monit/conf.d/courier-imap-ssl
include /etc/monit/conf.d/courier-pop3
include /etc/monit/conf.d/courier-ssl
include /etc/monit/conf.d/postfix
include /etc/monit/conf.d/saslauthd
include /etc/monit/conf.d/spamassassin
include /etc/monit/conf.d/amavis
include /etc/monit/conf.d/clamav
include /etc/monit/conf.d/postgrey
include /etc/monit/conf.d/ssh
include /etc/monit/conf.d/pure-ftp
include /etc/monit/conf.d/ssh
----------------
Diese Grund Config habe ich benutzt
# create RSA certs - Server
RANDFILE = ./openssl.rnd
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = de
stateOrProvinceName = Germany
stateOrProvinceName_default = Germany
localityName = Koenigslutter
localityName_default = Koenigslutter
organizationName = Rootgemeinschaft.de
organizationName_default = Rootgemeinschaft.de
organizationalUnitName = Dept. of Monitoring Technologies
organizationalUnitName_default = Dept. of Monitoring Technologies
commonName = rootgemeinschaft.de
commonName_default = rootgemeinschaft.de
emailAddress = systemverwaltung (ätt) rootgemeinschaft.de
emailAddress_default = root (ätt) localhost.de
[ cert_type ]
nsCertType = server
-------
Zum generieren des SSL Zertifikates habe ich mich weitgeht an den üblichen Standard gehalten.
openssl req -new -x509 -days 365 -nodes -config /etc/ssl/private/monit.cnf -out /etc/ssl/private/monit.pem -keyout /etc/ssl/private/monit.pem
openssl gendh 512 >> /etc/ssl/private/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /etc/ssl/private/monit.pem
chmod 700 /etc/ssl/private/monit.pem
/etc/init.d/monit restart
----------------
Hier die einzelnen Dateien der conf.d/.
Man kann sich auch sehr gut im Wiki des Projektes informieren. Dort ist auch der korrekte Eintrag fürs Log-Rotating zu finden.
#courier-imap
check process imap with pidfile /var/run/courier/imapd.pid
group mail
start program = "/etc/init.d/courier-imap start"
stop program = "/etc/init.d/courier-imap stop"
if failed port 143 then restart
if 5 restarts within 5 cycles then timeout
-------------
#courier-imap-ssl
check process imapd-ssl with pidfile /var/run/courier/imapd-ssl.pid
group mail
start program = "/etc/init.d/courier-imap-ssl start"
stop program = "/etc/init.d/courier-imap-ssl stop"
if failed port 993 then restart
if 5 restarts within 5 cycles then timeout
--------------
#courier-pop3
check process pop3 with pidfile /var/run/courier/pop3d.pid
group mail
start program = "/etc/init.d/courier-pop start"
stop program = "/etc/init.d/courier-pop stop"
if failed port 110 then restart
if 5 restarts within 5 cycles then timeout
-------------
#courier-ssl
check process pop3 with pidfile /var/run/courier/pop3d.pid
group mail
start program = "/etc/init.d/courier-pop start"
stop program = "/etc/init.d/courier-pop stop"
if failed port 110 then restart
if 5 restarts within 5 cycles then timeout
------------
#postfix
check process postfix with pidfile /var/spool/postfix/pid/master.pid
group mail
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout
-------------
#saslauthd
check process saslauthd with pidfile /var/spool/postfix/var/run/saslauthd/saslauthd.pid
group mail
start program = "/etc/init.d/saslauthd start"
stop program = "/etc/init.d/saslauthd stop"
if failed unix /var/spool/postfix/var/run/saslauthd/mux then restart
if 5 restarts within 5 cycles then timeout
depends on saslauthd_bin
check file saslauthd_bin with path /usr/sbin/saslauthd
group mail
if failed checksum then unmonitor
if failed permission 755 then unmonitor
if failed uid root then unmonitor
if failed gid root then unmonitor
-----------
#spamassassin
check process spamd with pidfile /var/run/spamd.pid
group mail
start program = "/etc/init.d/spamassassin start"
stop program = "/etc/init.d/spamassassin stop"
if 5 restarts within 5 cycles then timeout
-----------
#amavis
check process amavisd with pidfile /var/run/amavis/amavisd.pid
group mail
start program = "/etc/init.d/amavis start"
stop program = "/etc/init.d/amavis stop"
if failed port 10024 protocol smtp then restart
if 5 restarts within 5 cycles then timeout
-----------
#clamav
check process amavisd with pidfile /var/run/amavis/amavisd.pid
group mail
start program = "/etc/init.d/amavis start"
stop program = "/etc/init.d/amavis stop"
if failed port 10024 protocol smtp then restart
if 5 restarts within 5 cycles then timeout
------
#postgrey
check process postgrey with pidfile /var/run/postgrey.pid
group mail
start program = "/etc/init.d/postgrey start"
stop program = "/etc/init.d/postgrey stop"
if failed port 60000 then restart
if 5 restarts within 5 cycles then timeout
------------
#ssh
check process ssh 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
-----------
#pure-ftpd
check process pure-ftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid
group ftp
start program = "/etc/init.d/pure-ftpd-mysql start"
stop program = "/etc/init.d/pure-ftpd-mysql stop"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout
Damit habe ich die Möglichkeiten von monit noch lange nicht ausgeschöpft, aber vorerst sind die wichtigsten Dienste erfasst. Die Gameserver werden sicherlich noch folgen.
allow admin:geheimpassword readonly
kannst du den Zugriff per Web auf "Nur lesen" setzen.
So ist dann das stoppen oder Starten von Diensten nicht mehr möglich.
Gruß derhil
Das habe ich glatt übersehen, aber gleich umgesetzt!
von Hotmail.com kamen 155.ooo emails (über syslog gezählt) rein. Keine davon wurde zugestellt, ist ja klar, aber der Amavisd war etwas überlastet, was man auch prima in munint sehen kann
Da hat monit die Überwachung gestoppt, weil trotz 5maligen Neustart keine Reaktion kam.