Webüberwachung

Übersicht

Mit Zabbix können Sie mehrere Verfügbarkeitsaspekte von Websites überprüfen.

Für die Durchführung des Web-Monitorings muss der Zabbix Server zunächst mit cURL- Unterstützung (libcurl) konfiguriert werden.

Um das Web-Monitoring zu aktivieren, müssen Sie Web-Szenarien definieren. Ein Web-Szenario besteht aus einer oder mehreren HTTP-Anfragen oder "Schritten". Die Schritte werden vom Zabbix Server in einer vordefinierten Reihenfolge regelmäßig ausgeführt. Wird ein Host über einen Proxy überwacht, werden die Schritte vom Proxy ausgeführt.

Web-Szenarien werden Hosts/Vorlagen auf die gleiche Weise wie Datenpunkte, Auslöser usw. zugeordnet. Das bedeutet, dass Web-Szenarien auch auf Vorlagenebene erstellt und dann in einem Schritt auf mehrere Hosts angewendet werden können.

In jedem Web-Szenario werden die folgenden Informationen erfasst:

  • durchschnittliche Download-Geschwindigkeit pro Sekunde für alle Schritte des gesamten Szenarios
  • Nummer des fehlgeschlagenen Schritts
  • letzte Fehlermeldung

In jedem Schritt eines Web-Szenarios werden die folgenden Informationen erfasst:

  • Download-Geschwindigkeit pro Sekunde
  • Antwortzeit
  • Antwortcode

Weitere Informationen finden Sie unter Web-Monitoring-Datenpunkte.

Die beim Ausführen von Web-Szenarien erfassten Daten werden in der Datenbank gespeichert. Die Daten werden automatisch für Diagramme, Auslöser und Benachrichtigungen verwendet.

Zabbix kann außerdem 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 Web-Szenarios folgt Zabbix optional Weiterleitungen (siehe unten die Option Weiterleitungen folgen). Die maximale Anzahl an 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.

Konfigurieren eines Webszenarios

So konfigurieren Sie ein Webszenario:

  1. Gehen Sie zu: Datensammlung > Hosts (oder Vorlagen).
  2. Klicken Sie in der Zeile des Hosts/der Vorlage auf Web.
  3. Klicken Sie rechts auf Webszenario erstellen (oder auf den Namen des Szenarios, um ein vorhandenes Szenario zu bearbeiten).
  4. Geben Sie die Parameter des Szenarios im Formular ein.

Auf der Registerkarte Szenario können Sie die allgemeinen Parameter eines Webszenarios konfigurieren.

Alle Pflichtfelder sind mit einem roten Sternchen gekennzeichnet.

Parameter des Szenarios:

