7 Web-Überwachung
Übersicht
Mit Zabbix können Sie mehrere Verfügbarkeitsaspekte von Websites prüfen.\
Um Web-Monitoring durchzuführen, muss der Zabbix Server zunächst mit Unterstützung für cURL (libcurl) konfiguriert werden.
Um Web-Monitoring zu aktivieren, müssen Sie Webszenarien definieren. Ein Webszenario besteht aus einer oder mehreren HTTP-Anfragen oder „Schritten“. Die Schritte werden vom Zabbix Server periodisch in einer vordefinierten Reihenfolge ausgeführt. Wenn ein Host durch einen Proxy überwacht wird, werden die Schritte vom Proxy ausgeführt.
Webszenarien werden auf dieselbe Weise an Hosts/Vorlagen angehängt wie Datenpunkte, Auslöser usw. Das bedeutet, dass Webszenarien auch auf Vorlagenebene erstellt und dann in einem Schritt auf mehrere Hosts angewendet werden können.
Die folgenden Informationen werden in jedem Webszenario erfasst:
- durchschnittliche Download-Geschwindigkeit pro Sekunde für alle Schritte des gesamten Szenarios
- Nummer des fehlgeschlagenen Schritts
- letzte Fehlermeldung
Die folgenden Informationen werden in jedem Schritt eines Webszenarios erfasst:
- Download-Geschwindigkeit pro Sekunde
- Antwortzeit
- Antwortcode
Weitere Details finden Sie unter Web-Monitoring-Datenpunkte.
Die aus der Ausführung von Webszenarien erfassten Daten werden in der Datenbank gespeichert. Die Daten werden automatisch für Diagramme, Auslöser und Benachrichtigungen verwendet.
Zabbix kann auch prüfen, ob eine abgerufene HTML-Seite eine vordefinierte Zeichenfolge enthält. Es kann eine simulierte Anmeldung ausführen und einem Pfad simulierter Mausklicks auf der Seite folgen.
Das Zabbix Web-Monitoring unterstützt sowohl HTTP als auch HTTPS. Beim Ausführen eines Webszenarios folgt Zabbix optional Weiterleitungen (siehe die Option Weiterleitungen folgen unten). Die maximale Anzahl von Weiterleitungen ist fest auf 10 codiert (unter Verwendung der cURL-Option CURLOPT_MAXREDIRS). Alle Cookies bleiben während der Ausführung eines einzelnen Szenarios erhalten.
Konfiguration eines Webszenarios
So konfigurieren Sie ein Webszenario:
- Gehen Sie zu: Datenerfassung → Hosts (oder Vorlagen)
- Klicken Sie in der Zeile des Hosts/der Vorlage auf Web
- Klicken Sie rechts auf Webszenario erstellen (oder auf den Namen des Szenarios, um ein vorhandenes Szenario zu bearbeiten)
- Geben Sie die Parameter des Szenarios im Formular ein
Die Registerkarte Szenario ermöglicht Ihnen, die allgemeinen Parameter eines Webszenarios zu konfigurieren.

