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 monitDann erstellen wir die Systemstartlinks für monit:
systemctl enable monit
systemctl start monitDie 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/monitrcUnd 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 erlaubenErsetzen 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:testDas 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/monitrcset 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 restartwas 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_tokenAls 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/certsWir 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 = serverJetzt 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.pemopenssl gendh 512 >> /var/certs/monit.pemopenssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pemchmod 700 /var/certs/monit.pemSchließlich können wir monit starten:
systemctl restart monitJetzt 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:

(Hauptbildschirm)

(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
- munin: http://munin.projects.linpro.no
- monit: http://mmonit.com/monit
- CentOS: http://www.centos.org
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.