Parameter Beschreibung
Name Eindeutiger Name des Szenarios.
Benutzermakros werden unterstützt. Beachten Sie, dass diese Makros in den Namen der Webüberwachungs-Datenpunkte nicht aufgelöst werden, wenn Benutzermakros verwendet werden.
Aktualisierungsintervall Gibt an, 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 einer Änderung seines Werts (z. B. 5m → 30s) die nächste Prüfung gemäß 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 der Schritte des Webszenarios. Bei Netzwerkproblemen (Zeitüberschreitung, keine Verbindung usw.) kann Zabbix die Ausführung eines Schritts mehrmals wiederholen. Der festgelegte Wert gilt gleichermaßen für jeden Schritt des Szenarios. Es können bis zu 10 Versuche angegeben werden; der Standardwert ist 1.
Hinweis: Zabbix wiederholt einen Schritt nicht aufgrund eines falschen Antwortcodes oder weil eine erforderliche Zeichenfolge nicht übereinstimmt.
Agent Wählen Sie einen Client-Agent aus.
Zabbix gibt sich als der ausgewählte Browser aus. Dies ist nützlich, wenn eine Website je nach Browser unterschiedliche Inhalte zurückgibt.
In diesem Feld können Benutzermakros verwendet werden.
HTTP-Proxy Sie können einen 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 das Protokollpräfix wurde in cURL 7.21.7 hinzugefügt). Wenn kein Protokoll angegeben wird, wird der Proxy als HTTP-Proxy behandelt.
Standardmäßig wird Port 1080 verwendet.
Wenn ein Proxy angegeben ist, überschreibt er proxybezogene Umgebungsvariablen wie http_proxy und HTTPS_PROXY. Wenn kein Proxy angegeben ist, überschreibt er proxybezogene Umgebungsvariablen nicht. Der eingegebene Wert wird unverändert übernommen; es findet keine Plausibilitätsprüfung statt.
Sie können auch eine SOCKS-Proxyadresse eingeben. Wenn Sie das falsche Protokoll angeben, schlägt die Verbindung fehl und der Datenpunkt wird nicht unterstützt.
Beachten Sie, dass HTTP-Proxy nur einfache Authentifizierung unterstützt.
In diesem Feld können Benutzermakros verwendet werden.
Variablen Variablen, die in den Schritten des Szenarios 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)
Beispiel:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
{url}=jsonpath:$.host_url
{status}=xmlxpath://host/response/status
{newvar}={{myvar}.btoa()}
Die Makros können anschließend in den Schritten als {username}, {password}, {hostid} usw. referenziert 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 ermitteln; der extrahierte Wert kann daher erst auf den darauffolgenden Schritt angewendet werden.
Wenn der Wertteil mit regex: beginnt, wird der darauf folgende 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. Bei Verwendung in rohen POST-Daten oder direkt in der URL müssen sie jedoch manuell URL-kodiert werden.
Header HTTP-Header werden beim Ausführen einer Anfrage verwendet. Standardheader und benutzerdefinierte Header können verwendet werden.
Header werden abhängig vom auf Szenarioebene aus einer Dropdown-Liste ausgewählten Agent-Typ mit Standardeinstellungen zugewiesen und auf alle Schritte angewendet, sofern sie nicht auf Schrittebene benutzerdefiniert definiert wurden.
Beachten Sie, dass die Definition des Headers auf Schrittebene automatisch alle zuvor definierten Header verwirft, mit Ausnahme eines Standardheaders, der durch Auswahl von „User-Agent“ aus einer Dropdown-Liste auf Szenarioebene zugewiesen wurde.
Der Standardheader „User-Agent“ kann jedoch ebenfalls überschrieben werden, indem er auf Schrittebene angegeben wird.
Um den Header auf Szenarioebene zu deaktivieren, muss der Header auf Schrittebene benannt und ohne Wert angegeben werden.
Header sollten mit derselben Syntax aufgelistet werden, wie sie im HTTP-Protokoll erscheinen würden; optional können einige zusätzliche Funktionen unterstützt durch die cURL-Option CURLOPT_HTTPHEADER verwendet werden.
Beispiel:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
User macros und {HOST.*} Makros werden unterstützt.
Aktiviert Das Szenario ist aktiv, wenn dieses Kontrollkästchen aktiviert ist; andernfalls ist es deaktiviert.

Beachten Sie, dass beim Bearbeiten eines vorhandenen Szenarios zwei zusätzliche Schaltflächen im Formular verfügbar sind:

Erstellt ein weiteres Szenario auf Grundlage der Eigenschaften des vorhandenen Szenarios.
Löscht Verlaufs- und Trenddaten für das Szenario. Dadurch führt der Server das Szenario unmittelbar nach dem Löschen der Daten aus.

Wenn das Feld HTTP-Proxy leer bleibt, können Sie einen HTTP-Proxy auch über proxybezogene Umgebungsvariablen verwenden.

Für HTTP-Prüfungen setzen Sie die Umgebungsvariable http_proxy für den Zabbix-Serverbenutzer. Beispiel: http_proxy=http://proxy_ip:proxy_port.

Für HTTPS-Prüfungen setzen Sie die Umgebungsvariable HTTPS_PROXY. Beispiel: HTTPS_PROXY=http://proxy_ip:proxy_port. Weitere Informationen erhalten Sie durch Ausführen des Shell-Befehls: # man curl.

