Monit Installation Linux

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

Tagged , , , , , , , , , , , , , , , , . Bookmark the permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.