Zabbix Distributed Monitoring

Distributed-Monitoring mit Nodes in 2.4 entfernt

In Version Zabbix 2.4 wurden die Funktionen zum Distributed-Monitoring mit Nodes entfernt. In den Release-Notes zur aktuellen Zabbix-Version steht dazu Folgendes:
Node-based distributed monitoring removed
Previously Zabbix supported two options for distributed monitoring - using nodes and proxies. In Zabbix 2.4.0 the support of node-based distributed monitoring has been discontinued due to existing limitations and potential problems with reliability in large environments.
While a new version of distributed monitoring may be considered and developed in the future, for the time being using proxies becomes the main distributed monitoring option in Zabbix. Furthermore, the proxy solution has proven itself over time as reliable, while also being easier in configuration and maintenance. Many users who initially had node-based distributed monitoring have switched to proxy-based setups.

Da die Zabbix-Version 2.2 als sogenannte LTS-Version erschienen ist, können Sie auf Basis von Zabbix 2.2 trotzdem ein verteiltes Monitoring mit Nodes aufbauen. Ob dies ratsam ist, sollten Sie aber gründlich prüfen.

Distributed Monitoring vs. Proxys

Mit dem sogenannten Distributed Monitoring bietet Zabbix die Möglichkeit, Netzwerke an unterschiedlichen Standorten mit mehreren Zabbix-Servern (Nodes) zu überwachen. Die Konfiguration aller Nodes kann dabei von einem zentralen Masternode vorgenommen werden. Die Nodes können eine hierarchische Struktur bilden. Alle Nodes übertragen die gesammelten Daten an den jeweils übergeordneten Node. Alle Nodes sind dabei autark. Auch wenn die Verbindung zwischen Master- und Child-Nodes zusammenbricht, arbeiten alle Nodes weiter. Nodes puffern die gesammelten Daten so lange, bis die Verbindung zum Master bzw. dem übergeordneten Node wieder hergestellt ist.

Bevor Sie mit der Installation eines verteilten Monitorings mit Nodes beginnen, beachten Sie folgende Rahmenbedingungen:

  • Sie müssen auf Zabbix Version 2.2 bleiben. Sie bekommen zwar Sicherheitsupdates für diese Version, die neuen Funktionen von Zabbix 2.4 und zukünftiger Versionen bleiben Ihnen aber vorenthalten.
  • Ein Node ist immer ein kompletter Zabbix-Server inklusive Datenbank und Webserver.
  • Die Konfiguration aller Nodes erfolgt in der Regel vom obersten Master. Jedes Child kann aber auch über die eigene Weboberfläche eingerichtet werden.
  • Die Daten werden zwar alle an den Master-Node übertragen, das Alarmieren, das heißt das Ausführen von Aktionen geschieht aber immer auf den Nodes selbst.
  • Aktionen, Benutzer, Graphen, Screens und Templates können nicht zentral verwaltet werden. Eine Übernahme von Templates ist über den Umweg des manuellen XML-Imports möglich. Aktionen und Benutzer müssen auf allen Nodes individuell eingerichtet werden.
  • Jeder Node braucht seine eigenen Medien. Sie müssen also für jeden Node einen Mailserver, ein SMS-Gateway etc. einrichten.

Unterschiede zum Zabbix-Proxy

Der Zabbix-Proxy funktioniert ähnlich wie die Nodes. Der Proxy sammelt Daten für einen Netzbereich und liefert diese auf dem Zabbix-Server ab. Ist die Verbindung zwischen Server und Proxy unterbrochen, puffert der Proxy die Daten so lange, bis diese wieder an den Server übergeben werden. Dennoch gibt es einige signifikante Unterschiede zur Funktionsweise der Nodes.

  • Proxys betreiben nur den sogenannten Data Poller. Die Verarbeitung der Daten erfolgt immer auf dem Server. Besteht keine Verbindung zwischen Server und Proxy, erfolgt keine Alarmierung.
  • Aktionen, Benutzer und Templates werden zentral verwaltet und können nicht individuell an bestimmte Proxys angepasst werden.
  • Der Zabbix-Proxy hat keine Weboberfläche und braucht dementsprechend keinen Webserver.
  • Der Zabbix-Proxy verbraucht viel weniger Ressourcen als ein kompletter Zabbix-Server (Node). Die Hardwareanforderungen sind entsprechend geringer.

Wenn Sie mit einem Administratorenteam arbeiten, welches alle Standorte betreut und wenn an allen Standorten ähnliche Vorgaben für die IT-Systeme gelten, sollten Sie Proxys verwenden. Sorgen Sie für eine entsprechend stabile Verbindung zwischen Proxy und Server. Im Falle, dass Sie einen Standort nicht mehr per Netzwerk erreichen, wird Zabbix dann ohnehin einen Alarm auslösen.

