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

Serverüberwachung mit munin und monit auf CentOS 5.2

In diesem Artikel werde ich beschreiben, wie Sie Ihren CentOS 5.2-Server mit munin und monit überwachen können. munin erstellt ohne viel Konfiguration nette kleine Grafiken über fast jeden Aspekt Ihres Servers (durchschnittliche Auslastung, 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 5.2 geschrieben, aber die Konfiguration sollte mit kleinen Änderungen auch für andere Distributionen gelten.

Ich möchte zunächst sagen, dass dies nicht die einzige Möglichkeit ist, ein solches System einzurichten. Es gibt viele Wege, dieses Ziel zu erreichen, aber ich gehe diesen Weg. Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

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

2 Aktivieren Sie das RPMforge-Repository

Unter CentOS 5.2 sind munin und monit nicht in den standardmäßigen CentOS-Repositories verfügbar. Glücklicherweise können wir sie aus dem RPMforge-Repository installieren. Um das RPMforge-Repository zu aktivieren, führen wir

aus
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm

auf i386-Hosts und

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

auf x86_64-Hosts (bitte besuchen Sie https://rpmrepo.org/RPMforge/Using für die neuesten Versionen).

3 Installieren und konfigurieren Sie munin

Um munin unter CentOS 5.2 zu installieren, gehen wir wie folgt vor:

yum install munin munin-node

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

chkconfig --levels 235 munin-node on
/etc/init.d/munin-node start

Als nächstes müssen wir die Munin-Konfigurationsdatei /etc/munin/munin.conf bearbeiten. Wir möchten, dass munin seine Ausgabe in das Verzeichnis /var/www/www.example.com/web/monitoring legt, daher ändern wir den Wert von htmldir und wir möchten, dass es den Namen server1.example.com anstelle von localhost verwendet. localdomain in der HTML-Ausgabe, daher ersetzen wir localhost.localdomain durch server1.example.com. Ohne die Kommentare sieht die geänderte Datei so aus:

vi /etc/munin/munin.conf
[...]
dbdir   /var/lib/munin
htmldir /var/www/www.example.com/web/monitoring
logdir  /var/log/munin
rundir  /var/run/munin

# Where to look for the HTML templates
tmpldir /etc/munin/templates
[...]
# a simple host tree
[server1.example.com]
    address 127.0.0.1
    use_node_name yes
[...]

Als nächstes erstellen wir das Verzeichnis /var/www/www.example.com/web/monitoring und ändern seinen Besitz auf den Benutzer und die Gruppe munin, andernfalls kann munin seine Ausgabe nicht in diesem Verzeichnis platzieren. Dann starten wir munin neu:

mkdir -p /var/www/www.example.com/web/monitoring
chown munin:munin /var/www/www.example.com/web/monitoring
/etc/init.d/munin-node restart

Warten Sie nun ein paar Minuten, damit munin seine erste Ausgabe erzeugen kann, und gehen Sie dann in Ihrem Browser auf http://www.example.com/monitoring/, und Sie sehen die ersten Statistiken. Nach ein paar Tagen könnte das so aussehen:

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

4 Das munin-Ausgabeverzeichnis mit einem Passwort schützen (optional)

Jetzt ist es eine gute Idee, das Verzeichnis /var/www/www.example.com/web/monitoring mit einem Passwort zu schützen, es sei denn, Sie möchten, dass jeder jede noch so kleine Statistik über Ihren Server sehen kann.

Dazu erstellen wir eine .htaccess-Datei in /var/www/www.example.com/web/monitoring:

vi /var/www/www.example.com/web/monitoring/.htaccess
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/www/www.example.com/.htpasswd
<limit GET PUT POST>
require valid-user
</limit>

Dann müssen wir die Passwortdatei /var/www/www.example.com/.htpasswd erstellen. Wir möchten uns mit dem Benutzernamen admin anmelden, also tun wir Folgendes:

htpasswd -c /var/www/www.example.com/.htpasswd admin

Geben Sie ein Passwort für den Administrator ein und Sie sind fertig!

5 Monit installieren und konfigurieren

Als nächstes installieren wir monit:

yum install monit

Dann erstellen wir die Systemstartlinks für monit:

chkconfig --levels 235 monit on

Die Standardkonfigurationsdatei von monit ist /etc/monit.conf, wo Sie einige Konfigurationsbeispiele finden können (weitere Konfigurationsbeispiele finden Sie unter http://mmonit.com/wiki/Monit/ConfigurationExamples), die alle auskommentiert sind, aber sie sagt monit Um auch im Verzeichnis /etc/monit.d nach Konfigurationsdateien zu suchen, erstellen wir daher, anstatt /etc/monit.conf zu modifizieren, eine neue Konfigurationsdatei /etc/monit.d/monitrc. In meinem Fall möchte ich proftpd, sshd, mysql, Apache und Postfix überwachen, ich möchte die Monit-Webschnittstelle auf Port 2812 aktivieren, ich möchte eine https-Webschnittstelle, ich möchte in to die Weboberfläche mit dem Benutzernamen admin und dem Passwort test, und ich möchte, dass monit E-Mail-Benachrichtigungen an [email protected] sendet, also sieht meine Datei so aus:

vi /etc/monit.d/monitrc
set daemon  60
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: [email protected] }
set alert [email protected]
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/sshd start"
   stop program  "/etc/init.d/sshd 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/mysqld start"
   stop program = "/etc/init.d/mysqld 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/httpd.pid
   group www
   start program = "/etc/init.d/httpd start"
   stop program  = "/etc/init.d/httpd 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

(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 www.example.com port 80 protocol http
      and request "/monit/token" then restart

was bedeutet, dass monit versucht, sich auf Port 80 mit www.example.com zu verbinden und versucht, auf die Datei /monit/token zuzugreifen, die /var/www/www.example.com/web/monit/token ist, weil das Dokumenten-Stammverzeichnis unserer Website ist /var/www/www.example.com/web. Wenn monit nicht erfolgreich ist, bedeutet dies, dass Apache nicht läuft und monit ihn neu starten wird. Jetzt müssen wir die Datei /var/www/www.example.com/web/monit/token erstellen und eine zufällige Zeichenfolge hineinschreiben:

mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/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. Das kann so aussehen:

vi /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:

/etc/init.d/monit start

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 ausfallen, und sendet Benachrichtigungs-E-Mails, wenn sich die Prozess-IDs von Diensten ändern usw.

Viel Spaß!

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

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. Installieren Sie Zenario mit Apache, PHP und MariaDB auf CentOS 7

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 7

Serverüberwachung mit Munin und Monit auf CentOS 7.2

Serverüberwachung mit munin und monit auf Fedora 7

Einrichten eines OpenVPN-Servers mit CentOS und Viscosity