Zabbix Proxy installieren und verwenden

Was ist der Zabbix-Proxy?

Zum Überwachen großer oder verteilter Netzwerke können Sie Zabbix-Proxys verwenden. Ein Proxy ist für eine Liste von Hosts verantwortlich. Diese Hosts werden nur vom entsprechenden Proxy abgefragt. Der Proxy leitet alle Daten an den Zabbix-Server weiter.
Der Einsatz eines Proxys ist immer dann sinnvoll, wenn der Zabbix-Server Hosts aufgrund von Routing oder Firewalls nicht erreichen kann. Der Einsatz eines Proxys bietet sich auch an, wenn Satellitensysteme außerhalb Ihres Netzwerkes Webseiten oder andere Ressourcen von außen überwachen sollen.
Aber auch zur Reduzierung der Datenbanklast auf dem Server kann man Proxys einsetzen. Bei vielen überwachten Hosts kann das sehr sinnvoll sein. Da der Proxy die gesammelten Daten in einem großen Block überträgt, muss die Datenbank wenige große Inserts und Updates verarbeiten, was weniger Last produziert als viele kleine Operationen.

In Kombinationen mit sogenannten Reverse-Tunneln (SSH, OpenVPN) können Sie mit Proxys auch Netzwerke überwachen, die nur über eine Verbindung mit einer dynamischen IP-Adresse erreicht werden.

Überwachung von entfernten Netzwerken mit dem Zabbix-Proxy

Ein Proxy ersetzt komplett den Zabbix-Server. Aus diesem Grund muss ein Proxy mit denselben Optionen kompiliert werden wie der Server. Wenn Sie zum Beispiel Hosts per SNMP überwachen, dann muss der Proxy auch mit SNMP-Unterstützung gebaut werden.

Wenn Sie einen Proxy verwenden, beachten Sie Folgendes:

  • In der Konfiguration des Agenten muss als Server der Proxy eingetragen sein.
  • Wenn Sie den Zabbix-Sender oder einen aktiven Zabbix-Agenten verwenden, akzeptiert nur der Proxy die gesendeten Daten. Der Zabbix-Server weist die Daten ab.
  • Wenn Sie einen Host per Proxy überwachen, werden alle Checks vom Proxy ausgeführt. Es ist nicht möglich, einzelne Checks doch vom Server auszuführen.
  • Wenn Sie External Scripts auf dem Server verwenden, müssen alle Skripte auch auf dem Proxy hinterlegt sein.
  • Konfigurationen, die Sie über die Webgui auf dem Server vornehmen, erreichen die Proxys mit Verzögerung.
  • Zabbix-Server und -Proxy können unterschiedliche Datenbanken verwenden. Der Datenaustausch erfolgt nicht auf Datenbankebene. Sie können zum Beispiel MySQL für den Zabbix-Server und Sqlite für die Proxys verwenden. Da der Proxy seine Daten sofort aus der Datenbank löscht, sobald diese vom Server empfangen wurden, sind die Anforderungen an die Datenbank deutlich geringer als beim Zabbix-Server. Sqlite bietet sich hier an, weil kein Datenbankserver installiert werden muss.
  • Zabbix-Server und Proxy sollten dieselbe Version haben. Rechnen Sie mit Problemen, wenn der Proxy eine andere Version als der Server hat.

In der offiziellen Dokumentation macht Zabbix folgende Aussage zur Kompatibilität von Proxy und Server:

[https://www.zabbix.com/documentation/2.4/manual/appendix/compatibility Supported Zabbix proxies:

Only Zabbix 2.4 proxies may be used with Zabbix server. Zabbix 1.6, 1.8, 2.0 and 2.2 proxies are not supported with Zabbix 2.4 server.

Zabbix 2.4 proxies may only be used with Zabbix 2.4 server. They will not work with 2.2 or older Zabbix server.]

Zabbix-Proxy installieren

Die Firma Zabbix LLC stellt immer zum Zabbix-Server passende Proxy-Versionen als Paket für Debian, Ubuntu, CentOS und Red Hat bereit. Das Einbinden der entsprechenden Repositories erfolgt wie bei der Installation des Zabbix-Servers. Im Folgenden wird die Installation in komprimierter Form erklärt. Für eine ausführlichere Anleitung schauen Sie sich bitte das Kapitel Den Zabbix-Server installieren an.

