Monit installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
 
(19 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Monit ist ein resourcensparendes Programm zur Überwachung eigener [[Daemon|Daemons]]. Es fragt regelmäßig den Zustand des zu überwachenden Prozesses ab und kann bei einem Absturz den Prozess selbstständig neu starten. Hier wird die Nutzung von Monit für eigenen Apache2 beschrieben.
[[Kategorie:Installationsanleitungen]]
[[Kategorie:eigene Daemons]]
[[Kategorie:Managed Server]]
== Über Monit ==
Monit ist ein ressourcensparendes Programm zur Überwachung eines Server oder von [[Daemon|Diensten ("Daemons")]] auf einem Server.  
 
Es fragt regelmäßig den Zustand des zu überwachenden Prozesses ab und kann bei einem Absturz den Prozess selbstständig neu starten. Für Betriebssystem-Ressourcen, wie Festplatten-Kapazität oder CPU- und RAM-Auslastung, können Schwellwerte angegeben werden, bei deren Überschreitung Monit per E-Mail alarmiert und in eine Log-Datei protokolliert.
 
In dieser Beschreibung wird der Start des Servers und von Monit durch den Paketadmin angenommen. Sollte ein davon verschiedener Domain-Admin der "Befehlshaber" sein, so müssen die Pfade entsprechend korrigiert werden. Von "/home/pacs/xyz00" zu "/home/pacs/xyz00/users/user".
 
{{Textkasten|rot|Besser systemd benutzen|Achtung: wir empfehlen nicht mehr den Einsatz von monit. Alle Anwendungen sollten mit [[Prozessmanagement mit systemd im Userspace|Systemd im Userspace]] laufen.}}


== Konfiguration ==
== Konfiguration ==


Monit sucht seine Konfiguration beim Start beim Start zuerst in der Datei ~/.monitrc im Homeverzeichnis des Users, der monit startet.
Monit sucht seine Konfiguration beim Start zuerst in der Datei ~/.monitrc im Homeverzeichnis des Users, der monit startet.


Wir erstellen also diese Datei im Hauptverzeichnis des Users und sorgen dafür, dass sie nur von diesem gelesen und beschrieben werden kann:
Wir erstellen also diese Datei im Hauptverzeichnis des Users und sorgen dafür, dass sie nur von diesem gelesen und beschrieben werden kann:


<pre>
<syntaxhighlight lang=shell>
xyz00@hxx:~$ cd
xyz00@hxx:~$ cd
xyz00@hxx:~$ touch .monitrc
xyz00@hxx:~$ touch .monitrc
xyz00@hxx:~$ chmod 0600 .monitrc
xyz00@hxx:~$ chmod 0600 .monitrc
xyz00@hxx:~$ edit .monitrc
xyz00@hxx:~$ edit .monitrc
</pre>
</syntaxhighlight>


Und füllen sie mit folgendem Inhalt:
Und füllen sie mit folgendem Inhalt:


<pre>
<syntaxhighlight lang=shell>
set daemon 600
set daemon 600
set logfile /home/pacs/xyz00/var/monit.log
set logfile /home/pacs/xyz00/var/monit.log
Zeile 23: Zeile 33:


check process apache2 with pidfile /home/pacs/xyz00/etc/apache2/run/apache2.pid
check process apache2 with pidfile /home/pacs/xyz00/etc/apache2/run/apache2.pid
     start program "/home/pacs/xyz00/etc/apache2/apache2_start"
     start program "/bin/bash -c '/home/pacs/xyz00/etc/apache2/apache2_start'"
     stop program "/home/pacs/xyz00/etc/apache2/apache2_stop"
     stop program "/bin/bash -c '/home/pacs/xyz00/etc/apache2/apache2_stop'"
     if failed host example.tld port 8080 with timeout 60 seconds then restart
     if failed host example.tld port 8080 with timeout 60 seconds then restart
</pre>
</syntaxhighlight>


'''Achtung:''' Dieses Beispiel geht davon aus, dass die entsprechenden Start- und Stopskripte existieren und der Pfad zum pidfile des Apachen stimmt.
'''Achtung:''' Dieses Beispiel geht davon aus, dass die entsprechenden Start- und Stopskripte existieren und der Pfad zum pidfile des Apachen stimmt.
Zeile 39: Zeile 49:
In die eigene [[Cron#Crontab|crontab]] folgenden Eintrag:
In die eigene [[Cron#Crontab|crontab]] folgenden Eintrag:


@reboot /usr/sbin/monit -c "/home/pacs/xyz00/.monitrc"
<syntaxhighlight lang=shell>
@reboot rm -f $HOME/.monit.pid && /usr/bin/monit -c "/home/pacs/xyz00/.monitrc"
</syntaxhighlight>
 
== Managed Server monitoren ==
 
Bei der Nutzung eines Managed Server ist das Hostsharing-Mitglied selbst dafür verantwortlich, die Ressourcen des Servers
ausreichend zu dimensionieren. Monit kann helfen Engpässe zu entdecken.


[[Kategorie:Installationsanleitungen]]
Mit den folgenden Zeilen in der .monitrc wird bei der Überschreitung von bestimmten Schwellwerten beim Load,
[[Kategorie:eigene Daemons]]
bei der RAM- und CPU-Auslastung und der Festplatten-Auslastung der E-Mail alarmiert und ins monit.log protokolliert:
 
<syntaxhighlight lang=shell line>
check system h00.hostsharing.net
    if loadavg (1min) > 5 then alert
    if loadavg (5min) > 3 then alert
    if memory usage > 85% then alert
    if cpu usage (user) > 70% then alert
    if cpu usage (system) > 30% then alert
    if cpu usage (wait) > 20% then alert


check device datafs with path /dev/vda2
    if failed permission 0660 then alert
    if failed uid root then alert
    if failed gid "disk" then alert
    if space usage > 85 % then alert
    if inode usage > 85 % then alert
</syntaxhighlight>


== Logfiles kontrollieren ==
== Logfiles kontrollieren ==
Zeile 49: Zeile 82:
Monit loggt entsprechend der Konfiguration seine "Taten" in ~/var/monit.log
Monit loggt entsprechend der Konfiguration seine "Taten" in ~/var/monit.log


Damit das Logfile nicht zu groß wird, benutzen wir '''logrotate''', das von [[cron]] aufgerufen, einmal pro Woche das Logfile komprimiert und zwei alte Versionen hält. Dazu erstellen wir die Konfigdatei .logrotate im Hauptverzeichnis des Users:
Damit das Logfile nicht zu groß wird, benutzen wir '''logrotate''', das von [[cron]] aufgerufen wird, einmal pro Woche das Logfile komprimiert und zwei alte Versionen hält. Dazu erstellen wir die Konfigdatei .logrotate im Hauptverzeichnis des Users:


touch .logrotate
<syntaxhighlight lang=shell>
touch .logrotate
</syntaxhighlight>


Darin schreiben wir:
Darin schreiben wir:


<pre>
<syntaxhighlight lang=shell line>
compress
compress


Zeile 62: Zeile 97:
weekly
weekly
}
}
</pre>
</syntaxhighlight>
 
Nun brauchen wir noch einen Aufruf von logrotate durch [[cron]]. Bitte beachten, logrotate merkt sich den letzten Zustand der Logdatei in einem Statusfile. Das muss in der [[Cron#Crontab|crontab]] mit angegeben werden. Wir editieren die crontab und schreiben:
 
<syntaxhighlight lang=shell line>
27 7 * * 5 logrotate -s /home/pacs/xyz00/.logrotate_state /home/pacs/xyz00/.logrotate
</syntaxhighlight>


Nun brauchen wir noch einen Aufruf von logrotate durch [[cron]]. Bitte beachten, logrotate merkt sich den letzten Zustand der Logdatei in einem Statusfile. Das muss in der [[cron#crontab|crontab]] mit angegeben werden. Wir editieren die Crontab und schreiben:
Damit wird jeden Freitag um 7:27 Uhr das monit.log "rotiert". '''Achtung:''' bitte einen anderen Tag und eine andere Uhrzeit wählen, damit nicht alle logrotates zur gleichen Zeit starten.


27 7 * * 5 logrotate -s /home/pacs/xyz00/.logrotate_state /home/pacs/xyz00/.logrotate
== externe Links ==


Damit wird jeden Freitag um 7:27 Uhr das monit.log "rotiert". '''Achtung:''' bitte einen andern Tag und eine andere Uhrzeit wählen, damit nicht alle logrotates zur gleichen Zeit starten.
* [https://www.mmonit.com/monit/ Monit Homepage]
* [https://www.mmonit.com/monit/documentation/monit.html Monit Dokumentation]
* [https://www.mmonit.com/wiki/ Monit Wiki]

Aktuelle Version vom 2. Dezember 2024, 17:04 Uhr

Über Monit

Monit ist ein ressourcensparendes Programm zur Überwachung eines Server oder von Diensten ("Daemons") auf einem Server.

Es fragt regelmäßig den Zustand des zu überwachenden Prozesses ab und kann bei einem Absturz den Prozess selbstständig neu starten. Für Betriebssystem-Ressourcen, wie Festplatten-Kapazität oder CPU- und RAM-Auslastung, können Schwellwerte angegeben werden, bei deren Überschreitung Monit per E-Mail alarmiert und in eine Log-Datei protokolliert.

In dieser Beschreibung wird der Start des Servers und von Monit durch den Paketadmin angenommen. Sollte ein davon verschiedener Domain-Admin der "Befehlshaber" sein, so müssen die Pfade entsprechend korrigiert werden. Von "/home/pacs/xyz00" zu "/home/pacs/xyz00/users/user".

Besser systemd benutzen

Achtung: wir empfehlen nicht mehr den Einsatz von monit. Alle Anwendungen sollten mit Systemd im Userspace laufen.


Konfiguration

Monit sucht seine Konfiguration beim Start zuerst in der Datei ~/.monitrc im Homeverzeichnis des Users, der monit startet.

Wir erstellen also diese Datei im Hauptverzeichnis des Users und sorgen dafür, dass sie nur von diesem gelesen und beschrieben werden kann:

xyz00@hxx:~$ cd
xyz00@hxx:~$ touch .monitrc
xyz00@hxx:~$ chmod 0600 .monitrc
xyz00@hxx:~$ edit .monitrc

Und füllen sie mit folgendem Inhalt:

set daemon 600
set logfile /home/pacs/xyz00/var/monit.log
set mailserver localhost
set alert admin@example.tld

check process apache2 with pidfile /home/pacs/xyz00/etc/apache2/run/apache2.pid
    start program "/bin/bash -c '/home/pacs/xyz00/etc/apache2/apache2_start'"
    stop program "/bin/bash -c '/home/pacs/xyz00/etc/apache2/apache2_stop'"
    if failed host example.tld port 8080 with timeout 60 seconds then restart

Achtung: Dieses Beispiel geht davon aus, dass die entsprechenden Start- und Stopskripte existieren und der Pfad zum pidfile des Apachen stimmt.

Monit Starten und Stoppen

Start: monit
Stop: monit quit

Start eigener Daemons beim Start des Servers

In die eigene crontab folgenden Eintrag:

@reboot rm -f $HOME/.monit.pid && /usr/bin/monit -c "/home/pacs/xyz00/.monitrc"

Managed Server monitoren

Bei der Nutzung eines Managed Server ist das Hostsharing-Mitglied selbst dafür verantwortlich, die Ressourcen des Servers ausreichend zu dimensionieren. Monit kann helfen Engpässe zu entdecken.

Mit den folgenden Zeilen in der .monitrc wird bei der Überschreitung von bestimmten Schwellwerten beim Load, bei der RAM- und CPU-Auslastung und der Festplatten-Auslastung der E-Mail alarmiert und ins monit.log protokolliert:

check system h00.hostsharing.net
    if loadavg (1min) > 5 then alert
    if loadavg (5min) > 3 then alert
    if memory usage > 85% then alert
    if cpu usage (user) > 70% then alert
    if cpu usage (system) > 30% then alert
    if cpu usage (wait) > 20% then alert

check device datafs with path /dev/vda2
    if failed permission 0660 then alert
    if failed uid root then alert
    if failed gid "disk" then alert
    if space usage > 85 % then alert
    if inode usage > 85 % then alert

Logfiles kontrollieren

Monit loggt entsprechend der Konfiguration seine "Taten" in ~/var/monit.log

Damit das Logfile nicht zu groß wird, benutzen wir logrotate, das von cron aufgerufen wird, einmal pro Woche das Logfile komprimiert und zwei alte Versionen hält. Dazu erstellen wir die Konfigdatei .logrotate im Hauptverzeichnis des Users:

touch .logrotate

Darin schreiben wir:

compress

/home/pacs/xyz00/var/monit.log {
rotate 2
weekly
}

Nun brauchen wir noch einen Aufruf von logrotate durch cron. Bitte beachten, logrotate merkt sich den letzten Zustand der Logdatei in einem Statusfile. Das muss in der crontab mit angegeben werden. Wir editieren die crontab und schreiben:

27 7 * * 5	logrotate -s /home/pacs/xyz00/.logrotate_state /home/pacs/xyz00/.logrotate

Damit wird jeden Freitag um 7:27 Uhr das monit.log "rotiert". Achtung: bitte einen anderen Tag und eine andere Uhrzeit wählen, damit nicht alle logrotates zur gleichen Zeit starten.

externe Links