GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Serverüberwachung mit Munin und Monit auf CentOS 7.2

In diesem Artikel werde ich beschreiben, wie Sie Ihren CentOS 7-Server mit Munin und Monit überwachen können. Munin erstellt ohne viel Konfiguration nette kleine Grafiken über fast jeden Aspekt Ihres Servers (Durchschnittslast, Speicherauslastung, CPU-Auslastung, MySQL-Durchsatz, eth0-Verkehr usw.), während Monit die Verfügbarkeit von Diensten wie Apache, MySQL, Postfix und Takes prüft die entsprechende Aktion, wie z. B. einen Neustart, wenn festgestellt wird, dass sich ein Dienst nicht wie erwartet verhält. Die Kombination aus beidem bietet Ihnen eine vollständige Überwachung:Grafiken, die Sie aktuelle oder bevorstehende Probleme erkennen lassen (wie „Wir brauchen bald einen größeren Server, unsere durchschnittliche Auslastung steigt rapide.“), und einen Watchdog, der die Verfügbarkeit der überwachten Dienste sicherstellt .

Obwohl Sie mit Munin mehr als einen Server überwachen können, besprechen wir hier nur die Überwachung des Systems, auf dem es installiert ist.

Dieses Tutorial wurde für CentOS 7.2 geschrieben, aber die Konfiguration sollte auch für andere Distributionen wie RHEL und Scientific Linux gelten.

1 Vorbemerkung

Der Hostname unseres Systems ist server1.example.com, und wir haben darauf eine Website www.example.com mit dem Dokumentenstammverzeichnis /var/www/html.

2 Aktivieren Sie das EPEL-Repository

Unter CentOS 7 sind Munin und Monit nicht in den standardmäßigen CentOS-Repositories verfügbar. Glücklicherweise können wir sie aus dem EPEL-Repository installieren. Um das EPEL-Repository zu aktivieren, führen wir Folgendes aus:

yum -y install epel-release

Importieren Sie den EPEL GPG-Schlüssel:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

und dann ausführen:

yum -y update

um sicherzustellen, dass das System auf dem neuesten Stand ist und die Paketliste von EPEL geladen wird, bevor wir mit der Installation von munin beginnen.

2 Installieren Sie den Apache-Webserver

Munin benötigt einen Webserver, um seine Statistikdateien bereitzustellen und anzuzeigen. Ich werde den Apache httpd-Server hier installieren:

yum install httpd

Starten Sie Apache und aktivieren Sie ihn so, dass er beim Booten automatisch gestartet wird.

systemctl enable httpd
systemctl start httpd

4 Munin installieren und konfigurieren

Um Munin auf CentOS zu installieren, gehen wir wie folgt vor:

yum -y install munin munin-node

Dann erstellen wir die Systemstartlinks für Munin und starten es:

systemctl enable munin-node
systemctl start munin-node

Als nächstes müssen wir die Munin-Konfigurationsdatei /etc/munin/munin.conf.

bearbeiten
nano /etc/munin/munin.conf

Wir möchten, dass munin den Namen server1.example.com anstelle von localhost in der HTML-Ausgabe verwendet, daher ersetzen wir localhost durch server1.example.com. Ohne die Kommentare sieht die geänderte Datei so aus:

[...]
# a simple host tree
[server1.example.com]
    address 127.0.0.1
    use_node_name yes
[...]

Die Munin-Statistiken sind mit Benutzername und Passwort geschützt (Apache Basic Auth). Im nächsten Schritt fügen wir der Datei /etc/munin/munin-htpasswd einen neuen Benutzer und ein neues Passwort hinzu.

htpasswd /etc/munin/munin-htpasswd admin

Der Befehl fügt einen neuen Benutzer mit dem Namen "admin" hinzu und fordert zweimal zur Eingabe des neuen Passworts auf.

Warten Sie nun ein paar Minuten, damit munin die erste Statistikausgabe erzeugen kann, und gehen Sie dann in Ihrem Browser auf http://server1.example.com/munin/ und Sie sehen die ersten Statistiken.