Binden Sie den Repository-Server von Zabbix in die Paketverwaltung ein: Ubuntu 14.04:

wget http://repo.zabbix.com/zabbix/2.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.4-1+trusty_all.deb
dpkg -i zabbix-release_2.4-1+trusty_all.deb
apt-get update

Debian 8:

wget http://repo.zabbix.com/zabbix/2.4/debian/pool/main/z/zabbix-release/zabbix-release_2.4-1+jessie_all.deb
dpkg -i zabbix-release_2.4-1+wheezy_all.deb
apt-get update

RHEL/CentOS-Version 7:

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

Es stehen nun drei Varianten des Zabbix-Proxys zur Auswahl. Der Unterschied besteht in der Datenbank, die der Proxy für seine temporäre Datenhaltung verwendet. Sie können MySQL, Postgres oder SQLite3 verwenden. Wenn Sie Oracle oder DB2 einsetzen möchten, müssen Sie zum Compiler greifen und den Proxy aus den Quellen installieren.
SQLite3 ist eine gute Wahl. Auch bei hoher Last liefert der Zabbix-Proxy mit dieser Datenbank eine gute Leistung. Wenn der Proxy eine permanente Verbindung zum Server hat (und das sollte er haben), die nur selten unterbrochen wird, sammeln sich nicht viele Daten in der Proxy-Datenbank. SQLite3 vereinfacht die Installation erheblich, da Sie die Datenbank weder anlegen noch konfigurieren müssen.

Installieren Sie nun den Zabbix-Server beispielsweise wie folgt:

apt-get install zabbix-proxy-sqlite3 ## Debian, Ubuntu
yum install zabbix-proxy-sqlite3     ## CentOS 6, Red Hat 6

Zabbix-Proxy aus den Quellen kompilieren

Die Installation des Zabbix-Proxys läuft ähnlich wie die Installation des Zabbix-Servers ab.

Sie müssen den Proxy mit denselben Optionen kompilieren wie den Zabbix-Server. Nur so ist sichergestellt, dass der Proxy alle Checks durchführen kann, die auch der Server durchführt.

Nachfolgende Kurzanleitung bezieht sich auf Debian und Ubuntu. Zur Installation des Proxys auf anderen Distributionen gehen Sie analog zur Installation des Zabbix-Servers vor.

Bereiten Sie das System vor, indem Sie die zum Kompilieren benötigten Bibliotheken installieren.

apt-get install make gcc libc6-dev libcurl4-openssl-dev \
libsnmp-dev libiksemel-dev libopenipmi-dev libssh2-1-dev fping
cd /usr/src
curl -O -J -L http://sourceforge.net/projects/zabbix/files/\
ZABBIX%20Latest%20Stable/<VERSION>/zabbix-<VERSION>.tar.gz/download
tar xzf zabbix-<VERSION>.tar.gz
cd /usr/src/zabbix-<VERSION>

Wenn Sie MySQL als Datenbank verwenden möchten, installieren Sie noch folgende Pakete:

apt-get install libmysqlclient15-dev
./configure --enable-proxy --with-mysql --with-net-snmp \
--with-libcurl --with-openipmi --with-ssh2 --prefix=/opt/zabbix_proxy
make
make install

Wenn Sie Sqlite als Datenbank verwenden möchten, installieren Sie noch folgende Pakete:

apt-get install libsqlite3-dev
./configure --enable-proxy --with-sqlite3 --with-net-snmp \
--with-libcurl --with-openipmi --with-ssh2 --prefix=/opt/zabbix_proxy
make
make install
Es ist immer ratsam, auch die Funktion des Proxys zu überwachen. Dazu braucht der Proxy aber auch einen Zabbix-Agenten. Kompilieren Sie den Agenten direkt mit dem Proxy, indem Sie ./configure um die Option --enable-agent erweitern.

Legen Sie einen User für Zabbix an. Der Proxy wird nicht mit Root-Rechten starten.

adduser --system --home /opt/zabbix_proxy --no-create-home zabbix #Debian
useradd -r -d /opt/zabbix_proxy/ -m zabbix                        # SUSE,Red Hat,CentOS

Die Datenbank anlegen

Wenn Sie Sqlite als Datenbank verwenden, brauchen Sie keine Datenbank anlegen. Dies erledigt der Proxy selbstständig beim ersten Start. Legen Sie einen Ordner für die Sqlite3-Datenbank an und passen Sie die Berechtigungen an:

