Serverüberwachung · 6 min read · Oct 16, 2025
Serverüberwachung Mit munin Und monit Auf Debian Squeeze - Seite 2
4 Installieren Und Konfigurieren von monit
Um monit zu installieren, tun wir dies:
apt-get install monitJetzt müssen wir /etc/monit/monitrc bearbeiten. Die Standard-/etc/monit/monitrc hat viele Beispiele, und Sie können weitere Konfigurationsbeispiele auf http://mmonit.com/monit/documentation/ finden. In meinem Fall möchte ich proftpd, sshd, mysql, apache und postfix überwachen, ich möchte die monit-Weboberfläche auf Port 2812 aktivieren, ich möchte eine HTTPS-Weboberfläche, ich möchte mich mit dem Benutzernamen admin und dem Passwort test in die Weboberfläche einloggen, und ich möchte, dass monit E-Mail-Benachrichtigungen an root@localhost sendet, sodass meine Datei so aussieht (ich habe Beispiele für andere Daemons zur Konfiguration hinzugefügt, damit Sie die Datei an Ihre Bedürfnisse anpassen können):
cp /etc/monit/monitrc /etc/monit/monitrc_orig
cat /dev/null > /etc/monit/monitrc
vi /etc/monit/monitrc| set daemon 60 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: [email protected] } set alert root@localhost set httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin:test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/ssh start" stop program "/etc/init.d/ssh stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/apache2.pid group www start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed host www.example.com 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 check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout #check process nginx with pidfile /var/run/nginx.pid # start program = "/etc/init.d/nginx start" # stop program = "/etc/init.d/nginx stop" # if failed host 127.0.0.1 port 80 then restart # #check process memcached with pidfile /var/run/memcached.pid # start program = "/etc/init.d/memcached start" # stop program = "/etc/init.d/memcached stop" # if failed host 127.0.0.1 port 11211 then restart # #check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid # start program = "/etc/init.d/pure-ftpd-mysql start" # stop program = "/etc/init.d/pure-ftpd-mysql stop" # if failed port 21 protocol ftp then restart # if 5 restarts within 5 cycles then timeout # #check process named with pidfile /var/run/named/named.pid # start program = "/etc/init.d/bind9 start" # stop program = "/etc/init.d/bind9 stop" # if failed host 127.0.0.1 port 53 type tcp protocol dns then restart # if failed host 127.0.0.1 port 53 type udp protocol dns then restart # if 5 restarts within 5 cycles then timeout # #check process ntpd with pidfile /var/run/ntpd.pid # start program = "/etc/init.d/ntp start" # stop program = "/etc/init.d/ntp stop" # if failed host 127.0.0.1 port 123 type udp then restart # if 5 restarts within 5 cycles then timeout # #check process mailman with pidfile /var/run/mailman/mailman.pid # group mail # start program = "/etc/init.d/mailman start" # stop program = "/etc/init.d/mailman stop" # #check process amavisd with pidfile /var/run/amavis/amavisd.pid # group mail # start program = "/etc/init.d/amavis start" # stop program = "/etc/init.d/amavis stop" # if failed port 10024 protocol smtp then restart # if 5 restarts within 5 cycles then timeout # #check process courier-imap with pidfile /var/run/courier/imapd.pid # group mail # start program = "/etc/init.d/courier-imap start" # stop program = "/etc/init.d/courier-imap stop" # if failed host localhost port 143 type tcp protocol imap then restart # if 5 restarts within 5 cycles then timeout # #check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid # group mail # start program = "/etc/init.d/courier-imap-ssl start" # stop program = "/etc/init.d/courier-imap-ssl stop" # if failed host localhost port 993 type tcpssl sslauto protocol imap then restart # if 5 restarts within 5 cycles then timeout # #check process courier-pop3 with pidfile /var/run/courier/pop3d.pid # group mail # start program = "/etc/init.d/courier-pop start" # stop program = "/etc/init.d/courier-pop stop" # if failed host localhost port 110 type tcp protocol pop then restart # if 5 restarts within 5 cycles then timeout # #check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid # group mail # start program = "/etc/init.d/courier-pop-ssl start" # stop program = "/etc/init.d/courier-pop-ssl stop" # if failed host localhost port 995 type tcpssl sslauto protocol pop then restart # if 5 restarts within 5 cycles then timeout # #check process dovecot with pidfile /var/run/dovecot/master.pid # group mail # start program = "/etc/init.d/dovecot start" # stop program = "/etc/init.d/dovecot stop" # if failed host localhost port 993 type tcpssl sslauto protocol imap then restart # if 5 restarts within 5 cycles then timeout |
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 www.example.com port 80 protocol http and request "/monit/token" then restart |
was bedeutet, dass monit versucht, eine Verbindung zu www.example.com auf Port 80 herzustellen und die Datei /monit/token zuzugreifen, die /var/www/www.example.com/web/monit/token ist, da das Dokumentenstammverzeichnis unserer Website /var/www/www.example.com/web ist. Wenn monit keinen Erfolg hat, bedeutet das, dass Apache nicht läuft, und monit wird versuchen, es neu zu starten. Jetzt müssen wir die Datei /var/www/www.example.com/web/monit/token erstellen und einen zufälligen String hineinschreiben:
mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/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:
vi /var/certs/monit.cnf| # create RSA certs - Server RANDFILE = ./openssl.rnd [ req ] default_bits = 2048 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 so:
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.pemAnschließend bearbeiten wir /etc/default/monit, um den monit-Daemon zu aktivieren. Ändern Sie den Startwert auf 1:
vi /etc/default/monit| # Defaults for monit initscript # sourced by /etc/init.d/monit # installed at /etc/default/monit by maintainer scripts # Stefan Alfredsson <[email protected]> # You must set this variable to for monit to start startup=1 # You can change the location of the state file here # It can also be set in monitrc # STATEFILE="/var/lib/monit/monit.state" # To change the intervals which monit should run, # edit the configuration file /etc/monit/monitrc # It can no longer be configured here. |
Schließlich können wir monit starten:
/etc/init.d/monit startJetzt 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/monitrc wird monit Ihre Dienste neu starten, wenn sie fehlschlagen, und Benachrichtigungs-E-Mails senden, wenn sich die Prozess-IDs der Dienste ändern usw.
Viel Spaß!
5 Links
- munin: http://munin-monitoring.org/
- monit: http://mmonit.com/monit/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.