Hi @ All,
Heute geht es um das Thema Monit.
Monit ist eine Serverüberwachung für Dienste, Programme oder auch Dateien.
Was ganz Sinnvoll ist da es die Möglichkeit gibt sich via E-Mail ein Info zu schicken zu lassen.
Da Monit als Daemon läuft und auch seinen eigenen Webserver mit liefert muss man hier keine Apache anpassungen durchführen und ist daher recht einfach.
Wie man hier jetzt vorgehen möchte liegt bei jedem selbst.
Domain/Subdomain Anlegen:
Ich lege immer eine Subdomain an da für sowas dies die bessere Lösung ist und die Seite auch nicht so schnelle gefunden werden kann, erst recht nicht mit Google.
Also geht Ihr in Plesk in Eure Domain Verwaltung und erstellt hier eine Neue Subdomain mit Eurem gewählten Namen.
Man kann sich das auch Sparen und einfach auf seine Server Ip zugreifen.
Installation:
Debian bietet hier ein Paket an dadurch kann man sich die Manuelle Installation sparen und muss sich keine Sorgen machen ob die Version mit allen Pakten die man nutzt Kompatibel sind.
Bitte als root Anmelden oder mit sudo arbeiten.
aptitude install monit
Die Paketinstallation legt alle Dateien an die man benötigt, das Einzige was jetzt nur noch zu machen ist, ist die Config.
Config:
Wechselt mit cd /etc/monit/ in das Monit Verzeichnis
Öffnet mit Eurem lieblings Editor die Datei monitrc.
nano monitrc
Meine Config(mit Beschreibung):
set daemon 60 \\ Aktuallisierungs Intervall set logfile /var/log/monit \\ Verzeichniss für das Logfile set mailserver localhost \\ E-Mailserver - Muss nicht geändert werden \\Mailformat set mail-format { from: monit@yourdomain.com subject: $SERVICE $EVENT at $DATE \\ Hier gibt es auch noch emhr Option einfach mal in die Monit Doku schauen message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION. \\Wenn man sich die Monit Doku ansieht gibt es hier auch noch mehr Möglichkeiten, aber diese reichen mir Your Monit Service \\Signatur } set alert monit@yourdomain.com \\Empfänger E-Mailadresse set httpd port 2812 and \\ Port über den zu erreichen ist SSL ENABLE \\ SSL Verschlüßelung, sollte man nutzen PEMFILE /var/certs/monit.pem \\ Zertifikat von Monit, ist schon dabei allow USERANME:YOURPASSWORD \\ Benutzername und Passwort für den Login, Username sollte mit dem User übereinstimmen den man auch in Plesk eingerichtet hat. Dann hat amn es etwas einfacher. Oder Ihr legt einen Manuell an.
Überwachungen die bei mir laufen
check process SSH with pidfile /var/run/sshd.pid \\ Gibt an das der Dienst SSH überwacht werden soll und wo das .PID zu finden ist start program "/etc/init.d/ssh start" \\ Start kommando um den Dienst eventuell neu zu Staren stop program "/etc/init.d/ssh stop" \\ Stop Befehl um den Dienst eventuell zu Stoppen if failed port PORTNUMBER protocol ssh then restart \\ Gibts an das wenn die Verbindung zum Angegeben SSH Port fehlschlägt soll Monit den Dienst neustarten if failed port PORTNUMBER for 3 times within 4 cycles then alert \\ Wenn 3 mal in 4 Zyklen der Test fehlschlägt, soll ein Alarm geschickt werden(E-Mail) alert monit@yourdomain.com \\ Empfänger E-Mailadresse check file sshd_config path /etc/ssh/sshd_config \\ Prüft die Checksummer der sshd_config, sollte man also nicht gerade selbst dran arbeiten und man bekommt eine Meldung, weiß man bescheid das da gerade was ganz böse schief läuft. if changed checksum then alert \\ Wenn sich die Checksumme der Datei ändert bekommt man eine E-Mail check file passwd path /etc/passwd \\ Überwacht die Datei Passwd, wenn man also gerade nicht in Plesk einen neuen User anlegt oder Lokal einen Anlegt, dürft sich die Datei nie ändern, wenn doch haste auch hier ein ernstes Problem. if changed checksum then alert \\ Wie bei der sshd_conf wird auch hier eine E-Mail von Monit verschickt check process Mysql with pidfile /var/run/mysqld/mysqld.pid \\ Mit dieser Zeile wird der Mysql überwacht und ob die .PID vorhanden ist group database \\ Die Gruppe, eine Angabe von Monit. Monit hat hier einige Vorkonfiguriert und ich habe das so aus der Doku übernommen start program = "/etc/init.d/mysql start" \\ Startbefehl um den Dienst zu starten wenn nötig stop program = "/etc/init.d/mysql stop" \\Stopbefehl um den Dienst eventuell zu Stoppen if failed host 127.0.0.1 port 3306 then restart \\ Gibt die IP (Localhost) und den Port an, sollte die Verbindung fehlschlagen wird ein Neustart versucht if failed host 127.0.0.1 port 3306 for 2 times within 3 cycles then alert \\Wenn die Verbindung fehlschlägt und das 2mal in 3 Zyklen soll eine E-Mail geschickt werden alert monit@yourdomain.com \\ Empfänger für die Warnung check file php.ini path /etc/php5/apache2/php.ini \\ Hier wird die php.ini überwacht, sollte sich hier was ändern wenn man nicht selbst daran arbeitet, hat man hier auch ein großes Problem if changed checksum then alert \\ Schickt die Warnung via E-Mail wenn sich die Datei verändert check file debian.cnf path /etc/mysql/debian.cnf \\Überwachung der debian.cnf, hier muss man eigentlich nie rein, also wenn einer da was dran macht, super großes Problem if changed checksum then alert \\ Schickt ein E-Mail an den Empfänger check process Apache with pidfile /var/run/apache2.pid \\ Überwachung des Webservers (Apache) und ob die .PID vorhanden ist group www \\ Gruppe für die Webdienste start program = "/etc/init.d/apache2 start" \\ Befehl um den Dienst zu Starten stop program = "/etc/init.d/apache2 stop" \\ Befehl zum Stoppen des Dienstes if failed host monit.yourdomain.com port 80 protocol http \\ Gibt eine Domain an die man Überwachen möchte (die Eigene am Besten bzw. eine auf deinem Server) und den Port mit dem Protokoll HTTP and request "/token" then restart \\ Sollte dieses fehlschlagen, soll ein Neustart durch geführt werden (zur Datei "token" schreibe ich was weiter unten) if cpu is greater than 60% for 2 cycles then alert \\ Wenn die CPU auslastung für 2 Zyklen bei 60% für diesen Dienst liegt soll eine Warnung verschickt werden if cpu > 80% for 2 cycles then restart \\ Wenn die CPU auslastung für 2 Zyklen größer als 80% ist soll der Dienst neugestartet werden if totalmem > 1000 MB for 2 cycles then restart \\ Wenn die Memory nutzung von diesem Dienst größer 1000MB ist innerhalb von 2 Zyklen dann Starte den Dienst neu if children > 250 then restart \\ Wenn die Chieldprozesse mehr als 250 sind starte den Dienst neu if loadavg(5min) greater than 20 for 8 cycles then stop \\ Wenn der Loadaverage 5min lang größer als 20 ist und das innerhalb von 8 Zyklen dann soll der Dienst gestoppt werden if 3 restarts within 4 cycles then timeout \\ Wenn nach 3 Neustarts innerhalb von 4 Zyklen statt finden soll der Dienst auf Tiemout gestellt werden auf der Webseite von Monit alert monit@yourdomain.com \\ E-Mailadresse des Empfängers check file apache2.conf path /etc/apache2/apache2.conf \\ Überwachung der apache2.conf, solltet Ihr selbst nicht daran Arbeiten, spielt da jemand Fremdes dran rum if changed checksum then alert \\ Wenn sich die Checksummer ändert, E-Mail schicken check process Pop3 with pidfile /var/run/pop3d.pid \\ POP3 Dienst überwachung und der .PID group mail \\ Gruppe E-Maildienste start program = "/etc/courier-imap/pop3d start" \\ Befehl und Pfad um den POP3 zu Starten stop program = "/etc/courier-imap/pop3d stop" \\ Befehl und Pfad um den POP3 zu Stoppen if failed port 110 protocol pop then restart \\ Wenn die Verbindung auf Port 110 fehlschlägt, soll ein Neustart gemacht werden if failed port 110 for 2 times within 3 cycles then alert \\ Wenn innerhalb von 3 Zylken 2mal die Verbindung fehlschlägt soll eine E-Mail geschickt werden alert monit@yourdomain.com \\ Empfänger Adresse check process Postfix with pidfile /var/spool/postfix/pid/master.pid \\ SMTP Server und .PID überwachung group mail \\ Gruppe E-Maildienste start program = "/etc/init.d/postfix start" \\Befehl und Pfad für den SMTP Server start stop program = "/etc/init.d/postfix stop" \\ Befehl und Pfad um den SMTP Server zu stoppen if failed port 25 protocol smtp then restart \\ Wenn die Verbindung zum Port 25 fehlschlägt, soll ein Neustart durch geführt werden if failed port 25 for 2 times within 3 cycles then alert \\ Wenn die Verbindung 2mal in 3 Zyklen fehlschlägt soll eine Meldung geschickt werden alert monit@yourdomain.com \\ Empfängeradresse check file main.cf path /etc/postfix/main.cf \\ Überwacht die Konfigurations datei von Postfix if changed checksum then alert \\ Wenn sich die Datei verändert wird eine Meldung verschickt check process Spammassist with pidfile /var/run/spamd/spamd_full.pid \\ Überwacht den Spamassist Dienst und die .PID group mail \\ Gruppe E-Maildienst start program = "/etc/init.d/spamassassin start" \\ Befehl und Pfad um den Dienst zu Starten stop program = "/etc/init.d/spamassassin stop" \\ Befehl und Pfad um den Dienst zu Stoppen if 2 restarts within 3 cycles then timeout \\ Wenn 2 Neustarts innerhalb von 3 Zyklen vorkommen wird der Dienst auf der Monit Seite auf Timeout umgestellt if cpu usage > 99% for 3 cycles then alert \\ Wenn die CPU nutzung bei größer 99% ist innerhalb von 3 Zyklen soll eine Meldung geschickt werden if mem usage > 99% for 3 cycles then alert \\ Wenn die Memory nutzung größer 99% ist innerhalb von 3 Zyklen soll eine Meldung verschickt werden alert monit@yourdomain.com \\ Empfänger Adresse check process KAV with pidfile /var/run/aveserver.pid \\ Überwacht die Antiviren Software und ob die .PID Datei vorhanden ist group antivirus \\ Gruppe Antivirus start program = "/etc/init.d/aveserver start" \\ Befehl um den Dienst zu Starten stop program = "/etc/init.d/aveserver stop" \\ Befehl um den Dienst zu Stoppen if failed unixsocket /var/run/aveserver then restart \\ Wenn die Verbindung zum Uniysocket fehlschlägt soll der Dienst neugestartet werden alert monit@yourdomain.com \\ Empfängeradresse check device disk0 with path /dev/md0 \\ Überwacht die Festplatte md0 if space usage > 90% then alert \\ Schickt einen Alarm wenn die Festplatte mehr als 90% Ausnutzung hat if inode usage > 90% then alert \\ Schickt eine Alarm wenn die inode der Festplatte über 90% beträgt alert monit@yourdomain.com \\ Empfänger Adresse check device disk1 with path /dev/md1 \\ Überwacht die Festplatte md1 if space usage > 90% then alert \\ Schickt einen Alarm wenn die Festplatte mehr als 90% Ausnutzung hat if inode usage > 90% then alert \\ Schickt eine Alarm wenn die inode der Festplatte über 90% beträgt alert monit@yourdomain.com \\ Empfänger Adresse check process TS3Server with pidfile ../ts3server.pid \\ Überwachung meine TS3 Servers und ob die .PID vorhanden ist group ts3 \\ Gruppe TS3 if failed host YourIPAddress port 10001 for 3 times within 4 cycles then alert \\ Wenn die Verbindung 3 mal fehlschlägt innerhalb von 4 Zyklen dann schicke eine Warnung if failed host YourIPAddress port 10001 for 2 times within 3 cycles then restart \\ Wenn 2 mal innerhalb von 3 Zyklen die Verbindung fehlschlägt, Starte den Server neu check host TF2-Server with address YourIPAddress \\ Überwacht ob mein Team Fortress Server zu erreichen ist group Gameserver \\ Gruppe Gameserver if failed host YourIPAddress port 27025 type udp then alert \\ Wenn die Ip-Adresse auf Port 27025 des Types udp nicht zu erreichen ist dann sende einen Alarm check host L4D-Server with address YourIpAddress \\ Überwacht ob mein Left4Dead Server zu erreichen ist group Gameserver \\ Gruppe Gameserver if failed host YourIpAddress port 27055 type udp then alert \\ Wenn die Ip-Adresse auf Port 27055 des Types udp nicht zu erreichen ist dann sende einen Alarm
Nach dem Ihr Eure Config fertig habt, könnt Ihr die Datei Speichern und Monit mit /etc/init.d/monit restart neustarten.
Starten:
Jetzt sollte unter https://YourDomain.com:2812 Eure Monit Seite kommen, wenn nicht gibt es auch die Möglichkeit mit dem Befehl /etc/init.d/monit syntax die Config zu Prüfen, sollten Fehler drin sein bekommt Ihr diese dann Angezeigt.
Oder Ihr schaut unter /var/log/monit/ in die Logdatei.
ACHTUNG: es ist ein Timeout konfiguriert der erst nach dessen ablauf den Zugriff auf die Webseite ermöglicht!
set daemon 60 # check services at 2-minute intervals with start delay 30 # optional: delay the first check by 4-minutes (by
Die Standard Werte stehe hinten dran ich habe das ganze verkürzt von 120 sekunden auf 60 und von 4 Min. bis zum ersten check auf 30 sekunden.
Sonstiges:
Ganz Wichtig, habe ich vergessen …
Damit auch Monit läuft nach einem Neustart muss man den Daemon Einschalten!!!
Die macht man in dem man in die Datei /etc/default/monit geht und den Wert startup=0 auf startup=1 ändert.
Datei “token”:
Ihr müsst die Datei selbst erstellen und in dem Verzeichnis ablegen das Ihr für den Pfad der Angegebenen Domain hinterlegt habt.
Bei Plesk wäre das dann /var/www/vhost/YourDomain/httpdocs/
Wie immer das ganze mit dem lieblings Editor.
nano token
Und tragt ein “hello” oder sonst einen Text ein.
Speichert die Datei ab und schon kann die Überwachung statt finden, man kann die Zeile aber auch löschen in der monitrc.
E-Mailadresse des Empängers:
Die E-Mailadresse des Empfängers kann zum Überwachung individuell eingetragen werden eventuell wegen Verschiedener Domains oder Empfänger, man kann es aber auch lassen und nur ganz oben den Empfänger Eintragen dann kann man sich die Arbeit sparen und läßt die Zeile immer weg.
Auf gut deutsch für jede Datei,Dienst,Festplatte einzel eine E-Mail Adresse einrichten oder für alles die gleiche nutzen.
Zyklus:
Der Zyklus wird in der Ersten Zeile mit der Aktualisierungsrate festgelegt, also bei mir 1min. oder 60 sekunden.
Dieser kann jeder einstellen wie er möchte und natürlich auch die Werte hoch und runter schreiben wie er möchte.
Werte:
Alle Werte könnt Ihr an Euren Server oder bedingungen Anpassen, Ihr könnt auch alle Neustart sowie Start und Stop Befehle löschen wenn Ihr nur eine Info Mail haben wollt.
Weiter Anpassungen:
Unten steht der Link zur Doku, bitte beachtet das dies nicht ganz Aktuell ist und einiges nicht geht oder nicht ganz so wie beschrieben.
Ihr könnt auch noch mehr Dateien, Dienste oder Ports überwachen, Dienste/Programme können nur Überwacht werden wenn eine .PID vorhanden ist. Wenn ich das noch richtig weiß soll das mit M/Monit gehen aber die Version kostet Geld.
Links:
Monit
Doku
Wiki
So dann Wünsche ich Euch viel Spass, bei Fragen oder Probleme könnt Ihr jederzeit eine Nachricht schicken oder einen Kommentar hinterlassen.
Gude
DocSchneidi ak Cheech