mkdir /opt/zabbix_proxy/sqlite3/
chown zabbix /opt/zabbix_proxy/sqlite3/

Tragen Sie in der Konfigurationsdatei /opt/zabbix_proxy/etc/zabbix_proxy.conf den Pfad ein, unter dem Zabbix die Datenbank anlegen soll:

### Option: DBName
#       Database name.
#       For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
#       Warning: do not attempt to use the same database Zabbix server is using.
#
# Mandatory: yes
# Default:
# DBName=

DBName=/opt/zabbix_proxy/sqlite3/zabbix_proxy.db

Wenn Sie MySQL verwenden, dann richten Sie zuerst eine Datenbank und einen Benutzer ein und legen anschließend das Schema und die Basisdaten an:

mysql -u root -p -e "create database zabbix"
mysql -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'zabbix'"
mysql -u zabbix -p zabbix<./create/schema/mysql.sql
mysql -u zabbix -p zabbix<./create/data/data.sql

Ein Start-Stop-Skript anlegen

Leider liegt den Installationsdateien kein Start-Stop-Skript für den Zabbix-Proxy bei. Aber mit dem Skript für den Zabbix-Server lässt sich leicht ein Start-Stop-Skript für den Proxy erstellen.

Kopieren Sie das für Ihre Distribution passende Start-Stop-Skript ins System. Für Debian wäre das beispielsweise wie folgt zu erledigen:

cp ./misc/init.d/debian/zabbix-server /etc/init.d/zabbix-proxy

Öffnen Sie das Skript mit einem Editor. Ersetzen Sie den Pfad zum Zabbix-Server durch den Pfad zum Zabbix-Proxy. Einige Start-Stop-Skripte bedürfen noch der Nacharbeit, damit Sie den Standards der Distributionen entsprechen. Hier gelten dieselben Regeln wie bei den Start-Stop-Skripten des Zabbix-Servers (siehe Den Zabbix-Server installieren).

Nachfolgend ein Ausschnitt aus dem angepassten Skript für Systemd-Systeme wie beispielsweise Debian 8 oder CentOS 7. Legen Sie die Datei /etc/systemd/system/zabbix-proxy.service mit folgendem Inhalt an:

[Unit]
Description=Zabbix Proxy Sqlite
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/opt/zabbix_proxy/sbin/zabbix_proxy -c /opt/zabbix_proxy/etc/zabbix_proxy.conf
RemainAfterExit=yes
PIDFile=/tmp/zabbix_proxy.pid

[Install]
WantedBy=multi-user.target

Anschließend führen Sie die folgenden Kommandos aus:

systemctl daemon-reload
systemctl start zabbix-proxy
systemctl enable zabbix-proxy

Die Proxy-Modes: Aktiv vs. Passiv

ProxyMode=0 (Aktiv)
Der Proxy meldet sich beim Server. Der Proxy muss eine Verbindung zum Server auf Port 10051 aufbauen können. Der Server braucht keinen Zugriff auf den Proxy. Dieser Modus kann eingesetzt werden, wenn der Proxy eine dynamische IP-Adresse verwendet.
ProxyMode=1 (Passiv)
Der Server meldet sich beim Proxy, übergibt die Konfiguration und holt die gesammelten Daten ab. Der Server braucht Zugriff auf den Proxy, dieser aber keinen auf den Server.
Datenfluss zwischen Proxy und Zabbix-Server

Proxys einrichten

Proxys benennen: Der Name ist alles!

Egal in welchem Modus Sie den Proxy betreiben möchten, Sie müssen dem Proxy in der Konfigurationsdatei zabbix_proxy.conf einen Namen geben.

### Option: Hostname
#       Unique, case sensitive Proxy name. Make sure the Proxy name is known to the server!
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=zbx-proxy03.example.org
### Option: HostnameItem
#       Item used for generating Hostname if it is undefined.
#       Ignored if Hostname is defined.
#
# Mandatory: no
# Default:
# HostnameItem=system.hostname