Auf der Registerkarte Schritte können Sie die Schritte des Webszenarios konfigurieren. Um einen Schritt zu einem Webszenario 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.

Konfigurationsschritte

Schrittparameter:

Parameter Beschreibung
Name Eindeutiger Schrittname.
Benutzermakros werden unterstützt. Beachten Sie, dass diese Makros in den Namen von Webüberwachungs-Datenpunkten nicht aufgelöst werden, wenn Benutzermakros verwendet 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
Domänennamen können in Unicode-Zeichen angegeben werden. Sie werden bei der Ausführung des Webszenarioschritts automatisch in ASCII mittels Punycode konvertiert.
Mit der Schaltfläche Parse können optionale Abfragefelder (wie ?key=value&limit=10) von der URL getrennt werden. Dabei werden die Attribute und Werte zur automatischen URL-Kodierung in Abfragefelder verschoben.
In der URL können Variablen mithilfe der Syntax {macro} verwendet werden. Variablen können manuell mithilfe der Syntax {{macro}.urlencode()} URL-kodiert werden.
Benutzermakros und {HOST.*}-Makros werden unterstützt.
Aus Sicherheitsgründen sollten tatsächliche Benutzernamen oder Passwörter nicht in URLs enthalten sein. Verwenden Sie stattdessen Benutzermakros, um die Offenlegung von Zugangsdaten zu vermeiden.
Begrenzt auf 2048 Zeichen.
Abfragefelder HTTP-GET-Variablen für die URL.
Werden 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. Bei Verwendung der Syntax {{macro}.urlencode()} werden sie doppelt URL-kodiert.
Benutzermakros und {HOST.*}-Makros werden unterstützt.
Post HTTP-POST-Variablen.
Im Modus Formulardaten werden sie 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 Rohdaten werden Attribute und Werte in einer einzigen Zeile angezeigt und mit dem Symbol & verkettet.
Rohwerte können manuell mithilfe der Syntax {{macro}.urlencode()} oder {{macro}.urldecode()} URL-kodiert bzw. dekodiert werden.
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.
Variablen Variablen auf Schrittebene, die für GET- und POST-Funktionen verwendet werden können.
Werden 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 erst auf den folgenden Schritt aus, nicht auf den aktuellen Schritt.
Sie haben das folgende Format:
{macro}=value
{macro}=regex:<regular expression>
Weitere Informationen finden Sie in der Variablenbeschreibung auf Szenarioebene.
Variablen werden automatisch URL-kodiert, wenn sie in Abfragefeldern oder Formulardaten für POST-Variablen verwendet werden. Bei Verwendung in rohen POST-Daten oder direkt in der URL müssen sie jedoch manuell URL-kodiert werden.
Header Benutzerdefinierte HTTP-Header, die beim Ausführen einer Anfrage gesendet werden.
Werden als Attribut-Wert-Paare angegeben.
Ein auf Schrittebene definierter Header wird für den jeweiligen Schritt verwendet.
Beachten Sie, dass die Definition des Headers auf Schrittebene automatisch alle zuvor definierten Header verwirft, mit Ausnahme eines Standardheaders, der durch Auswahl von „User-Agent“ in einer Dropdown-Liste auf Szenarioebene zugewiesen wurde.
Der Standardheader „User-Agent“ kann jedoch ebenfalls überschrieben werden, indem er auf Schrittebene angegeben wird.
Wenn beispielsweise ein Headername zugewiesen, aber kein Wert festgelegt wird, wird der Standardheader auf Szenarioebene entfernt.
Benutzermakros und {HOST.*}-Makros werden unterstützt.
Dadurch wird die cURL-Option CURLOPT_HTTPHEADER festgelegt.
Weiterleitungen folgen Aktivieren Sie das Kontrollkästchen, um HTTP-Weiterleitungen zu folgen.
Dadurch wird die cURL-Option CURLOPT_FOLLOWLOCATION festgelegt.
Abrufmodus Wählen Sie den Abrufmodus aus:
Body – nur den Body aus der HTTP-Antwort abrufen
Header – nur die Header aus der HTTP-Antwort abrufen
Body und Header – Body und Header aus der HTTP-Antwort abrufen
Zeitüberschreitung Zabbix verwendet für die Verarbeitung der URL nicht mehr als die festgelegte Zeitspanne (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 Zeitüberschreitung Sekunden.
Zeitsuffixe werden unterstützt, z. B. 30s, 1m, 1h. Benutzermakros werden unterstützt.
Erforderliche Zeichenfolge Erforderliches Muster eines regulären Ausdrucks.
Wenn der abgerufene Inhalt (HTML) nicht mit dem erforderlichen Muster übereinstimmt, schlägt der Schritt fehl. Wenn das Feld leer ist, wird keine Prüfung auf die erforderliche Zeichenfolge durchgeführt.
Zum Beispiel:
Homepage of Zabbix
Welcome.*admin
Hinweis: Die Referenzierung von im Zabbix-Frontend erstellten regulären Ausdrücken wird in diesem Feld nicht unterstützt.
Benutzermakros und {HOST.*}-Makros werden unterstützt.
Erforderliche Statuscodes Liste der erwarteten HTTP-Statuscodes. Wenn Zabbix einen Code erhält, der nicht in der Liste enthalten ist, schlägt der Schritt fehl.
Wenn das Feld leer ist, wird keine Prüfung der Statuscodes durchgeführt.
Zum Beispiel: 200,201,210-299
Benutzermakros werden unterstützt.

Änderungen an Webszenarioschritten werden erst gespeichert, wenn das gesamte Szenario gespeichert wird.

Siehe auch ein Praxisbeispiel, das zeigt, wie Webüberwachungsschritte konfiguriert werden können.

Tags konfigurieren

Auf der Registerkarte Tags können Sie Tags auf Szenarioebene definieren (Tags).

Durch das Tagging können Sie Webszenarien und Datenpunkte zur Webüberwachung filtern.

Authentifizierung konfigurieren

Auf der Registerkarte Authentifizierung können Sie die Authentifizierungsoptionen für das Szenario konfigurieren. Ein grüner Punkt neben dem Namen der Registerkarte zeigt an, dass eine HTTP-Authentifizierung aktiviert ist.

Authentifizierungsparameter:

Parameter Beschreibung
HTTP-Authentifizierung Wählen Sie die Authentifizierungsoption aus:
Keine – keine Authentifizierung wird verwendet;
Basic – die Basic-Authentifizierung wird verwendet;
NTLM – die NTLM-Authentifizierung (Windows NT LAN Manager) wird verwendet;
Kerberos – die Kerberos-Authentifizierung wird verwendet (siehe auch: Kerberos mit Zabbix konfigurieren);
Digest – die Digest-Authentifizierung wird verwendet.
Benutzer Geben Sie den Benutzernamen ein (bis zu 255 Zeichen).
Dieses Feld ist verfügbar, wenn HTTP-Authentifizierung auf Basic, NTLM, Kerberos oder Digest gesetzt ist. Benutzermakros werden unterstützt.
Passwort Geben Sie das Benutzerpasswort ein (bis zu 255 Zeichen).
Dieses Feld ist verfügbar, wenn HTTP-Authentifizierung auf Basic, NTLM, Kerberos oder Digest gesetzt ist. Benutzermakros werden unterstützt.
SSL-Peer überprüfen Aktivieren Sie das Kontrollkästchen, um das SSL-Zertifikat des Webservers zu überprüfen.
Das Serverzertifikat wird anhand der Zertifikate der vertrauenswürdigen Zertifizierungsstellen (CA) am systemweiten CA-Speicherort überprüft. Sie können den Speicherort der CA-Dateien mit dem Zabbix-Server- oder Proxy-Konfigurationsparameter SSLCALocation überschreiben.
Dadurch wird die cURL-Option CURLOPT_SSL_VERIFYPEER gesetzt.
SSL-Host überprüfen Aktivieren Sie das Kontrollkästchen, um zu überprüfen, ob das Feld Common Name oder das Feld Subject Alternate Name des Webserverzertifikats übereinstimmt.
Dadurch wird die cURL-Option CURLOPT_SSL_VERIFYHOST gesetzt.
SSL-Zertifikatsdatei Name der SSL-Zertifikatsdatei, die für die Clientauthentifizierung verwendet wird. Die Zertifikatsdatei muss im PEM1-Format vorliegen. Wenn die Zertifikatsdatei auch den privaten Schlüssel enthält, lassen Sie das Feld SSL-Schlüsseldatei leer. Wenn der Schlüssel verschlüsselt ist, geben Sie das Passwort im Feld SSL-Schlüsselpasswort an. Das Verzeichnis, das diese Datei enthält, wird durch den Zabbix-Server- oder Proxy-Konfigurationsparameter SSLCertLocation festgelegt.
In diesem Feld können HOST.*-Makros und Benutzermakros verwendet werden.
Dadurch wird die cURL-Option CURLOPT_SSLCERT gesetzt.
SSL-Schlüsseldatei Name der privaten SSL-Schlüsseldatei, die für die Clientauthentifizierung verwendet wird. Die Datei mit dem privaten Schlüssel muss im PEM1-Format vorliegen. Das Verzeichnis, das diese Datei enthält, wird durch den Zabbix-Server- oder Proxy-Konfigurationsparameter SSLKeyLocation festgelegt.
In diesem Feld können HOST.*-Makros und Benutzermakros verwendet werden.
Dadurch wird die cURL-Option CURLOPT_SSLKEY gesetzt.
SSL-Schlüsselpasswort Passwort der privaten SSL-Schlüsseldatei.
In diesem Feld können Benutzermakros verwendet werden.
Dadurch wird die cURL-Option CURLOPT_KEYPASSWD gesetzt.

[1] Zabbix unterstützt Zertifikats- und private Schlüsseldateien ausschließlich im PEM-Format. Wenn Ihre Zertifikats- und privaten Schlüsseldaten in einer Datei im PKCS #12-Format vorliegen (üblicherweise 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

Der Zabbix-Server übernimmt Änderungen an Zertifikaten ohne Neustart.

Wenn sich Clientzertifikat und privater Schlüssel in einer einzigen Datei befinden, geben Sie diese einfach im Feld „SSL-Zertifikatsdatei“ an und lassen Sie das Feld „SSL-Schlüsseldatei“ leer. Zertifikat und Schlüssel müssen weiterhin im PEM-Format vorliegen. Das Zusammenführen von Zertifikat und Schlüssel ist einfach:

cat client.crt client.key > client.pem

Anzeige

So zeigen Sie die für einen Host konfigurierten Webszenarien an:

  1. Gehen Sie zu Monitoring > Hosts.
  2. Suchen Sie den Host in der Liste und klicken Sie in der letzten Spalte auf den Hyperlink Web.
  3. Klicken Sie auf den Namen des Szenarios, um detaillierte Informationen anzuzeigen.

Eine Übersicht der Webszenarien kann auch in Dashboards über das Widget zur Webüberwachung angezeigt werden.

Die aktuellen Ergebnisse der Ausführung des Webszenarios finden Sie im Abschnitt Monitoring > Latest data.

Erweiterte Überwachung

Manchmal ist es notwendig, den empfangenen Inhalt einer HTML-Seite zu protokollieren.
Dies ist besonders nützlich, wenn ein Schritt eines Web-Szenarios fehlschlägt.
Dafür dient die Debug-Stufe 5 (trace).
Diese Stufe kann in den Konfigurationsdateien Server und Proxy oder über eine Option zur Laufzeitsteuerung (-R log_level_increase="http poller,N", wobei N die Prozessnummer ist) gesetzt werden.
Die folgenden Beispiele zeigen, wie die erweiterte Überwachung gestartet werden kann, sofern die Debug-Stufe 4 bereits gesetzt ist:

# Protokollstufe aller HTTP-Poller erhöhen:
zabbix_server -R log_level_increase="http poller"

# Protokollstufe 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 gestoppt werden.