Zabbix Hostdiscovery und Autoregistration

Einleitung

Zabbix bietet zwei Funktionen, um Host automatisch ins Monitoring aufzunehmen. Hostdiscovery und Autoregistration. Mit beiden Funktionen können Sie Hosts automatisch in Zabbix hinzufügen, ohne dies über die Weboberfläche zu konfigurieren. Die Discovery Funktion bietet mehr Möglichkeiten als die Funktion Autoregistration. Dafür ist das Einrichten der Autoregistration mit wenigen Klicks erledigt.

Die Autoregistration wird vom Zabbix Agent angestoßen. Dieser Meldet sich beim Zabbix Server mit der Anfrage, ins Monitoring aufgenommen zu werden. Entspricht der anfragende Host den festgesetzten Regeln für die Autoregistration, wird er aufgenommen. Je nach Regeln, werden Templates zugeordnet und der Host in eine Gruppe einsortiert. Hosts ohne Zabbix Agent können keine Autoregistration durchführen.

Bei der Hostdiscovery scannte der Zabbix Server ein Netz ab. Entspricht ein gefundener Host einem Kriterium, wird dieser in Zabbix aufgenommen. Über Regeln legen Sie fest, in welche Gruppe ein gefundener Host einsortiert wird und welche Templates verwendet werden. Hosts, die Zabbix kennt, die bei Netzwerkscans aber nicht mehr gefunden werden, können automatisch aus Zabbix entfernt werden.

Autoregistration

Trapper aktivieren

Damit die Autoregistration funktioniert, muss der Zabbix Server Trapperanfragen akzeptieren. Der Trapper-Prozess nimmt die Anfrage nach einer automatischen Registrierung entgegen, und leitet diese an eine Aktion weiter. Die Einstellungen des Zabbix Servers müssen wie bei den Aktiven Agent Cheks vorgenommen werden. Es muss mindestens ein Trapper Process auf dem Zabbix Server laufen. Der Host, der sich automatisch registriert, muss den Port 10051 des Zabbix Servers erreichen. Wenn Sie die Default-Einstellungen verwenden, dann sind fünf Trapper aktiv, und Sie müssen keine Einstellungen ändern. Funktioniert die Autoregistration nicht, dann prüfen Sie folgende Einstellungen in der Datei zabbix_server.conf:

### Option: StartTrappers
#       Number of pre-forked instances of trappers.
#
# Mandatory: no
# Range: 0-1000
# Default:
StartTrappers=5

### Option: ListenPort
#       Listen port for trapper.
#
# Mandatory: no
# Range: 1024-32767
# Default:
ListenPort=10051

### Option: ListenIP
#       List of comma delimited IP addresses that the trapper should listen on.
#       Trapper will listen on all network interfaces if this parameter is missing.
#
# Mandatory: no
# Default:
ListenIP=0.0.0.0

Regeln festlegen

Die automatische Registrierung von Hosts ist standardmäßig deaktiviert. Zum aktivieren dieser Funktion wählen Sie über das Hauptmenü Configuration|Actions aus, und wählen oben rechts als Event Source "Auto registration" aus. Mit dem Button "Create Action" legen Sie eine neue Aktion für das automatische Hinzufügen von Hosts an.

Geben Sie der neuen Regel einen Namen, z.B. "Autoregistration". Wenn Sie über jeden neu hinzugefügten Host per Email informiert werden möchten, können Sie wie bei allen anderen Aktionen Betreff und Text mit Macros anpassen. (Siehe Macros im Kapitel [[1]])

Über den Reiter Conditions legen Sie fest, ob der sich registrierende Host bestimmte Voraussetzungen erfüllen muss. Die Möglichkeiten sind aber sehr beschränkt. Sie können prüfen, ob der Hostname einem Muster entspricht, oder ob sich der Host über einen bestimmten Proxy registriert. Der Hostname wird vom anfragenden Zabbix Agent übermittelt, und kann in der Datei zabbix_agentd.conf eingetragen sein. Ist kein Hostname angeben, wird der Systemname verwendet. Wenn Sie keine Konditionen angeben, werden alle Hosts akzeptiert.

Über den Reiter Operations legen Sie anschließend fest, was bei einer automatischen Registrierung passieren soll. Über den Link "New" fügen Sie Aktionen hinzu, wie Sie es auch bei der Konfiguration von Alarmen getan haben. Mit der bekannten Aktionen "Send message" können Sie sich über den neuen Host per Email informieren lassen.

Mit der Aktion "Add host" wird der Host zu Zabbix hinzugefügt und in die Gruppe "discovered hosts" einsortiert. Alternativ können Sie den Host mit der Aktion "Add to host group" auch in eine beliebige Gruppe einsortieren.

