Einführung
In diesem Tutorial werden wir die Installation von Icinga, einem Open-Source-Überwachungssystem, auf Ubuntu 14.04 behandeln. Wir werden einige grundlegende Konfigurationsschritte behandeln, damit Sie Netzwerkdienste und Hostressourcen über die Webschnittstelle überwachen können. Wir werden auch den Nagios Remote Plugin Executor (NRPE) verwenden, der als Agent auf Remote-Systemen installiert wird, um deren lokale Ressourcen (Festplattennutzung, Anzahl der angemeldeten Benutzer usw.) zu überwachen.
Icinga ist ein beliebtes Open-Source-Überwachungssystem, das Hosts und Dienste überprüft und Sie über deren Status informiert. Icinga ist eine Abzweigung von Nagios, daher sind sie kompatibel und weisen viele Gemeinsamkeiten auf. Aufgrund eines agileren Entwicklungszyklus im Vergleich zu Nagios hat sie an Popularität gewonnen.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie root-Zugriff auf ein Ubuntu 14.04 VPS. Anweisungen zum Einrichten finden Sie hier (Schritte 3 und 4):Initial Server Setup with Ubuntu 14.04.
Wenn Sie die E-Mail-Benachrichtigungsfunktion einrichten möchten, müssen Sie Postfix ordnungsgemäß konfigurieren. Anweisungen dazu finden Sie hier:How To Install and Setup Postfix on Ubuntu 14.04. Postfix wird zusammen mit den Icinga-Paketen installiert, kann jedoch nach dem Einrichten von Icinga konfiguriert werden.
Installieren Sie Icinga
Wir werden Icinga mit Paketen installieren. Außerdem werden wir MySQL als DBMS verwenden - PostgreSQL, SQLite und Oracle sind die anderen unterstützten Optionen.
Führen Sie den folgenden Befehl aus, um die Icinga-PPA zu Ihrem Paketmanager hinzuzufügen:
sudo add-apt-repository ppa:formorer/icinga
Dann aktualisieren Sie Ihre apt Paketdatenbank:
sudo apt update
Installieren Sie nun Icinga und MySQL mit apt:
sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client
Nun werden Sie mit einer Reihe von Eingabeaufforderungen bezüglich Ihrer Icinga-Installation konfrontiert. Hier ist eine Liste der Eingabeaufforderungen und wie Sie darauf antworten sollten:
-
MySQL-Konfiguration: Geben Sie ein neues MySQL-Root-Passwort ein
-
PostFix Konfiguration: Wählen Sie "Internet Site"
-
PostFix-Konfiguration: Geben Sie Ihren vollqualifizierten Domain-Namen ein (zum Beispiel example.com)
-
Icinga-cgi konfigurieren: Geben Sie das Passwort des Benutzers "icingaadmin" ein (Login für den Zugriff auf Icinga).
-
Icinga-common konfigurieren: Geben Sie "Nein" ein, um externe Befehle zu aktivieren
-
Icinga-idoutils konfigurieren: Geben Sie "Ja" ein, um die Datenbank für icinga-idoutils mit dbconfig-common zu konfigurieren
-
Icinga-idoutils konfigurieren: Wählen Sie "mysql" als Datenbanktyp
-
Icinga-idoutils konfigurieren: Geben Sie das MySQL-Root-Passwort ein (das Sie soeben vergeben haben)
-
Icinga-idoutils konfigurieren: Geben Sie ein neues Benutzerkennwort für die icinga-idoutils-Datenbank ein
Icinga ist jetzt installiert, aber wir müssen noch einige Dinge konfigurieren, bevor wir es starten können. Beachten Sie, dass Apache HTTP-Server und Postfix als Teil dieses Prozesses installiert wurden.
Fügen Sie den Apache-Benutzer (www-data) zur Nagios-Gruppe hinzu:
sudo usermod -a -G nagios www-data
Aktivieren Sie den ido2db-Dämon für den Start beim Start, der Icinga-Ereignisse und -Konfigurationen in der Datenbank speichert. Bearbeiten Sie die Icinga-Standardkonfiguration:
sudo vi /etc/default/icinga
Ändern Sie den Wert vonIDO2DB
inyes, sodass er wie folgt aussieht:
IDO2DB=yes
Speichern und Beenden. Starten Sie nun den Dienst vonido2db
:
sudo service ido2db start
Aktivieren Sie das Modul idomod, indem Sie die Beispieldatei idoutils.cfg in die aktive Konfiguration von Icinga kopieren:
sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
Jetzt ist Icinga konfiguriert und kann gestartet werden:
sudo service icinga restart
Probieren wir die Icinga-Benutzeroberfläche aus.
Zugriff auf die Icinga-Benutzeroberfläche
Gehen Sie zuhttp://yourhost/icinga und melden Sie sich mit demicingaadmin-Login an, das Sie während der Icinga-Installation eingerichtet haben.
Sie sollten sehen, dass Icinga einen Host,localhost (Ihren Icinga-Server) und sieben Dienste wie folgt überwacht:
In der oberen Zeile wird angezeigt, dass der einzelne überwachte Host "Up" ist, und in der unteren Zeile werden sieben überwachte "OK" -Dienste angezeigt.
Wenn der Status vonlocalhost "Down" ist, müssen Sie möglicherweise die Berechtigungen Ihres Ping-Befehls ändern. Führen Sie den folgenden Befehl aus, damit der Benutzer vonnagiosden Befehl ping verwenden kann:
sudo chmod u+s `which ping`
Fügen wir weitere zu überwachende Hosts und Services hinzu!
Möglichkeiten zur Überwachung mit Icinga
Es gibt zwei Möglichkeiten, Hosts und Dienste mit Icinga zu überwachen:
-
Überwachung „öffentlich zugänglicher Dienste“
-
Überwachung über einen Agenten, der auf einem Remote-Host installiert ist, um Daten zu sammeln und an Icinga zu senden
Bei der ersten Methode beziehen sich öffentlich verfügbare Dienste auf Dienste, auf die über das lokale Netzwerk oder das Internet zugegriffen werden kann. Häufige Beispiele sind HTTP, Mail, SSH und ICMP-Ping. Diese Methode eignet sich zum Überwachen von Systemen, auf denen Sie keinen Agenten installieren können (oder möchten), sowie zum Überwachen von Benutzer-Netzwerkschnittstellen.
Um die zweite Methode zu implementieren, installieren wir NRPE als Agent auf Remote-Hosts, um deren lokale Ressourcen zu überwachen. Auf diese Weise kann Icinga beispielsweise die Festplattennutzung, laufende Prozesse und andere Systemstatistiken überwachen, die mit der ersten Methode nicht erreicht werden können.
Methode 1: Überwachen öffentlich verfügbarer Dienste
Da die erste Methode lediglich Überwachungsdienste überwacht, erfolgt die Konfiguration für diese Methode ausschließlich auf dem Icinga-Server. Mit dieser Methode können verschiedene Dinge überwacht werden. Wir zeigen daher, wie eine öffentliche Schnittstelle eines Webservers überwacht wird.
Erstellen Sie mit diesem Befehl eine Datei mit dem Namen Ihres Hosts (ersetzen Sieyourhost
durch Ihren eigenen Hostnamen):
sudo vi /etc/icinga/objects/yourhost.cfg
Fügen Sie nun Folgendes hinzu und ersetzen Sie die Werte vonhost_name
durch Ihren eigenen Hostnamen (an beiden Stellen),alias
durch eine Beschreibung des Hosts undaddress
durch den Wert der öffentlichen IP Ihres Hosts Adresse:
define host {
use generic-host
host_name web-1
alias A Web Server
address 107.170.xxx.xxx
}
define service {
use generic-service
host_name web-1
service_description HTTP
check_command check_http
}
Jetzt speichern und beenden. Laden Sie Ihre Icinga-Konfiguration neu, damit die Änderungen wirksam werden:
sudo service icinga reload
Methode 2: Überwachen über einen Agenten
Wie bereits erwähnt, werden wir NRPE als unseren Agenten verwenden, um Remote-Host-Daten für Icinga zu erfassen. Dies bedeutet, dass NRPE auf allen Hosts installiert sein muss, die mit dieser Methode überwacht werden, und der Icinga-Server muss auch so konfiguriert sein, dass er Daten für jeden Host empfängt.
Lassen Sie uns die Installation von NRPE durchgehen.
Installieren von NRPE auf einem Remote-Host
Aktualisieren Sie apt auf einem Host, den Sie überwachen möchten:
sudo apt update
Installieren Sie nun die NRPE- und Nagios-Plugins:
sudo apt install nagios-plugins nagios-nrpe-server
Suchen Sie den Namen Ihres Root-Dateisystems (da es sich um eines der Elemente handelt, die wir überwachen möchten):
df -h /
Wir werden den Dateisystemnamen in der NRPE-Konfiguration verwenden, um die Festplattennutzung zu überwachen (wahrscheinlich/dev/vda
). Öffnen Sie nun nrpe.cfg zum Bearbeiten:
sudo vi /etc/nagios/nrpe.cfg
Die NRPE-Konfigurationsdatei ist sehr lang und voller Kommentare. Es gibt einige Zeilen, die Sie suchen und ändern müssen:
-
server_address: Auf die private IP-Adresse dieses Hosts setzen
-
allowed_hosts: Stellen Sie die private IP-Adresse Ihres Icinga-Servers ein
-
command[check_hda1]: Ändern Sie
/dev/hda1
in ein beliebiges Root-Dateisystem
Die drei oben genannten Zeilen sollten folgendermaßen aussehen (ersetzen Sie die entsprechenden Werte):
server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
Beachten Sie, dass in dieser Datei mehrere andere „Befehle“ definiert sind, die ausgeführt werden, wenn der Icinga-Server für deren Verwendung konfiguriert ist. Beachten Sie auch, dass NRPE Port 5666 überwacht, daserver_port=5666
eingestellt ist. Wenn Sie Firewalls haben, die diesen Port blockieren, müssen Sie ihn für Ihren Icinga-Server öffnen.
Speichern und Beenden. Starten Sie dann NRPE neu, damit die Änderungen wirksam werden:
sudo service nagios-nrpe-server restart
Nachdem Sie NRPE auf den zu überwachenden Hosts installiert und konfiguriert haben, müssen Sie diese Hosts zu Ihrer Icinga-Serverkonfiguration hinzufügen, bevor Sie mit der Überwachung beginnen können.
Hinzufügen eines Remote-Hosts zur Icinga-Serverkonfiguration
Erstellen Sie auf Ihrem Icinga-Server eine neue Konfigurationsdatei für jeden der Remote-Hosts, die Sie in/etc/icinga/objects
überwachen möchten. Ersetzen Sieyourhost durch den Namen Ihres Hosts:
sudo vi /etc/icinga/objects/yourhost.cfg
Fügen Sie in der folgenden Hostdefinition den Wert vonhost_name
durch Ihren Remote-Hostnamen (in meinem Beispiel habe ich "wordpress-1" verwendet), den Wert vonalias
durch eine Beschreibung des Hosts undaddress
Wert mit der privaten IP-Adresse des Remote-Hosts:
define host {
use generic-host
host_name wordpress-1
alias My first wordpress server
address 10.128.xxx.xxx
}
Fügen Sie dann einen dieser Serviceblöcke für die Services hinzu, die Sie überwachen möchten. Beachten Sie, dass der Wert voncheck_command
bestimmt, was überwacht wird, einschließlich der Statusschwellenwerte. Hier einige Beispiele, die Sie zur Konfigurationsdatei Ihres Hosts hinzufügen können:
Klingeln:
define service {
use generic-service
host_name wordpress-1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
SSH (notifications_enabled auf 0 gesetzt deaktiviert Benachrichtigungen für einen Dienst):
define service {
use generic-service
host_name wordpress-1
service_description SSH
check_command check_ssh
notifications_enabled 0
}
Belastung:
define service {
use generic-service
host_name wordpress-1
service_description Current Load
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
Derzeitige Nutzer:
define service {
use generic-service
host_name wordpress-1
service_description Current Users
check_command check_users!20!50
}
Festplattenplatz:
define service {
use generic-service
host_name wordpress-1
service_description Disk Space
check_command check_all_disks!20%!10%
}
Wenn Sie sich fragen, wasuse generic-service
bedeutet, erbt es einfach die Werte einer Dienstvorlage namens "generischer Dienst", die standardmäßig definiert ist.
Jetzt speichern und beenden. Laden Sie Ihre Icinga-Konfiguration neu, damit die Änderungen wirksam werden:
sudo service icinga reload
Nachdem Sie Icinga so konfiguriert haben, dass alle Ihre Remote-Hosts überwacht werden, überprüfen Sie die Benutzeroberfläche.
Beispiel für eine Benutzeroberfläche
Nachdem Sie eine Überwachung auf einigen Hosts mit einer der beiden Überwachungsmethoden eingerichtet haben, rufen Sie Ihre Icinga-Benutzeroberfläche auf (http://youricingaserver.com/icinga, acingaadmin-Anmeldung) und klicken Sie dann auf den Link Service Detail. Sie sollten eine Liste aller Dienste sehen, für die Sie die Überwachung eingerichtet haben.
Beispiel: Hier sind zwei Hosts, die mithilfe der oben beschriebenen Konfigurationsdateien überwacht werden. Der HTTP-Dienst vonweb-1wird über seinen normalen HTTP-Port überwacht. Dies zeigt an, dass sein Webserver mit dem StatusOKantwortet, undwordpress-1 zeigt an, dass alle überwachten DiensteOKind. s.
Icinga verfügt über eine Vielzahl von Funktionen. Sie können also auf der Benutzeroberfläche nachsehen, was Sie über Ihre Hosts und Services herausfinden können.
Fazit
Nachdem Sie Ihre Hosts und einige ihrer Services überwacht haben, möchten Sie möglicherweise einige Zeit damit verbringen, herauszufinden, welche Services für Sie von entscheidender Bedeutung sind, damit Sie diese überwachen können. Möglicherweise möchten Sie auch Benachrichtigungen einrichten, damit Sie beispielsweise eine E-Mail erhalten, wenn Ihre Datenträgernutzung eine Warnung oder einen kritischen Schwellenwert erreicht oder Ihre Hauptwebsite heruntergefahren ist, sodass Sie die Situation umgehend oder sogar bevor ein Problem auftritt beheben können.
Viel Glück!