Alle erforderlichen Eingabefelder sind mit einem roten Sternchen markiert.
Szenarioparameter:
| Parameter | Beschreibung |
|---|---|
| Name | Eindeutiger Szenarioname. Benutzermakros werden unterstützt. Beachten Sie, dass bei Verwendung von Benutzermakros diese Makros in den Namen von Web-Monitoring-Datenpunkten nicht aufgelöst werden. |
| Aktualisierungsintervall | Wie oft das Szenario ausgeführt wird. Zeitsuffixe werden unterstützt, z. B. 30s, 1m, 2h, 1d. Benutzermakros werden unterstützt. Beachten Sie, dass bei Verwendung eines Benutzermakros und Änderung seines Werts (z. B. 5m → 30s) die nächste Prüfung entsprechend dem vorherigen Wert ausgeführt wird (bei den Beispielwerten also später). Neue Webszenarien werden innerhalb von 60 Sekunden nach ihrer Erstellung geprüft. |
| Versuche | Die Anzahl der Versuche zur Ausführung von Webszenario-Schritten. Bei Netzwerkproblemen (Timeout, keine Verbindung usw.) kann Zabbix die Ausführung eines Schritts mehrmals wiederholen. Der eingestellte Wert wirkt sich gleichermaßen auf jeden Schritt des Szenarios aus. Es können bis zu 10 Versuche angegeben werden, der Standardwert ist 1. Hinweis: Zabbix wiederholt einen Schritt nicht aufgrund eines falschen Antwortcodes oder einer Nichtübereinstimmung mit einer erforderlichen Zeichenfolge. |
| Agent | Wählen Sie einen Client-Agenten aus. Zabbix gibt sich als der ausgewählte Browser aus. Dies ist nützlich, wenn eine Website je nach Browser unterschiedliche Inhalte zurückgibt. Benutzermakros können in diesem Feld verwendet werden. |
| HTTP-Proxy | Sie können einen zu verwendenden HTTP-Proxy im Format [protocol://][username[:password]@]proxy.example.com[:port] angeben.Dadurch wird die cURL-Option CURLOPT_PROXY gesetzt. Das optionale Präfix protocol:// kann verwendet werden, um alternative Proxy-Protokolle anzugeben (die Unterstützung für Protokollpräfixe wurde in cURL 7.21.7 hinzugefügt). Wenn kein Protokoll angegeben ist, wird der Proxy als HTTP-Proxy behandelt.Standardmäßig wird Port 1080 verwendet. Falls angegeben, überschreibt der Proxy proxybezogene Umgebungsvariablen wie http_proxy, HTTPS_PROXY. Falls nicht angegeben, überschreibt der Proxy keine proxybezogenen Umgebungsvariablen. Der eingegebene Wert wird unverändert weitergegeben; es findet keine Plausibilitätsprüfung statt. Sie können auch eine SOCKS-Proxy-Adresse eingeben. Wenn Sie das falsche Protokoll angeben, schlägt die Verbindung fehl und der Datenpunkt wird nicht unterstützt. Beachten Sie, dass beim HTTP-Proxy nur einfache Authentifizierung unterstützt wird. Benutzermakros können in diesem Feld verwendet werden. |
| Variablen | Variablen, die in Szenarioschritten verwendet werden können (URL, Post-Variablen). Sie haben das folgende Format: {macro1}=value1 {macro2}=value2 {macro3}=regex:<regular expression> {macro4}=jsonpath:<jsonpath> {macro5}=xmlxpath:<xmlxpath> {macro6}={{macro}.function()} (siehe Makrofunktionen) Zum Beispiel: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) {url}=jsonpath:$.host_url {status}=xmlxpath://host/response/status {newvar}={{myvar}.btoa()} Auf die Makros kann dann in den Schritten als {username}, {password}, {hostid} usw. verwiesen werden. Zabbix ersetzt sie automatisch durch die tatsächlichen Werte. Beachten Sie, dass Variablen mit regex: einen Schritt benötigen, um den Wert des regulären Ausdrucks zu erhalten, sodass der extrahierte Wert erst im darauffolgenden Schritt angewendet werden kann.Wenn der Wertteil mit regex: beginnt, wird der nachfolgende Teil als regulärer Ausdruck behandelt, der die Webseite durchsucht und bei einem Treffer die Übereinstimmung in der Variablen speichert. Es muss mindestens eine Untergruppe vorhanden sein, damit der übereinstimmende Wert extrahiert werden kann.Benutzermakros und {HOST.*}-Makros werden unterstützt. Variablen werden automatisch URL-kodiert, wenn sie in Abfragefeldern oder Formulardaten für Post-Variablen verwendet werden, müssen jedoch manuell URL-kodiert werden, wenn sie in rohen Post-Daten oder direkt in der URL verwendet werden. |
| Header | HTTP-Header werden bei der Ausführung einer Anfrage verwendet. Es können Standard- und benutzerdefinierte Header verwendet werden. Header werden abhängig vom auf Szenarioebene in einer Dropdown-Liste ausgewählten Agent-Typ mit Standardeinstellungen zugewiesen und auf alle Schritte angewendet, sofern sie nicht auf Schrittebene benutzerdefiniert festgelegt werden. Beachten Sie, dass das Definieren eines Headers auf Schrittebene automatisch alle zuvor definierten Header verwirft, mit Ausnahme eines Standard-Headers, der durch Auswahl von 'User-Agent' in einer Dropdown-Liste auf Szenarioebene zugewiesen wird. Allerdings kann selbst der Standard-Header 'User-Agent' überschrieben werden, indem er auf Schrittebene angegeben wird. Um den Header auf Szenarioebene aufzuheben, sollte der Header auf Schrittebene mit Namen, aber ohne Wert angegeben werden. Header sollten mit derselben Syntax aufgeführt werden, wie sie im HTTP-Protokoll erscheinen würden, optional unter Verwendung einiger zusätzlicher Funktionen, die von der cURL-Option CURLOPT_HTTPHEADER unterstützt werden. Zum Beispiel: Accept-Charset=utf-8 Accept-Language=en-US Content-Type=application/xml; charset=utf-8 Benutzermakros und {HOST.*}-Makros werden unterstützt. |
| Aktiviert | Das Szenario ist aktiv, wenn dieses Kontrollkästchen aktiviert ist, andernfalls deaktiviert. |
Beachten Sie, dass beim Bearbeiten eines vorhandenen Szenarios im Formular zwei zusätzliche Schaltflächen verfügbar sind:
![]() |
Ein weiteres Szenario auf Grundlage der Eigenschaften des vorhandenen erstellen. |
![]() |
Verlaufs- und Trenddaten für das Szenario löschen. Dadurch führt der Server das Szenario unmittelbar nach dem Löschen der Daten aus. |
Wenn das Feld HTTP-Proxy leer gelassen wird, besteht eine weitere Möglichkeit zur Verwendung eines HTTP-Proxys darin, proxybezogene Umgebungsvariablen zu setzen.
Für HTTP-Prüfungen setzen Sie die Umgebungsvariable http_proxy für den Benutzer des Zabbix-Servers. Zum Beispiel:
http_proxy=http://proxy_ip:proxy_port.
Für HTTPS-Prüfungen setzen Sie die Umgebungsvariable HTTPS_PROXY. Zum Beispiel HTTPS_PROXY=http://proxy_ip:proxy_port. Weitere Details erhalten Sie durch Ausführen des Shell-Befehls: # man curl.
Die Registerkarte Schritte ermöglicht Ihnen, die Schritte des Webszenarios zu konfigurieren. Um einen Webszenario-Schritt hinzuzufügen, klicken Sie im Block Schritte auf Hinzufügen.