Mit "Link to template" weisen Sie dem Host ein Template zu. Der Host wird dann sofort gemonitored. Wenn Sie das sofortige Monitoren verhindern wollen, fügen Sie zusätzlich die Aktion "disable host" hinzu. Sie sollten nur sehr allgemeine Templates automatisch hinzufügen, da der Prozess der Autoregistration keine weiteren Checks durchführt um z.B. gestartete Dienste zu erkennen.

Aktion zum automatischen Hinzufügen von Hosts, sobald der Zabbix Agent sich meldet.

Sobald Sie die Regel für die Autoregistration gespeichert haben, nimmt der Zabbix Server alle Hosts auf, die den Regeln entsprechen. Anhand des vom Agenten gesendeten Hostnamen wird entschieden, ob der Host bereits bekannt ist oder noch hinzugefügt werden muss.

Wenn Sie einen automatisch registrierten Host löschen, wird dieser sofort wieder hinzugefügt, solange der Zabbix Agent auf den betroffenen System läuft.

Discovery

Neben der Funktion Autoregistration gibt es noch die Funktion Discovery, die ein ähnliches Ziel verfolgt. Hosts werden automatisch erkannt und zu Zabbix hinzugefügt. Im Gegensatz zur Autoregistration setzt die Discovery-Funktionen keinen Zabbix Agenten voraus, der das Hinzufügen des Hosts auslöst.

Das automatische Finden von Host besteht streng genommen aus zwei Funktionen. Winem regelmäßigen Netzwerkscan (Discovery) und einer Aktion, die für gefunden Hosts angewendet wird.

Netz scannen

Bevor der Zabbix Server ein Netzsegment scannen kann, müssen Sie sicher stellen, dass auch mindestens ein passender Serverprozess gestartet wurde. Die Standardeinstellungen starten einen Prozess zum scannen, was für den Anfang ausreichend ist. Öffnen Sie trotzdem sicherheitshalber die Datei zabbix_server.conf und prüfen Sie folgende Einstellung:

### Option: StartDiscoverers
#       Number of pre-forked instances of discoverers.
#
# Mandatory: no
# Range: 0-250
# Default:
# StartDiscoverers=1

Über das Hauptmenü Configuration|Discovery legen Sie mit dem Button "Create Rule" einen neuen Netzwerkscanner an.

Regel zum Scannen des Netzwerkes.

Geben Sie der Scanregel einen Namen, z.B. "Scan DMZ". Über diesen Namen identifizieren Sie später die Scanergebnisse. Es ist hilfreich, wenn aus dem Namen der Regel hervorgeht, welche Netzsegment gescannt wurde.

Soll das Netzsegment von einem Proxy gescannt werden, so wählen Sie diesen über das Dropdown "Discovery by proxy" aus. Auf dem Proxy muss auch in der Konfiguration StartDiscoverers=1 oder höher gesetzt sein.

In Feld IP range tragen Sie ein, was gesannt werden soll. Sie können die Range in folgenden Formaten eintragen:

  • Einzelne IP, z.B. 192.168.1.33
  • Bereich von IP Addressen, z.B. 192.168.1.1-255
  • Netz mit Netzmaske, z.B. 192.168.4.0/24
  • Liste, z.B. 192.168.1.1-255,192.168.2.1-100,192.168.2.200,192.168.4.0/24

Über das Delay legen Sie fest, in welchem zeitlichen Abstand die Scanns erfolgen sollen.

Sie müssen im Feld Checks mindestens einen Check angeben, über den Host gefunden werden sollen. Sie sind dabei nicht nur auf ICMP Pings beschränkt. Sie können auch gezielt nach Hosts suchen, die z.B. einen offenen Port 22 haben. So können Sie gezielte Discovery Regeln erstellen, die unterschiedliche Aktionen auslösen. Wenn Sie den Check TCP auswählen, können Sie Ports mit Komma oder Portranges mit Minuszeichen getrennt angeben. Z.B. 22,80-100,3389
Ein Host gilt als gefunden (discovered), wenn mindestens ein Check erfolgreich war. Es ist ratsam schon während des Discovery-Vorgangs eine Reihe von Ports zu scannen, denn auf Checks des Discovery-Vorgangs wenden Sie später die Regeln an, welche z.B. passende Templates hinzufügen.

Wenn Sie als Check Zabbix Agent hinzufügen, dann fragt der Zabbix Server sofort nach dem Auffinden des Hosts den Agent ab. Alle Items, die Sie der Discovery Rule hinzufügen, können Sie später als Bedingung zum Ausführen von Aktionen nutzen. Wenn Sie z.B. das Item mysql.ping abfragen, können Sie bei einer erfolgreiche Verbindung der Datenbank, dem Host das Template mysql zuweisen.