Wenn Sie keinen Hostnamen manuell eintragen wollen, können Sie die Option HostnameItem=system.hostname nutzen. Dann wird der lokale, voll qualifizierte Name verwendet. Sobald Sie den Zabbix-Proxy starten, vermeldet dieser im Logfile, unter welchem Namen der Dienst angesprochen werden kann.
Beim Einrichten eines Proxys im Zabbix-Server muss der Hostname identisch angegeben werden, so wie dieser auf dem Proxy konfiguriert wurde. Andernfalls kommt kein Datenaustausch zustande.

Passiven Proxy im Zabbix-Server hinzufügen

Proxys im passiven Modus verfügen über keine Art von Authentifizierung. Jeder, der den Namen des Proxys kennt, kann diesen abfragen. Die Vergabe eines nicht offensichtlichen Hostnamens gibt in diesem Fall einen minimalen Schutz.

Der Datenaustausch zwischen Proxy und Server ist unverschlüsselt. Es gibt außerdem keine Authentifizierung. Die Kommunikation zwischen Zabbix-Server und Proxy sollte innerhalb eines geschützten privaten Netzwerkes geschehen. Wenn Proxy und Server über das öffentliche Internet verbunden sind, sollten Sie Hilfswerkzeuge wie SSH-Tunnel oder ein VPN einsetzen.

Aktiv-Modus

Öffnen Sie die Datei zabbix_proxy.conf mit einem Editor

  • Tragen Sie den ProxyMode=0 ein.
  • Wenn Sie nicht Sqlite als Datenbank verwenden, geben Sie die Zugangsdaten zur Datenbank an.
  • Geben Sie an, wie oft die Daten und die Konfiguration mit dem Zabbix-Server ausgetauscht werden sollen.
ProxyMode=0
Server=<IP-FROM-ZABBIX-SERVER>
ServerPort=10051
Hostname=PRO_EXAMPLE
ConfigFrequency=120
DataSenderFrequency=60
HeartbeatFrequency=10

Starten Sie den Zabbix-Proxy und werfen Sie einen Blick in das Logfile zabbix_proxy.log.

Ein aktiver Proxy sammelt eigenständig Daten. Dabei holt sich dieser in einem festgelegten Intervall (ConfigFrequency) eine Art To-do-Liste vom Zabbix-Server ab. Mit der Einstellung DataSenderFrequency legen Sie fest, in welchem Intervall der Proxy die „eingesammelten“ Daten an den Server schickt. Beachten Sie, dass Trigger nur auf dem Server ausgeführt werden und nur in dem Moment, in dem die Daten auf dem Server eintreffen. Sie aktualisieren beispielsweise ein Item alle 60 Sekunden, und auf diesem Item basiert ein Trigger. Sollte der Proxy aber nur alle 5 Minuten die Daten an den Zabbix-Server übermitteln, werden Sie frühestens nach 5 Minuten einen Alarm erhalten.

Legen Sie anschließend den neuen Proxy im Zabbix-Server über das Webfrontend an. Wählen Sie über das Hauptmenü Administration|Proxys und im Dropdown-Menü oben rechts "Proxys" aus. Mit dem Button "Create Proxy" legen Sie einen neuen Proxy an. Wählen Sie als Modus "Aktiv". Der Wert für "Proxy Name" muss exakt mit dem Wert "Hostname" aus der Datei zabbix_proxy.conf des Proxys übereinstimmen. Wenn Sie möchten, können Sie Hosts dem neuen Proxy zuweisen. Dies kann aber auch später in der Konfiguration der Hosts vorgenommen werden.
Mehr müssen Sie beim Einsatz aktiver Proxys nicht einrichten. Der Proxy ist nur dafür verantwortlich, regelmäßig Verbindung mit den Server herzustellen.

Bei aktiven Proxys führt der Proxy alle Checks durch, als wäre er der Zabbix-Server. Das bedeutet, der Proxy entscheidet, wann ein Host nicht verfügbar ist.
Die Einstellungen bezüglich der Erreichbarkeit übernimmt der Proxy nicht vom Server. Vergessen Sie also nicht in der zabbix_proxy.conf folgende Einstellungen zu prüfen und ggf. an Ihre Einstellungen vom Zabbix-Server anzugleichen.

  • UnreachablePeriod
  • UnavailableDelay
  • UnreachableDelay

Passiv-Modus

Öffnen Sie die Datei zabbix_proxy.conf mit einem Editor und tragen Sie den Proxy Mode und die Datenbankverbindung ein. Wenn Sie Sqlite verwenden wollen, brauchen Sie nur einen Pfad zu einer Datei als Datenbank eintragen. Der Zabbix-User braucht Schreib- und Leserechte im angegebenen Verzeichnis.
Im Falle von Sqlite werden die Datenbank und das Schema automatisch angelegt.

