Serverüberwachung · 5 min read · Oct 17, 2025

Serverüberwachung mit Munin und Monit auf CentOS 7 - Seite 2

5 Installieren und Konfigurieren von Monit

Als nächstes installieren wir Monit:

yum install monit

Dann erstellen wir die Systemstartlinks für monit:

systemctl enable monit  
systemctl start monit

Die Standardkonfigurationsdatei von Monit ist /etc/monitrc, wo Sie einige Konfigurationsbeispiele finden können (Sie finden weitere Konfigurationsbeispiele unter http://mmonit.com/wiki/Monit/ConfigurationExamples), die alle auskommentiert sind, aber es sagt monit auch, dass es im Verzeichnis /etc/monit.d nach Konfigurationsdateien suchen soll.

In diesem Fall möchte ich überwachen:

  • proftpd
  • sshd
  • mysql
  • apache
  • postfix

Darüber hinaus werde ich diese Einstellungen für Monit konfigurieren:

  • Aktivieren Sie die Monit-Weboberfläche auf Port 2812.
  • Verwenden Sie HTTPS für die Weboberfläche anstelle von HTTP.
  • Konfigurieren Sie einen passwortgeschützten Login für die Weboberfläche.
  • Monit soll E-Mail-Benachrichtigungen an root@localhost senden.

Zuerst werde ich die Authentifizierungseinstellungen konfigurieren. Öffnen Sie die Datei /etc/monit.d/monitrc

nano /etc/monit.d/monitrc

Und scrollen Sie nach unten, bis Sie diesen Abschnitt finden:

set httpd port 2812 and  
   use address localhost # nur Verbindungen von localhost akzeptieren  
   allow localhost # localhost erlauben, sich mit dem Server zu verbinden und  
   allow admin:monit # Benutzer 'admin' mit Passwort 'monit' anfordern  
   allow @monit # Benutzern der Gruppe 'monit' den Zugriff erlauben (rw)  
   allow @users readonly # Benutzern der Gruppe 'users' nur Lesezugriff erlauben

Ersetzen Sie es durch die folgenden Einstellungen:

set httpd port 2812 and  
   use address 0.0.0.0  
   SSL ENABLE  
   PEMFILE /var/certs/monit.pem  
   allow admin:test

Das Wort “test” ist das Passwort, bitte ersetzen Sie es durch ein sicheres Passwort und Sie möchten möglicherweise auch den Benutzernamen “admin” in einen Namen ändern, der nicht leicht zu erraten ist.

Jetzt fügen wir die Konfiguration für die überwachten Dienste hinzu. Anstatt /etc/monitrc zu ändern, erstellen wir eine neue Konfigurationsdatei /etc/monit.d/monitrc.

Meine Datei sieht so aus:

nano /etc/monit.d/monitrc
set logfile syslog facility log_daemon
  
# E-Mails über diesen Mailserver senden  
set mailserver localhost
  
# Setzen Sie die Absenderadresse der Alarm-E-Mails  
set mail-format { from: [email protected] }
  
# Senden Sie Alarme an diese Adresse  
set alert root@localhost
  
# Überwachen Sie den Proftpd-Dienst
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
   start program = "/usr/bin/systemctl start proftpd"
   stop program  = "/usr/bin/systemctl stop proftpd"
   if failed port 21 protocol ftp then restart
   if 5 restarts within 5 cycles then timeout
  
# Überwachen Sie den SSH-Dienst
check process sshd with pidfile /var/run/sshd.pid
   start program  "/usr/bin/systemctl start sshd"
   stop program  "/usr/bin/systemctl stop sshd"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout
  
# Überwachen Sie MySQL
check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/usr/bin/systemctl start mysqld"
   stop program = "/usr/bin/systemctl stop mysqld"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout
  
# Überwachen Sie den Apache-Webserver
check process apache with pidfile /var/run/httpd/httpd.pid
   group www
   start program = "/usr/bin/systemctl start httpd"
   stop program  = "/usr/bin/systemctl stop httpd"
   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart
   if cpu is greater than 60% for 2 cycles then alert
   if cpu > 80% for 5 cycles then restart
   if totalmem > 500 MB for 5 cycles then restart
   if children > 250 then restart
   if loadavg(5min) greater than 10 for 8 cycles then stop
   if 3 restarts within 5 cycles then timeout
  
# Überwachen Sie den Postfix-Mailserver
check process postfix with pidfile /var/spool/postfix/pid/master.pid
   group mail
   start program = "/usr/bin/systemctl start postfix"
   stop  program = "/usr/bin/systemctl stop postfix"
   if failed port 25 protocol smtp then restart
   if 5 restarts within 5 cycles then timeout

(Bitte stellen Sie sicher, dass Sie nur Prozesse überprüfen, die tatsächlich auf Ihrem Server existieren - andernfalls startet monit nicht. D.h., wenn Sie monit sagen, dass es Postfix überprüfen soll, aber Postfix nicht auf dem System installiert ist, wird monit nicht gestartet.)

Die Konfigurationsdatei ist ziemlich selbsterklärend; wenn Sie sich über eine Option unsicher sind, werfen Sie einen Blick in die Monit-Dokumentation: http://mmonit.com/monit/documentation/monit.html

Im Apache-Teil der Monit-Konfiguration finden Sie dies:

   if failed host localhost port 80 protocol http
      and request "/monit_token" then restart

was bedeutet, dass monit versucht, sich mit localhost über Port 80 zu verbinden und versucht, auf die Datei /monit_token zuzugreifen, die /var/www/html/monit_token ist, da das Dokumentenstammverzeichnis unserer Website /var/www/html ist. Wenn Monit nicht erfolgreich ist, bedeutet das, dass Apache nicht läuft, und Monit wird versuchen, es neu zu starten. Jetzt müssen wir die Datei /var/www/html/monit_token erstellen und einen zufälligen String hinein schreiben:

touch /var/www/html/monit_token

Als nächstes erstellen wir das pem-Zertifikat (/var/certs/monit.pem), das wir für die SSL-verschlüsselte Monit-Weboberfläche benötigen:

mkdir /var/certs  
cd /var/certs

Wir benötigen eine OpenSSL-Konfigurationsdatei, um unser Zertifikat zu erstellen. Sie kann so aussehen:

nano /var/certs/monit.cnf
# Erstellen Sie RSA-Zertifikate - 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 = MO

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Monitoria

localityName                    = Locality Name (eg, city)
localityName_default            = Monittown

organizationName                = Organization Name (eg, company)
organizationName_default        = Monit Inc.

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Dept. of Monitoring Technologies

commonName                      = Common Name (FQDN of your server)
commonName_default              = server.monit.mo

emailAddress                    = Email Address
emailAddress_default            = [email protected]

[ cert_type ]
nsCertType = server

Jetzt erstellen wir das Zertifikat wie folgt:

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

Schließlich können wir monit starten:

systemctl restart monit

Jetzt zeigen Sie mit Ihrem Browser auf https://www.example.com:2812/ (stellen Sie sicher, dass Port 2812 nicht von Ihrer Firewall blockiert wird), melden Sie sich mit admin und test an, und Sie sollten die Monit-Weboberfläche sehen. Sie sollte so aussehen:

Monit-Hauptbildschirm.

(Hauptbildschirm)

Monit-Apache-Details.

(Apache-Statusseite)

Je nach Ihrer Konfiguration in /etc/monit.d/monitrc wird Monit Ihre Dienste neu starten, wenn sie fehlschlagen, und Benachrichtigungs-E-Mails senden, wenn sich die Prozess-IDs der Dienste ändern usw.

6 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.