Wenn Sie beim Auffinden der Hosts den Zabbix Agenten nicht prüfen, dann wird nur anhand der IP Adresse entschieden, ob der Host schon bekannt ist, oder nicht. Die Einstellung Device uniqueness criteria können Sie folglich nicht ändern.
Befindet sich hingegen mindestens ein Check vom Type Zabbix Agent in der Liste der Checks, können Sie auch über den vom Zabbix Agent gelieferten Item Value entscheiden, ob der Host schon bekannt ist. Das Item system.hostname bietet sich an.

Wenn Sie eine neue Regel zum Scannen anlegen, sollten Sie diese Regel mit dem Schalter Status erst einmal deaktivieren. Legen Sie zuerst die passenden Aktion an, die die Ergebnisse des Scans verarbeitet. Das sofortige scannen des Netzwerkes ohne Aktionen bringt nicht viel.

Über Latest Data/Discovery kann man den Status des Netzwerscans beobachten.

Scanergebnisse verarbeiten

Sobald der Zabbix Server per Netzwerkscan einen noch unbekannten Hosts gefunden hat, sucht der Discovery-Prozess nach passenden Aktionen für den neuen Host. Erst durch eine Aktion, werden gefunden Hosts als überwachte Hosts im Zabbix Server angelegt. Der Zabbix Server führt alle Aktionen aus, deren Bedingungen auf einen Host zutreffen. Sie können das Hinzufügen neuer Hosts auf mehrere Aktionen verteilen. So kann z.B. eine erste allgemeine Aktion den Host hinzufügen. Weitere Aktionen werten dann auf dem Host gefundene Dienste aus, und weisen passende Templates zu.

Klicken Sie im Hauptmenü auf Configuration|Actions und wählen Sie im Dropdown oben rechts "Discovery" als Event Source aus. Klicken Sie anschließend auf "Create Action". Sie erhalten das gewohnte Formular zum anlegen einer Aktion. Die Angabe eines Names für die Aktion ist Pflicht. Betreff und Nachricht müssen Sie nur angeben, wenn Sie für jeden gefundenen Host eine Nachricht verschicken wollen. Die Verwendung von Macros erfolgt wie bei allen Aktionen.

Im Reiter Conditions wählen über das Dropdown "New Condition" aus, welche Bedingungen der gefundene Host erfüllen soll. Folgende Kriterien stehen als Bedingungen zu Auswahl:

Host IP
Angabe von IPs oder Ranges. Format wie bei der Angabe der Ranges für die Discovery Regeln.
Service Type
Die Bedingung wird erfüllt, wenn der ausgewählte Service auf dem gefundenen Host zur Verfügung steht. Sie können z.B. eine generelle Discovery Regel anlegen, welche eine Reihe von Ports (Services) prüft. Dann legen Sie mehrere Aktionen an, die je nach gefundenem Service, passende Templates zuordnen. Sie können nur auf Services prüfen, die während des Netzwerkscans (Discovery Check) gesucht wurden.
Service Port
Wenn Sie als Service Type TCP auswählen, legen Sie über den Service Port fest, welche TCP Ports geprüft werden sollen. Auch hier gilt: Es können nur Port geprüft werden, die der Discovery Prozess vorher gesucht hat.
Discovery Rule
Sie können eingrenzen, für welche Discovery Rule die Aktion gelten soll. Sie können z.B. pro Netzwerksegment eine Discovery Regel anlegen, die dann jeweils eigene Aktionen zum Verarbeiten der Resultate haben.
Discovery Check
Diese Bedingung wird erfüllt, wenn der ein spezieller Check einer Discovery Rule erfolgreich war.
Discovery Object
@Todo:was ist das?
Discovery Status
@Todo:was ist das?
Uptime/Downtime
@Todo:Beispiel
Received Value
Über diese Bedingung werden die Rückgabewerte (Item Values) vom Zabbix Agent mit einem Muster verglichen. Dieses Muster wird in allen Item Values gesucht, die von der Discovery Rule abgerufen wurden. Wenn das Muster auf eines der Item Values passt, gilt die Bedingung als erfüllt. Es ist nicht möglich einzelne Items Values gezielt in der Bedingung anzugeben.
Proxy
Sie können angeben, ob eine Aktion nur für Hosts ausgeführt wird, die über einen speziellen Proxy gefunden wurden.

Über den Reiter Operations stehen die selben Operationen wie bei der Autoregistration zur Verfügunug. Zusätzlich gibt es aber die Möglichkeit, Hosts aus Zabbix zu entfernen oder Templates von Host zu entfernen.

Aktionen für das Verarbeiten von Netzwerkscans (Discovery)