ProxyMode=1

Wenn Sie Ihren Proxy im passiven Modus betrieben, geben Sie auf dem Zabbix-Server über die Datei zabbix_server.conf die Frequenz an, mit der die Daten zwischen Server und Proxy ausgetauscht werden.

Über die beiden nachfolgenden Einstellungen legen Sie fest, wie oft der Zabbix-Server den Proxys mitteilt, welche Daten diese sammeln sollen. Der Server verteilt eine Art To-do-Liste an die Proxys. (ProxyConfigFrequency). Mit der Einstellung ProxyDataFrequency legen Sie fest, in welchem Intervall der Server die Daten der Proxys „einsammelt“. Beachten Sie, dass Trigger nur auf dem Server ausgeführt werden und nur in dem Moment, in dem die Daten auf dem Server eintreffen. Sie aktualisieren beispielsweise ein Item alle 60 Sekunden, und auf diesem Item basiert ein Trigger. Sollte der Zabbix-Sever aber nur alle 5 Minuten die Daten vom Proxy abrufen, werden Sie frühestens nach 5 Minuten einen Alarm erhalten.

Passen Sie folgende Werte Ihren Bedürfnissen an. (Änderungen an der Konfiguration werden erst nach einem Neustart des Zabbix-Servers übernommen.):

ProxyConfigFrequency=600
ProxyDataFrequency=120

Legen Sie anschließend den neuen Proxy im Zabbix-Server über das Webfrontend an. Wählen Sie über das Hauptmenü Administration|Proxys und im Dropdown-Menü oben rechts „Proxys“ aus. Mit dem Button Create Proxy legen Sie einen neuen Proxy an. Wählen Sie als Modus "Passive". Geben Sie nun an, unter welcher IP-Adresse oder welchem Hostnamen der Proxy erreicht wird.

Proxy starten und testen

Starten Sie den Proxy unter Angabe des Pfades zur Konfiguration oder verwenden Sie das Start-Stop-Skript.

./zabbix_proxy -c /opt/zabbix_proxy/etc/zabbix_proxy.conf

Im Logfile zabbix_proxy.log sollte Folgendes zu sehen sein:

Starting Zabbix-Proxy.
**** Enabled features ****
SNMP monitoring:       YES
IPMI monitoring:       YES
WEB monitoring:        YES
ODBC:                   NO
SSH2 support:           NO
IPv6 support:           NO
**************************
zabbix_proxy [15103]: php_sem_get: Can not create IPC key for path '/tmp/zabbix_proxy.db',
                      try to create for path '.' [No such file or directory]
15103:20101108:140650.373 Cannot open database file "/tmp/zabbix_proxy.db": No such file or directory
15103:20101108:140650.373 Creating database ...

Außerdem sollte nun die Sqlite-Datenbank existieren.

file /tmp/zabbix_proxy.db 
/tmp/zabbix_proxy.db: SQLite 3.x database
Sollte der Proxy nicht starten und finden Sie im Logfile Fehler wie zum Beispiel cannot create database 'zabbix_proxy', sollten Sie einen absoluten Pfad als Datenbank angeben, zum Beispiel /usr/lib/zabbix/zabbix_proxy.sqlite3.db. Prüfen Sie außerdem die Berechtigungen des Dateiordners für die Datenbank. Der Benutzer zabbix muss Schreibrechte haben.

Hosts über einen Proxy überwachen

Als Nächstes müssen Sie auswählen, welche Hosts über den Proxy überwacht werden sollen.
Wechseln Sie zur Host-Konfiguration. Dort sollte nun der neu eingerichtete Proxy im Dropdown "Monitored by proxy" zur Auswahl stehen.

Host per Proxy überwachen

Wenn Sie einen Host über einen Proxy überwachen, werden alle Daten vom Proxy gesammelt. Dies gilt für alle Items des Hosts. Achten Sie darauf, dass alle externen Checks und Skripte, die Sie ggf. auf dem Zabbix-Server hinterlegt haben, auch auf dem Proxy verfügbar sind. Gleiches gilt für SNMP-MIBs, SSH-Keys oder ODBC-Konfigurationen. Diese Daten sollten Sie zwischen Server und Proxys synchronisieren, damit der Proxy für alle Items Daten sammeln kann.