Geheime Benutzermakros dürfen nicht in URLs verwendet werden, da sie zu "******" aufgelöst werden.
Konfigurieren von Schritten

Schrittparameter:
| Parameter | Beschreibung |
|---|---|
| Name | Eindeutiger Schrittname. Benutzermakros werden unterstützt. Beachten Sie, dass diese Makros, wenn Benutzermakros verwendet werden, in Namen von web monitoring-Datenpunkten nicht aufgelöst werden. |
| URL | URL, zu der eine Verbindung hergestellt und von der Daten abgerufen werden sollen. Zum Beispiel: https://www.example.com http://www.example.com/download Domainnamen können mit Unicode-Zeichen angegeben werden. Sie werden bei der Ausführung des Webszenario-Schritts automatisch per Punycode in ASCII umgewandelt. Mit der Schaltfläche Parse können optionale Abfragefelder (wie ?name=Admin&password=mypassword) von der URL getrennt werden, wobei Attribute und Werte in Abfragefelder verschoben werden, damit sie automatisch URL-kodiert werden. Variablen können in der URL mit der Syntax {macro} verwendet werden. Variablen können manuell URL-kodiert werden, indem die Syntax {{macro}.urlencode()} verwendet wird. Benutzermakros und {HOST.*}-Makros werden unterstützt. Begrenzt auf 2048 Zeichen. |
| Query fields | HTTP-GET-Variablen für die URL. Als Attribut-Wert-Paare angegeben. Werte werden automatisch URL-kodiert. Werte aus Szenariovariablen, Benutzermakros oder {HOST.*}-Makros werden aufgelöst und anschließend automatisch URL-kodiert. Die Verwendung der Syntax {{macro}.urlencode()} führt zu einer doppelten URL-Kodierung. Benutzermakros und {HOST.*}-Makros werden unterstützt. |
| Post | HTTP-POST-Variablen. Im Modus Form data als Attribut-Wert-Paare angegeben. Werte werden automatisch URL-kodiert. Werte aus Szenariovariablen, Benutzermakros oder {HOST.*}-Makros werden aufgelöst und anschließend automatisch URL-kodiert. Im Modus Raw data werden Attribute/Werte in einer einzelnen Zeile angezeigt und mit dem Symbol & verkettet. Rohwerte können manuell URL-kodiert/-dekodiert werden, indem die Syntax {{macro}.urlencode()} oder {{macro}.urldecode()} verwendet wird. Zum Beispiel: id=2345&userid={user} Wenn {user} als Variable des Webszenarios definiert ist, wird sie bei der Ausführung des Schritts durch ihren Wert ersetzt. Wenn Sie die Variable URL-kodieren möchten, ersetzen Sie {user} durch {{user}.urlencode()}. Benutzermakros und {HOST.*}-Makros werden unterstützt. |
| Variables | Variablen auf Schrittebene, die für GET- und POST-Funktionen verwendet werden können. Als Attribut-Wert-Paare angegeben. Variablen auf Schrittebene überschreiben Variablen auf Szenarioebene oder Variablen aus dem vorherigen Schritt. Der Wert einer Variable auf Schrittebene wirkt sich jedoch nur auf den folgenden Schritt aus (und nicht auf den aktuellen Schritt). Sie haben das folgende Format: {macro}=value {macro}=regex:<regular expression> Weitere Informationen finden Sie in der Variablenbeschreibung auf Szenario-Ebene. Variablen werden automatisch URL-kodiert, wenn sie in Abfragefeldern oder Formulardaten für POST-Variablen verwendet werden, müssen jedoch manuell URL-kodiert werden, wenn sie in rohen POST-Daten oder direkt in der URL verwendet werden. |
| Headers | Benutzerdefinierte HTTP-Header, die beim Ausführen einer Anfrage gesendet werden. Als Attribut-Wert-Paare angegeben. Ein auf Schrittebene definierter Header wird für diesen bestimmten Schritt verwendet. Beachten Sie, dass das Definieren eines Headers auf Schrittebene automatisch alle zuvor definierten Header verwirft, mit Ausnahme eines Standard-Headers, der durch Auswahl von 'User-Agent' aus einer Dropdown-Liste auf Szenarioebene zugewiesen wird. Allerdings kann selbst der Standard-Header 'User-Agent' überschrieben werden, indem er auf Schrittebene angegeben wird. Wenn Sie beispielsweise einem Header einen Namen zuweisen, aber keinen Wert festlegen, wird der Standard-Header auf Szenarioebene aufgehoben. Benutzermakros und {HOST.*}-Makros werden unterstützt. Dies setzt die cURL-Option CURLOPT_HTTPHEADER. |
| Follow redirects | Aktivieren Sie das Kontrollkästchen, um HTTP-Weiterleitungen zu folgen. Dies setzt die cURL-Option CURLOPT_FOLLOWLOCATION. |
| Retrieve mode | Wählen Sie den Abrufmodus aus: Body - nur den Body aus der HTTP-Antwort abrufen Headers - nur die Header aus der HTTP-Antwort abrufen Body and headers - Body und Header aus der HTTP-Antwort abrufen |
| Timeout | Zabbix verwendet nicht mehr als die festgelegte Zeit für die Verarbeitung der URL (von einer Sekunde bis maximal 1 Stunde). Tatsächlich definiert dieser Parameter die maximale Zeit für den Verbindungsaufbau zur URL und die maximale Zeit für die Ausführung einer HTTP-Anfrage. Daher verwendet Zabbix für den Schritt nicht mehr als 2 x Timeout Sekunden. Zeitsuffixe werden unterstützt, z. B. 30s, 1m, 1h. Benutzermakros werden unterstützt. |
| Required string | Erforderliches Muster für reguläre Ausdrücke. Wenn der abgerufene Inhalt (HTML) nicht mit dem erforderlichen Muster übereinstimmt, schlägt der Schritt fehl. Wenn leer, wird keine Prüfung der erforderlichen Zeichenfolge durchgeführt. Zum Beispiel: Homepage of Zabbix Welcome.*admin Hinweis: Die Referenzierung von regulären Ausdrücken, die im Zabbix Frontend erstellt wurden, wird in diesem Feld nicht unterstützt. Benutzermakros und {HOST.*}-Makros werden unterstützt. |
| Required status codes | Liste der erwarteten HTTP-Statuscodes. Wenn Zabbix einen Code erhält, der nicht in der Liste enthalten ist, schlägt der Schritt fehl. Wenn leer, wird keine Prüfung der Statuscodes durchgeführt. Zum Beispiel: 200,201,210-299 Benutzermakros werden unterstützt. |
Änderungen in Webszenario-Schritten werden erst gespeichert, wenn das gesamte Szenario gespeichert wird.
Siehe auch ein Praxisbeispiel, wie Schritte für web monitoring konfiguriert werden können.
Tags konfigurieren
Auf der Registerkarte Tags können Tags auf Szenarioebene definiert werden.

