# Zabbix

Zabbix ist ein Open-Source-Netzwerk-Monitoringsystem, welches hauptsächlich von Alexei Vladishev entwickelt wurde. Inzwischen wird Zabbix von der Firma Zabbix SIA weiterentwickelt. Es dient der Überwachung von IT-Infrastrukturen. 2001 wurde die erste Version veröffentlicht.

## Komponenten

Grundsätzlich unterteilt sich Zabbix in den Zabbix-Server, den Zabbix-Proxy, den Zabbix-Agent, das Webinterface und ein Datenbank-Backend.
Die Server-Software wiederum besteht aus mehreren verschiedenen Subprozessen, welche alle auf derselben oder separaten Maschine(n) laufen können, wodurch Zabbix sehr gut skaliert und somit auch für sehr große Infrastruktur-Umgebungen geeignet ist.

### Server

Der Server ist zuständig für das Sammeln und Auswerten der Monitoring-Daten. Gesammelte Daten werden in einer Datenbank gespeichert.
Die Geräte können passiv per SNMP/IPMI, ssh oder einfach nur via Ping abgefragt werden, die Daten können aber auch durch den Zabbix-Agent aktiv auf den Hosts erhoben werden. Zudem können normierte Daten (Zeitstempel, Variable, Wert) mit dem Zabbix Sender aktiv an den Server gesendet werden.
Überschreiten die erfassten Werte bestimmte Schwellenwerte, kann der Zabbix-Server Aktionen auslösen, wie z. B. Benachrichtigungen versenden oder Maßnahmen direkt auf den überwachten Systemen durchführen.
Es ist eine „Discovery“-Funktion integriert, mit welcher neue Geräte im Netzwerk erkannt und automatisch dem Monitoring hinzugefügt werden können.
Der Zabbix Server kann auf allen UNIX-ähnlichen Betriebssystemen installiert werden, benötigt für seinen Betrieb aber noch eine Datenbank. Dafür kommen alle gängigen SQL-Datenbank-Systeme in Frage:
* MySQL / MariaDB
* PostgreSQL
* Oracle RDBMS
* SQLite
* IBM DB2
* TimescaleDB
* Elasticsearch (Experimentell, für History-Daten)
Der Zabbix-Server besteht aus diversen Sub-Prozessen. Wie viele dieser Prozesse jeweils laufen, lässt sich in der Regel in der zabbix_server.conf einstellen.
Im Einzelnen sind dies:

#### poller

    sammelt die Daten vom Zabbix-Agent

#### unreachable poller

    prüft, ob nicht erreichte Hosts immer noch nicht erreichbar sind

#### trapper

    nimmt alle eingehenden Daten von aktiven Zabbix-Agents/-Proxys an

#### icmp pinger

    pingt einzelne Hosts an

#### alerter + alert manager

    sind für das Senden von Benachrichtigungen verantwortlich

#### housekeeper

    Aufräum-Job, löscht alte Daten

#### history syncer

    schreibt die gesammelten Daten in die Datenbank

#### proxy poller

    sammelt die Daten von den passiven Proxys

#### http poller

    prüft die Erreichbarkeit und ggf. Rückgabecode von Webservern/-seiten (Webseitenmonitoring)

#### ipmi poller

    sammelt die Daten per [IPMI]

#### vmware collector

    zuständig für das VMware-Monitoring

#### timer

    ist für zeitabhängige Trigger zuständig

#### db watchdog

    prüft, ob die Datenbank verfügbar ist – wenn nicht, wird dies protokolliert und (konfigurationsabhängig) eine Benachrichtigung versandt

#### escalator

    zuständig für das Eskalieren der einzelnen Auslöser

#### discoverer

    zuständig für Netzwerkscan („Autodiscovery“)

#### preprocessing manager + worker

    zuständig für Vorverarbeitung von Daten, bevor diese in den History-Cache geschrieben werden

### Webinterface

Das komplette Monitoring wird über ein in PHP geschriebenes Web-Interface verwaltet, so dass ein normaler Browser als Client ausreicht. Mittels Kombination von Hosts/Actions/Items/Triggers kann jedes erdenkliche Szenario zum Erfassen von Daten realisiert werden. Vor allem die Darstellung von Hosts auf Karten (Maps) verschiedenster Art (Landkarten, Infrastrukturplänen etc.) ist bereits von Haus aus integriert und sehr komfortabel gelöst. Eine JSON-Schnittstelle bietet die Möglichkeit zur Automatisierung der Verwaltung des Gesamtsystems.
Für jedes „Item“ (ein zu erfassender Wert) kann nach Belieben ein Zeitgraph direkt aufgerufen oder aber selbst definiert werden. Mehrere Graphen können frei konfigurierbar auf einer Übersichtsseite (heute auch als „Dashboard“ bezeichnet) dargestellt werden. Für die verschiedenen Applikationen gibt es fertige Templates, so dass der initiale Aufwand zur Konfiguration der „Items“ von Zabbix minimal ist.
Für externes Alarmhandling gibt es die Möglichkeit, „Events“ per E-Mail, Jabber oder SMS/GSM zu versenden. Auch können eigene Scripts integriert werden, die besondere Formen der Benachrichtigung umsetzen.

### Passives oder agentenfreies Monitoring

Ohne Softwareinstallation auf den zu überwachenden Hosts kann der Zabbix-Server Daten seiner Schützlinge per SNMP, IPMI oder WMI (ab Zabbix 2.2) erheben. Einfache Prüfungen wie z. B. auf offene Ports und/oder Antwortzeiten von Webseiten können ebenfalls im Zabbix-Server direkt konfiguriert werden.
Ab der Version 2.2 kann Zabbix mittels JMX-Schnittstelle Java-Applikationsserver (wie JBoss oder Apache Tomcat) überwachen.

### Aktiv – mit Agent

Reicht das Monitoring per Ping, IPMI oder SNMP nicht aus, installiert man den Zabbix-Agent auf dem zu überwachenden Rechner. Dabei handelt es sich um ein (C-)Programm, das wesentlich mehr und z. T. auch genauere Daten auf dem Host erhebt, und sie an den Zabbix-Server sendet. Die Verbindung zwischen Zabbix-Server/Proxy und Zabbix-Agent sowie zwischen Zabbix-Server und -Proxy kann ab Version 3.0 verschlüsselt werden. Auch ist es möglich mit dem Agent über sogenannte „Aktionen“ Scripts/Befehle direkt auf dem überwachten Host auszuführen.
Die Agents sind für folgende Plattformen vorkompiliert verfügbar:
* AIX
* FreeBSD
* HP-UX
* Linux
* OpenBSD
* NetBSD
* Solaris
* macOS
* Windows

### Proxy

Eine Zabbix-Installation kann über Zabbix-Proxies auf mehrere Standorte oder getrennte Netzwerke verteilt werden. Zabbix-Proxys synchronisieren sich regelmäßig mit dem Zabbix-Server und führen das Monitoring stellvertretend für den Haupt-Zabbix-Server aus. Auf diese Weise kann der Zabbix-Server entlastet werden.

## Zabbix SIA

Die Zabbix SIA wurde 2005 mit dem Fokus auf professionellen technischen Support für Zabbix gegründet. Es werden Partner-Programme, Integrationsdienste sowie Update-Services angeboten.
Zabbix stand bis Version 6.4 unter der GNU GPL Version 2, danach unter der Lizenz AGPL-3.0, und ist somit freie Software.

### Trainings

Es werden auch global verfügbare Schulungen in mehreren Sprachen angeboten.