Wenn Sie mit mehreren lokalen Teams arbeiten und an den Standorten keine einheitlichen Vorgaben gelten, dann sind Nodes besser geeignet. Sie können die unterschiedlichen Anforderungen der Standorte abbilden.

Nodes installieren

Als Master-Node können Sie einen bereits im Einsatz befindlichen Zabbix-Server nehmen. Als Child-Node sollten Sie einen weiteren neuen Zabbix-Server installieren.

  • Installieren Sie die Nodes so, wie Sie auch Ihren Haupt-Zabbix-Server installiert haben.
  • Stoppen Sie den Prozess des Zabbix-Servers. Die Datenbank und der Webserver müssen weiter laufen.
  • Jeder Node braucht eine eindeutige ID. Tragen Sie die Node-ID in der Datei zabbix_server.conf ein.

Damit ein Distributed Monitoring funktioniert, müssen Änderungen an der Datenbank vorgenommen werden. Dies erreichen Sie durch einmaliges Ausführen des folgenden Kommandos:

# Auf dem Master mit NodeID 1
./zabbix_server -n 1 -c /etc/zabbix_server.conf

# Auf dem Child mit NodeID 2 
./zabbix_server -n 2 -c /etc/zabbix_server.conf

Je nachdem, wie viele Daten sich bereits in der Zabbix-Datenbank befinden, läuft das genannte Kommando sehr lange. Dieses Kommando startet nicht den Zabbix-Server.

Stellen Sie sicher, dass der Zabbix-Server die Nodes über den Port 10051 erreichen kann. Dazu müssen Sie ggf. den Wert für ListenIP in der Datei zabbix_server.conf ändern.

ListenPort=10051
ListenIP=0.0.0.0

Nachdem die Datenbanken konvertiert wurden, loggen Sie sich über das Webfrontend auf dem Master-Node ein. Klicken Sie im Hauptmenü auf Administration|DM. Wählen Sie im Dropdown-Menü oben rechts "Nodes" aus. In der Liste der Nodes sollte nun der Master-Node als "local node" schon eingetragen sein. Tragen Sie nun die IP-Adresse des Masters anstatt des Standardwertes 127.0.0.1 ein. Fügen Sie mit der Schaltfläche „New“ oben rechts nun einen Node hinzu. Tragen Sie die IP-Adresse des Child-Nodes ein und wählen Sie als Node-Type "Child" aus. Die Konfiguration des Masters ist damit abgeschlossen. Starten Sie nun den Zabbix-Server auf dem Master. Der Child-Server muss noch ausgeschaltet bleiben.

Hinzufügen eines Child zu einem Master

Loggen Sie sich nun auf dem Webfrontend des Child-Nodes ein. Wechseln Sie auch hier in das Menü der Nodes. Anstatt des Standardwertes 127.0.0.1 tragen Sie die IP-Adresse des Child-Nodes ein. Fügen Sie dann den Master-Node unter Angabe der IP-Adresse hinzu. Starten Sie anschließend den Zabbix-Server auf dem Child-Node.

Nun tauschen Master und Child regelmäßig die Daten aus. Das Child übernimmt die Konfiguration des Masters und übergibt die gesammelten Daten der überwachten Hosts an den Master.

Die Konfiguration nehmen Sie nun nur noch am Master vor. Den Webserver des Child-Nodes können Sie stoppen. Diesen brauchen Sie nur noch dann zu starten, wenn die Verbindung zwischen Master und Child unterbrochen ist und Sie nur noch über das lokale Frontend das Child konfigurieren können.

Sobald Sie einem Master ein Child hinzugefügt haben, erscheint oben rechts ein Dropdown-Menü zur Auswahl, über welches Sie festlegen, für welchen Node Sie eine Konfiguration vornehmen. Das vorhin hinzugefügte Child ist in dieser Liste per Standard ausgeblendet. Klicken Sie auf die Schaltfläche „Select Nodes“ und blenden Sie die gewünschten Nodes ein.

Für alle Konfigurationsaufgaben müssen Sie nun oben rechts einen Node auswählen. Die Konfiguration wird zuerst in der Datenbank des Masters gespeichert und dann zu den Kindern synchronisiert.

Im Menü Monitoring|Latest Data können Sie die Daten einzelner oder aller Nodes sehen. Die Ansicht enthält nun die zusätzliche Spalte "Node".

Übersicht über alle Daten von Master und Child