Trigger werden immer vom Zabbix-Server ausgewertet, in dem Moment, in dem der Proxy die Daten beim Server einliefert. Wenn die Verbindung zwischen Server und Proxy getrennt ist, ruft der Proxy weiterhin Daten ab und puffert diese in seiner lokalen Datenbank. In diesem Moment ist der Zabbix-Server „blind“. Es werden keine Probleme gemeldet, und Sie wiegen sich u.U. in falscher Sicherheit. Für besonders kritische Trigger sollten Sie einen zusätzlichen Check mit der Trigger-Funktion nodata() hinzufügen. So werden Sie benachrichtigt, wenn für ein Item keine aktuellen Daten vorliegen. Zusätzlich sollten Sie alle Proxys überwachen und Alarm schlagen, wenn ein Proxy keine Daten liefert.

Wenn Sie für einen Host Items vom Typ „Zabbix-Trapper“ anlegen, muss der aktive Zabbix-Agent oder Zabbix-Sender die Daten an den zuständigen Proxy und nicht an den Zabbix-Server senden. Auf dem Zabbix-Proxy müssen Sie ggf. die Einstellung StartTrappers anpassen.

Das VMware- und das Java-Monitoring müssen bei Bedarf ebenfalls auf dem Proxy aktiviert werden.

Proxys überwachen

Sobald Sie einen Proxy verwenden, sollten Sie auch überwachen, ob dieser ordnungsgemäß funktioniert. Liefert der Proxy keine Daten, sind unter Umständen zahlreiche Hosts und Geräte ohne Überwachung. Sie sollten also sofort alarmiert werden, wenn ein Proxy keine Daten mehr liefert.

Item und Trigger einrichten
Richten Sie für den Zabbix-Server ein Item ein, welches prüft, wann der Proxy sich das letzte Mal beim Server gemeldet hat.

  • Itemtyp = Zabbix-Internal
  • Key = zabbix[proxy,<Proxy Name>,lastaccess]
  • Type of information = Numeric(unsigned)
  • Data Type = Decimal
  • Units = unixtime

Der Proxy-Name muss so eingeben werden, wie er in der Proxy-Konfiguration eingerichtet wurde.

Der Zabbix-Server überwacht, ob die Proxys Daten abliefern.

Richten Sie nun einen Trigger mit der Funktion Fuzzytime ein:

{Zabbix server:zabbix[proxy,<Proxy Name>,lastaccess].fuzzytime(120)}=0

Dieser Trigger schlägt Alarm, sobald ein Proxy den Zabbix-Server während der letzten 120 Sekunden nicht mehr kontaktiert hat.

Heartbeat einrichten
Sorgen Sie dafür, dass sich die Proxys regelmäßig beim Zabbix-Server melden, auch wenn keine Item-Daten übertragen werden müssen. Bei aktiven Proxys tragen Sie in der zabbix_proxy.conf zum Beispiel Folgendes ein:

# Frequency of heartbeat messages in seconds.
HeartbeatFrequency=30

Bei passiven Proxys können Sie in der zabbix_server.conf mit der Einstellung

ProxyDataFrequency=30

dafür sorgen, dass sich der Server regelmäßig beim Proxy meldet.

Beispiel Georedundantes Monitoring mit Proxys

Stellen Sie sich vor, Sie liefern aus einem Rechenzentrum in Amsterdam eine Webseite weltweit aus. Nun möchten Sie zum einen monitoren, ob die Webseite in verschiedenen Erdteilen verfügbar ist. Außerdem möchten Sie messen, wie schnell die Seite in verschiedenen Ländern lädt. Mit Zabbix-Proxys und Cloud-Computing ist diese Aufgabe schnell und einfach erledigt.

Host/Proxy Standort
lab4.org (Webseite) Amsterdam
zbx-proxy01 New York
zbx-proxy02 Singapore
zbx-proxy03 London
zbx-proxy04 San Francisco
Zabbix-Server Amsterdam

Legen Sie ein Template an, welches beispielsweise die Ping-Laufzeit mit dem Item icmppingsec misst. Fügen Sie außerdem diesem Template ein Webszenario hinzu, das die Startseite des Webservers abruft. Das Webszenario erzeugt dann automatisch ein Item web.test.time[], welches angibt, wie lange der Download der Webseite dauert.