Mithilfe von Tags können Webszenarien und Web-Monitoring-Datenpunkte gefiltert werden.
Konfigurieren der Authentifizierung
Die Registerkarte Authentifizierung ermöglicht es Ihnen, die Authentifizierungsoptionen des Szenarios zu konfigurieren. Ein grüner Punkt neben dem Namen der Registerkarte zeigt an, dass eine Art von HTTP-Authentifizierung aktiviert ist.

Authentifizierungsparameter:
| Parameter | Beschreibung |
|---|---|
| HTTP authentication | Wählen Sie die Authentifizierungsoption aus: None - keine Authentifizierung wird verwendet; Basic - Basisauthentifizierung wird verwendet; NTLM - NTLM-Authentifizierung (Windows NT LAN Manager) wird verwendet; Kerberos - Kerberos-Authentifizierung wird verwendet (siehe auch: Konfigurieren von Kerberos mit Zabbix); Digest - Digest-Authentifizierung wird verwendet. |
| User | Geben Sie den Benutzernamen ein (bis zu 255 Zeichen). Dieses Feld ist verfügbar, wenn HTTP authentication auf Basic, NTLM, Kerberos oder Digest gesetzt ist. Benutzermakros werden unterstützt. |
| Password | Geben Sie das Benutzerpasswort ein (bis zu 255 Zeichen). Dieses Feld ist verfügbar, wenn HTTP authentication auf Basic, NTLM, Kerberos oder Digest gesetzt ist. Benutzermakros werden unterstützt. |
| SSL verify peer | Aktivieren Sie das Kontrollkästchen, um das SSL-Zertifikat des Webservers zu überprüfen. Das Serverzertifikat wird automatisch vom systemweiten Speicherort der Zertifizierungsstelle (CA) übernommen. Sie können den Speicherort der CA-Dateien mit dem Konfigurationsparameter SSLCALocation des Zabbix Server oder Proxy überschreiben. Dies setzt die cURL-Option CURLOPT_SSL_VERIFYPEER. |
| SSL verify host | Aktivieren Sie das Kontrollkästchen, um zu überprüfen, dass das Feld Common Name oder das Feld Subject Alternate Name des Webserver-Zertifikats übereinstimmt. Dies setzt die cURL-Option CURLOPT_SSL_VERIFYHOST. |
| SSL certificate file | Name der SSL-Zertifikatsdatei, die für die Client-Authentifizierung verwendet wird. Die Zertifikatsdatei muss im PEM1-Format vorliegen. Wenn die Zertifikatsdatei auch den privaten Schlüssel enthält, lassen Sie das Feld SSL key file leer. Wenn der Schlüssel verschlüsselt ist, geben Sie das Passwort im Feld SSL key password an. Das Verzeichnis, das diese Datei enthält, wird durch den Konfigurationsparameter SSLCertLocation des Zabbix Server oder Proxy angegeben.HOST.*-Makros und Benutzermakros können in diesem Feld verwendet werden.Dies setzt die cURL-Option CURLOPT_SSLCERT. |
| SSL key file | Name der SSL-Datei mit dem privaten Schlüssel, die für die Client-Authentifizierung verwendet wird. Die Datei mit dem privaten Schlüssel muss im PEM1-Format vorliegen. Das Verzeichnis, das diese Datei enthält, wird durch den Konfigurationsparameter SSLKeyLocation des Zabbix Server oder Proxy angegeben.HOST.*-Makros und Benutzermakros können in diesem Feld verwendet werden.Dies setzt die cURL-Option CURLOPT_SSLKEY. |
| SSL key password | Passwort der SSL-Datei mit dem privaten Schlüssel. Benutzermakros können in diesem Feld verwendet werden. Dies setzt die cURL-Option CURLOPT_KEYPASSWD. |
[1] Zabbix unterstützt Zertifikats- und private Schlüsseldateien nur im PEM-Format. Falls Ihre Zertifikats- und privaten Schlüsseldaten im Dateiformat PKCS #12 vorliegen (normalerweise mit der Erweiterung *.p12 oder *.pfx), können Sie daraus mit den folgenden Befehlen eine PEM-Datei erzeugen:
openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key
Zabbix Server übernimmt Änderungen an Zertifikaten ohne Neustart.
Wenn Sie Client-Zertifikat und privaten Schlüssel in einer einzigen Datei haben, geben Sie diese einfach im Feld "SSL certificate file" an und lassen Sie das Feld "SSL key file" leer. Zertifikat und Schlüssel müssen weiterhin im PEM-Format vorliegen. Das Kombinieren von Zertifikat und Schlüssel ist einfach:
cat client.crt client.key > client.pem
Anzeige
Um für einen Host konfigurierte Webszenarien anzuzeigen, gehen Sie zu Monitoring → Hosts, suchen Sie den Host in der Liste und klicken Sie in der letzten Spalte auf den Hyperlink Web. Klicken Sie auf den Namen des Szenarios, um detaillierte Informationen zu erhalten.