(Dies ist nur ein kleiner Auszug aus den vielen Grafiken, die munin produziert...)

5 Monit installieren und konfigurieren

Als nächstes werden wir Monit installieren:

yum -y 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 (weitere Konfigurationsbeispiele finden Sie unter http://mmonit.com/wiki/Monit/ConfigurationExamples), die alle auskommentiert sind, aber Monit auch dazu aufgefordert wird Suchen Sie im Verzeichnis /etc/monit.d nach Konfigurationsdateien.

In diesem Fall werde ich Folgendes überwachen:

  • proftpd
  • sshd
  • MariaDB
  • Apache
  • Postfix

Außerdem 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.
  • Passwortgeschütztes Login für die Weboberfläche konfigurieren.
  • Monit sendet E-Mail-Benachrichtigungen an [email protected].

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

nano /etc/monitrc

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

set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly

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 vielleicht 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

# Send emails trough this mailserver
set mailserver localhost
# Set the From address of the alert emails
set mail-format { from: [email protected] }
# Send alerts to this address
set alert [email protected]
# Monitor the Proftpd service 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
# Monitor the SSH service 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
# Monitor MariaDB check process mysql with pidfile /var/run/mariadb/mariadb.pid group database start program = "/usr/bin/systemctl start mariadb" stop program = "/usr/bin/systemctl stop mariadb" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
# Monitor the 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
# Monitor 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 prüfen, die wirklich auf Ihrem Server existieren - andernfalls startet Monit nicht. D.h. wenn Sie Monit sagen, dass es Postfix prüfen soll, Postfix aber nicht auf dem System installiert ist, startet Monit nicht.)

Die Konfigurationsdatei ist ziemlich selbsterklärend; Wenn Sie sich bei einer Option nicht sicher sind, werfen Sie einen Blick in die Monit-Dokumentation:http://mmonit.com/monit/documentation/monit.html

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

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

Das bedeutet, dass Monit versucht, eine Verbindung zu localhost auf Port 80 herzustellen 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 keinen Erfolg hat, bedeutet dies, dass Apache nicht läuft und Monit ihn neu starten wird. Jetzt müssen wir die Datei /var/www/html/monit_token erstellen und eine zufällige Zeichenfolge hineinschreiben:

touch /var/www/html/monit_token

Als nächstes erstellen wir das SSL (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. Das kann so aussehen:

nano /var/certs/monit.cnf
# create RSA certs - 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

Endlich können wir Monit starten:

systemctl restart monit

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

(Hauptbildschirm)

(Apache-Statusseite)

Abhängig von Ihrer Konfiguration in /etc/monit.d/monitrc startet Monit Ihre Dienste neu, wenn sie fehlschlagen, und sendet Benachrichtigungs-E-Mails, wenn sich die Prozess-IDs von Diensten ändern usw.

  • munin:http://munin.projects.linpro.no
  • monit:http://mmonit.com/monit
  • CentOS:http://www.centos.org

Cent OS
  1. Serverüberwachung mit Icinga 2 und Icingaweb 2 auf CentOS 7

  2. Einrichten eines NFS-Servers und -Clients unter CentOS 7.2

  3. Überwachen und verwalten Sie Ihre Dienste mit Monit auf CentOS 6 / RHEL 6

  4. So überwachen Sie die Ressourcennutzung Ihres Servers mit Munin unter CentOS 6

  5. Richten Sie einen Mailserver mit PostfixAdmin und MariaDB auf CentOS 7 ein

Serverüberwachung mit Munin und Monit unter Debian 10

Serverüberwachung mit Munin und Monit auf Debian 8 (Jessie)

Serverüberwachung mit munin und monit auf CentOS 5.2

Serverüberwachung mit Munin und Monit auf CentOS 7

Serverüberwachung mit munin und monit auf Fedora 7

Einrichten eines OpenVPN-Servers mit CentOS und Viscosity