Ein Host wird vom Zabbix-Server und von vier Proxys überwacht.

Nachdem Sie den Host – im vorangegangenen Beispiel den Webserver lab4.org – angelegt und diesem das Template zugewiesen haben, duplizieren Sie diesen mit der Funktion „Full Clone“. Nach dem Klonen fügen Sie einen der Proxys aus und fügen den Namen des Proxys mit in den Namen des Hosts ein. Nach Abschluss dieser Prozedur wird der Host von fünf unterschiedlichen Standorten beobachtet. Wichtig ist, dass alle Hosts in einer gemeinsamen Hostgruppe Mitglied sind, zum Beispiel in der Gruppe „Webservers“.

Wenn Sie den Mittelwert der Webseitenperformance über alle Standorte messen wollen, legen Sie ein neuen Dummy-Host an, zum Beispiel „lab4.org GROUPED“ mit der IP-Adresse 127.0.0.1. Legen Sie anschließend für diesen Host ein Item vom Typ „Zabbix aggregate“ an. Als Key verwenden Sie beispielsweise grpavg[Webservers,"web.test.time[Performance Check,Get Startpage,resp]",last,0]. In diesem Item wird der Mittelwert aus allen Items der Hostgruppe Webservers errechnet und gespeichert.
Mithilfe der „aggregated Items“ können Sie beispielsweise auch die weltweite Gesamtverfügbarkeit einer Webseite messen. Legen Sie dazu ein Item an, welche die Summe aller Fehler über alle Proxys enthält: grpsum[Webservers,"web.test.fail[Performance Check]",last,0]. Solange die Webseite zum Beispiel in drei von vier Ländern verfügbar ist, wollen Sie u.U. keinen Alarm auslösen.

Zabbix berechnet die durchschnittliche Performance über alle Standorte.
Woher kommen die Item-Keys web.test.fail[Performance Check] und web.test.time[Performance Check,Get Startpage,resp]? In der Liste der Items tauchen die Webtests nicht auf. Und in der Liste der Webszenarios kann man die exakte Syntax der Item-Keys nicht ablesen.
Die exakte Syntax eines Items, welches über Webszenario angelegt wurde, bekommen Sie heraus, indem Sie einen Trigger anlegen. Klicken Sie in einem Dummy-Trigger auf Expression->Add und dann auf Item->Select. Nun sehen Sie wirklich alle Items eines Hosts inkl. der Webszenario-Items. Sie brauchen den Trigger nicht zu speichern. Kopieren Sie das Item einfach in die Zwischenablage und verwenden Sie es anschließend in einem „Aggregated Item“.

Nachdem die Proxys die Geschwindigkeit einer Webseite ein paar Tage gemessen haben, präsentiert Ihnen Zabbix einen übersichtlichen Graphen. Jetzt ist schnell erkennbar, dass Kunden in Asien deutlich länger auf die Webseite warten als Kunden in Amerika oder Europa.

Ladezeit einer Webseite in verschiedenen Ländern

Einstellungen zur Proxy-Performance

Je nachdem wie viele Items Sie mit Zabbix überwachen, sollten Sie einige Einstellungen zur Performance überprüfen, nachdem Sie einen Proxy hinzugefügt haben.

Werden die Daten zwischen Proxy und Server schnell genug ausgetauscht? Wenn Sie zum Beispiel einen Trigger vom Typ agent.ping.nodata(30)}=1 eingerichtet haben, der alarmiert, sobald ein Host nicht innerhalb von 30 Sekunden antwortet, dann müssen die Daten zwischen Server und Proxy auch mindestens alle 30 Sekunden übertragen werden.
Alle Trigger werden nur auf dem Zabbix-Server ausgeführt. Das bedeutet, liefert der Proxy nicht schnell genug die Daten, dann schlägt der Trigger auf dem Server Alarm, auch wenn der Proxy über die Daten bereits verfügt.

Prüfen Sie also die Einstellung DataSenderFrequency in den Proxy-Einstellungen bei aktiven Proxys und ProxyDataFrequency in den Servereinstellungen bei passiven Proxys.

Benutzt der Proxy genügend Pollers? Je nachdem, wie viele Hosts von einem Proxy überwacht werden, müssen Sie die Anzahl der Pollers im Proxy erhöhen.