Eine Übersicht der Webszenarien kann auch in Dashboards mit dem Widget „Web monitoring“ angezeigt werden.
Aktuelle Ergebnisse der Ausführung des Webszenarios sind im Abschnitt Monitoring → Latest data verfügbar.
Erweiterte Überwachung
Manchmal ist es notwendig, den Inhalt empfangener HTML-Seiten zu protokollieren.
Dies ist besonders nützlich, wenn ein Schritt in einem Webszenario fehlschlägt.
Debug-Level 5 (Trace) dient genau diesem Zweck.
Dieses Level kann in den Konfigurationsdateien von Server und Proxy festgelegt oder über eine Option zur Laufzeitsteuerung verwendet werden (-R log_level_increase="http poller,N", wobei N die Prozessnummer ist).
Die folgenden Beispiele zeigen, wie die erweiterte Überwachung gestartet werden kann, vorausgesetzt, Debug-Level 4 ist bereits gesetzt:
# Log-Level aller HTTP-Poller erhöhen:
zabbix_server -R log_level_increase="http poller"
# Log-Level des zweiten HTTP-Pollers erhöhen:
zabbix_server -R log_level_increase="http poller,2"
Wenn die erweiterte Webüberwachung nicht erforderlich ist, kann sie mit der
Option -R log_level_decrease beendet werden.

