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.
Per:
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
Mensch, danke! Das habe ich glatt übersehen, aber gleich umgesetzt!
Ps: Bewährungsprobe letzte Nacht: 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.
Man muss bei monit etwas fummeln, z.B. hab ich bei manchen Services drin, dass erst bei 2 aus 5 Fehlversuchen neu gestartet wird, aber wenns mal läuft, ist es echt ne tolle Sache und ergänzt upstart super. Die DSL von monit kann sich mit denen aus dem Rubylager, die ich sonst so benutze, locker messen. Für Services, die keine uptime von über 0,99 brauchen, genau richtig.
Hallo,
was mich interessieren würde wie ich es einstellen muss, wenn kein PID File vorhanden ist z.B. bei Postgrey ist bei mir kein PID vorhanden. Kann ich es einfach auskomentieren und wie überwache ich den port 60000?
Danke und Gruß Hans
Bei mir: /var/run/postgrey.pid
Hallo, finde diese Tutorials alle sehr hilfreich, aber ich habe das Problem, dass ich keine Dateien in dem Ordner Conf.d ablegen kann. Soviel ich weiß, ist es immer besser eine extra datei zu erzeugen und dann diese an die monitrc anzuhängen, damit monitrc original bleibt. Allerdings weiß ich nicht wie ich die Datei dann anhänge? also welcher Befehl ich am Terminal verwenden soll? Mein Ziel ist es, Amule zu überwachen und wenn er abstürzt oder die CPU über 90% geht amule zu beenden und gleich wieder zu starten bzw. amule zu starten, falls er sich von allein schließt. Vielleicht habt ihr ein fertigen skript, den ihr hier posten könnt, um eine solche Aufgabe zu bewältigen. Ich Danke Euch schon mal im Voraus Schön Gruß Gustavo
Wieso kannst du keine Dateien in conf.d anlegen? Du musst root sein. Es gibt unzählige Beispiele, wie auch dieses hier im Blog http://zockertown.de/s9y/index.php?/archives/1451-Mit-monit-die-Serverdienste-ueberwachen-bf2.html