Verwendung von Icinga zur Überwachung Ihrer Server und Dienste unter Ubuntu 14.04

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:

Icinga Initial Overview

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:

  1. Überwachung „öffentlich zugänglicher Dienste“

  2. Überwachung über einen Agenten, der auf einem Remote-Host installiert ist, um Daten zu sammeln und an Icinga zu senden

Icinga Monitoring Methods

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_namedurch Ihren Remote-Hostnamen (in meinem Beispiel habe ich "wordpress-1" verwendet), den Wert vonaliasdurch 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 User Interface Example

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!