7 Monitorowanie WWW
Przegląd
Za pomocą Zabbix możesz sprawdzać kilka aspektów dostępności witryn internetowych.
Aby wykonywać monitorowanie WWW, serwer Zabbix musi być początkowo skonfigurowany z obsługą cURL (libcurl).
Aby aktywować monitorowanie WWW, musisz zdefiniować scenariusze WWW. Scenariusz WWW składa się z jednego lub kilku żądań HTTP albo "kroków". Kroki są okresowo wykonywane przez serwer Zabbix w z góry określonej kolejności. Jeśli host jest monitorowany przez proxy, kroki są wykonywane przez proxy.
Scenariusze WWW są przypisywane do hostów/szablonów w taki sam sposób jak pozycje, wyzwalacze itp. Oznacza to, że scenariusze WWW można również tworzyć na poziomie szablonu, a następnie zastosować do wielu hostów jednym działaniem.
W każdym scenariuszu WWW zbierane są następujące informacje:
- średnia prędkość pobierania na sekundę dla wszystkich kroków całego scenariusza
- numer kroku, który zakończył się niepowodzeniem
- ostatni komunikat o błędzie
W każdym kroku scenariusza WWW zbierane są następujące informacje:
- prędkość pobierania na sekundę
- czas odpowiedzi
- kod odpowiedzi
Więcej informacji znajdziesz w sekcji pozycje monitorowania WWW.
Dane zbierane podczas wykonywania scenariuszy WWW są przechowywane w bazie danych. Dane są automatycznie wykorzystywane do wykresów, wyzwalaczy i powiadomień.
Zabbix może również sprawdzać, czy pobrana strona HTML zawiera z góry określony ciąg znaków. Może wykonać symulowane logowanie i przejść przez ścieżkę symulowanych kliknięć myszą na stronie.
Monitorowanie WWW w Zabbix obsługuje zarówno HTTP, jak i HTTPS. Podczas uruchamiania scenariusza WWW Zabbix opcjonalnie będzie podążać za przekierowaniami (zobacz opcję Follow redirects poniżej). Maksymalna liczba przekierowań jest na sztywno ustawiona na 10 (z użyciem opcji cURL CURLOPT_MAXREDIRS). Wszystkie pliki cookie są zachowywane podczas wykonywania pojedynczego scenariusza.
Konfigurowanie scenariusza web
Aby skonfigurować scenariusz web:
- Przejdź do: Data collection → Hosts (lub Templates)
- Kliknij Web w wierszu hosta/szablonu
- Kliknij Create web scenario po prawej stronie (lub nazwę scenariusza, aby edytować istniejący scenariusz)
- Wprowadź parametry scenariusza w formularzu
Karta Scenario umożliwia konfigurację ogólnych parametrów scenariusza web.

Wszystkie obowiązkowe pola wejściowe są oznaczone czerwoną gwiazdką.
Parametry scenariusza:
| Parameter | Description |
|---|---|
| Name | Unikalna nazwa scenariusza. Obsługiwane są makra użytkownika. Uwaga: jeśli używane są makra użytkownika, pozostaną one nierozwiązane w nazwach pozycji monitorowania web. |
| Update interval | Jak często scenariusz będzie wykonywany. Obsługiwane są sufiksy czasu, np. 30s, 1m, 2h, 1d. Obsługiwane są makra użytkownika. Uwaga: jeśli używane jest makro użytkownika i jego wartość zostanie zmieniona (np. 5m → 30s), następne sprawdzenie zostanie wykonane zgodnie z poprzednią wartością (w przykładzie - później). Nowe scenariusze web zostaną sprawdzone w ciągu 60 sekund od utworzenia. |
| Attempts | Liczba prób wykonania kroków scenariusza web. W przypadku problemów sieciowych (timeout, brak łączności itp.) Zabbix może powtórzyć wykonanie kroku kilka razy. Ustawiona wartość będzie jednakowo wpływać na każdy krok scenariusza. Można określić do 10 prób, wartość domyślna to 1. Uwaga: Zabbix nie powtórzy kroku z powodu nieprawidłowego kodu odpowiedzi lub niezgodności wymaganego ciągu znaków. |
| Agent | Wybierz klienta agent. Zabbix będzie udawać wybraną przeglądarkę. Jest to przydatne, gdy witryna zwraca różną zawartość dla różnych przeglądarek. W tym polu można używać makr użytkownika. |
| HTTP proxy | Możesz określić proxy HTTP, używając formatu [protocol://][username[:password]@]proxy.example.com[:port].Ustawia to opcję cURL CURLOPT_PROXY. Opcjonalny prefiks protocol:// może być użyty do określenia alternatywnych protokołów proxy (obsługa prefiksu protokołu została dodana w cURL 7.21.7). Jeśli nie zostanie określony protokół, proxy będzie traktowany jako proxy HTTP.Domyślnie używany będzie port 1080. Jeśli zostanie określony, proxy nadpisze zmienne środowiskowe związane z proxy, takie jak http_proxy, HTTPS_PROXY. Jeśli nie zostanie określony, proxy nie nadpisze zmiennych środowiskowych związanych z proxy. Wprowadzona wartość jest przekazywana "tak jak jest", bez sprawdzania poprawności. Możesz również podać adres proxy SOCKS. Jeśli określisz niewłaściwy protokół, połączenie nie powiedzie się, a pozycja stanie się nieobsługiwana. Uwaga: z proxy HTTP obsługiwane jest tylko proste uwierzytelnianie. W tym polu można używać makr użytkownika. |
| Variables | Zmienne, które mogą być używane w krokach scenariusza (URL, zmienne post). Ich format jest następujący: {macro1}=value1 {macro2}=value2 {macro3}=regex:<regular expression> {macro4}=jsonpath:<jsonpath> {macro5}=xmlxpath:<xmlxpath> {macro6}={{macro}.function()} (zobacz funkcje makr) Na przykład: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) {url}=jsonpath:$.host_url {status}=xmlxpath://host/response/status {newvar}={{myvar}.btoa()} Makra można następnie odwoływać się w krokach jako {username}, {password}, {hostid} itd. Zabbix automatycznie zastąpi je rzeczywistymi wartościami. Należy pamiętać, że zmienne z regex: wymagają jednego kroku, aby uzyskać wartość wyrażenia regularnego, więc wyodrębniona wartość może zostać zastosowana dopiero do następnego kroku.Jeśli część wartości zaczyna się od regex:, to część po niej jest traktowana jako wyrażenie regularne, które przeszukuje stronę internetową i, jeśli zostanie znalezione, zapisuje dopasowanie w zmiennej. Musi być obecna co najmniej jedna podgrupa, aby można było wyodrębnić dopasowaną wartość.Obsługiwane są makra użytkownika oraz makra}. Zmienne są automatycznie kodowane jako URL, gdy są używane w polach zapytania lub danych formularza dla zmiennych post, ale muszą być kodowane ręcznie jako URL, gdy są używane w surowym post lub bezpośrednio w URL. |
| Headers | Nagłówki HTTP są używane podczas wykonywania żądania. Można używać nagłówków domyślnych i niestandardowych. Nagłówki będą przypisywane przy użyciu ustawień domyślnych zależnych od typu Agent wybranego z listy rozwijanej na poziomie scenariusza i będą stosowane do wszystkich kroków, chyba że zostaną zdefiniowane jako niestandardowe na poziomie kroku. Należy zauważyć, że zdefiniowanie nagłówka na poziomie kroku automatycznie odrzuca wszystkie wcześniej zdefiniowane nagłówki, z wyjątkiem domyślnego nagłówka przypisanego przez wybranie 'User-Agent' z listy rozwijanej na poziomie scenariusza. Jednak nawet domyślny nagłówek 'User-Agent' może zostać nadpisany przez określenie go na poziomie kroku. Aby usunąć nagłówek na poziomie scenariusza, należy nadać mu nazwę i przypisać brak wartości na poziomie kroku. Nagłówki powinny być podawane przy użyciu tej samej składni, jaką mają w protokole HTTP, opcjonalnie z użyciem dodatkowych funkcji obsługiwanych przez opcję cURL CURLOPT_HTTPHEADER. Na przykład: Accept-Charset=utf-8 Accept-Language=en-US Content-Type=application/xml; charset=utf-8 Obsługiwane są makra użytkownika oraz makra}. |
| Enabled | Scenariusz jest aktywny, jeśli to pole jest zaznaczone; w przeciwnym razie - wyłączony. |
Należy pamiętać, że podczas edycji istniejącego scenariusza w formularzu dostępne są dwa dodatkowe przyciski:
![]() |
Utwórz kolejny scenariusz na podstawie właściwości istniejącego. |
![]() |
Usuń dane historyczne i trendów dla scenariusza. Spowoduje to, że serwer wykona scenariusz natychmiast po usunięciu danych. |
Jeśli pole HTTP proxy pozostanie puste, innym sposobem użycia proxy HTTP jest ustawienie zmiennych środowiskowych związanych z proxy.
Dla sprawdzeń HTTP - ustaw zmienną środowiskową http_proxy dla użytkownika serwer Zabbix. Na przykład:
http_proxy=http://proxy_ip:proxy_port.
Dla sprawdzeń HTTPS - ustaw zmienną środowiskową HTTPS_PROXY. Na przykład: HTTPS_PROXY=http://proxy_ip:proxy_port. Więcej szczegółów można uzyskać, uruchamiając polecenie powłoki: # man curl.
Karta Steps umożliwia konfigurację kroków scenariusza web. Aby dodać krok scenariusza web, kliknij Add w bloku Steps.

Tajne makra użytkownika nie mogą być używane w adresach URL, ponieważ zostaną rozwinięte do "******".
Konfigurowanie kroków

Parametry kroku:
| Parametr | Opis |
|---|---|
| Nazwa | Unikalna nazwa kroku. Obsługiwane są makra użytkownika. Uwaga: jeśli używane są makra użytkownika, te makra pozostaną nierozwiązane w nazwach pozycji monitorowania WWW. |
| URL | URL, z którym należy się połączyć i z którego należy pobrać dane. Na przykład: https://www.example.com http://www.example.com/download Nazwy domen mogą być podawane znakami Unicode. Podczas wykonywania kroku scenariusza WWW są one automatycznie konwertowane z punycode do ASCII. Przycisk Parse może zostać użyty do oddzielenia opcjonalnych pól zapytania (takich jak ?name=Admin&password=mypassword) od URL, przenosząc atrybuty i wartości do Pól zapytania w celu automatycznego kodowania URL. W URL można używać zmiennych, stosując składnię {macro}. Zmienne mogą być kodowane URL ręcznie przy użyciu składni {{macro}.urlencode()}. Obsługiwane są makra użytkownika oraz makra}. Ograniczone do 2048 znaków. |
| Pola zapytania | Zmienne HTTP GET dla URL. Określane jako pary atrybut-wartość. Wartości są automatycznie kodowane URL. Wartości ze zmiennych scenariusza, makr użytkownika lub makr {HOST.*} są rozwiązywane, a następnie automatycznie kodowane URL. Użycie składni {{macro}.urlencode()} spowoduje ich podwójne zakodowanie URL. Obsługiwane są makra użytkownika oraz makra}. |
| Post | Zmienne HTTP POST. W trybie Form data określane jako pary atrybut-wartość. Wartości są automatycznie kodowane URL. Wartości ze zmiennych scenariusza, makr użytkownika lub makr {HOST.*} są rozwiązywane, a następnie automatycznie kodowane URL. W trybie Raw data atrybuty/wartości są wyświetlane w jednym wierszu i łączone symbolem &. Surowe wartości mogą być ręcznie kodowane/dekodowane URL przy użyciu składni {{macro}.urlencode()} lub {{macro}.urldecode()}. Na przykład: id=2345&userid={user} Jeśli {user} jest zdefiniowane jako zmienna scenariusza WWW, zostanie zastąpione swoją wartością podczas wykonywania kroku. Jeśli chcesz zakodować URL zmienną, zastąp {user} przez {{user}.urlencode()}. Obsługiwane są makra użytkownika oraz makra}. |
| Zmienne | Zmienne na poziomie kroku, które mogą być używane przez funkcje GET i POST. Określane jako pary atrybut-wartość. Zmienne na poziomie kroku zastępują zmienne na poziomie scenariusza lub zmienne z poprzedniego kroku. Jednak wartość zmiennej na poziomie kroku wpływa tylko na następny krok (a nie na bieżący krok). Mają one następujący format: {macro}=value {macro}=regex:<regular expression> Więcej informacji można znaleźć w opisie zmiennych na poziomie scenariusza. Zmienne są automatycznie kodowane URL, gdy są używane w polach zapytania lub danych formularza dla zmiennych post, ale muszą być kodowane URL ręcznie, gdy są używane w surowym post lub bezpośrednio w URL. |
| Nagłówki | Niestandardowe nagłówki HTTP, które zostaną wysłane podczas wykonywania żądania. Określane jako pary atrybut-wartość. Nagłówek zdefiniowany na poziomie kroku będzie używany dla tego konkretnego kroku. Należy pamiętać, że zdefiniowanie nagłówka na poziomie kroku automatycznie odrzuca wszystkie wcześniej zdefiniowane nagłówki, z wyjątkiem domyślnego nagłówka przypisanego przez wybranie 'User-Agent' z listy rozwijanej na poziomie scenariusza. Jednak nawet domyślny nagłówek 'User-Agent' może zostać nadpisany przez określenie go na poziomie kroku. Na przykład przypisanie nazwy nagłówkowi, ale bez ustawienia wartości, spowoduje usunięcie domyślnego nagłówka na poziomie scenariusza. Obsługiwane są makra użytkownika oraz makra {HOST.*}. To ustawia opcję cURL CURLOPT_HTTPHEADER. |
| Podążaj za przekierowaniami | Zaznacz pole wyboru, aby podążać za przekierowaniami HTTP. To ustawia opcję cURL CURLOPT_FOLLOWLOCATION. |
| Tryb pobierania | Wybierz tryb pobierania: Body - pobierz tylko treść z odpowiedzi HTTP Headers - pobierz tylko nagłówki z odpowiedzi HTTP Body and headers - pobierz treść i nagłówki z odpowiedzi HTTP |
| Timeout | Zabbix nie poświęci więcej niż ustawiony czas na przetwarzanie URL (od jednej sekundy do maksymalnie 1 godziny). W praktyce ten parametr określa maksymalny czas na nawiązanie połączenia z URL oraz maksymalny czas wykonania żądania HTTP. Dlatego Zabbix nie poświęci więcej niż 2 x Timeout sekund na krok. Obsługiwane są sufiksy czasu, np. 30s, 1m, 1h. Obsługiwane są makra użytkownika. |
| Wymagany ciąg | Wymagany wzorzec wyrażenia regularnego. Jeśli pobrana zawartość (HTML) nie pasuje do wymaganego wzorca, krok zakończy się niepowodzeniem. Jeśli pole jest puste, sprawdzanie wymaganego ciągu nie jest wykonywane. Na przykład: Homepage of Zabbix Welcome.*admin Uwaga: Odwoływanie się w tym polu do wyrażeń regularnych utworzonych w frontend Zabbix nie jest obsługiwane. Obsługiwane są makra użytkownika oraz makra}. |
| Wymagane kody statusu | Lista oczekiwanych kodów statusu HTTP. Jeśli Zabbix otrzyma kod, którego nie ma na liście, krok zakończy się niepowodzeniem. Jeśli pole jest puste, sprawdzanie kodów statusu nie jest wykonywane. Na przykład: 200,201,210-299 Obsługiwane są makra użytkownika. |
Wszelkie zmiany w krokach scenariusza WWW zostaną zapisane tylko wtedy, gdy zostanie zapisany cały scenariusz.
Zobacz także praktyczny przykład, jak można skonfigurować kroki monitorowania WWW.
Konfigurowanie tagów
Zakładka Tagi umożliwia definiowanie tagów na poziomie scenariusza.

Tagowanie umożliwia filtrowanie scenariuszy WWW oraz pozycji monitorowania WWW.
Konfigurowanie uwierzytelniania
Karta Authentication umożliwia skonfigurowanie opcji uwierzytelniania scenariusza. Zielona kropka obok nazwy karty wskazuje, że włączono jakiś typ uwierzytelniania HTTP.

Parametry uwierzytelniania:
| Parameter | Description |
|---|---|
| HTTP authentication | Wybierz opcję uwierzytelniania: None - bez uwierzytelniania; Basic - używane jest uwierzytelnianie podstawowe; NTLM - używane jest uwierzytelnianie NTLM (Windows NT LAN Manager); Kerberos - używane jest uwierzytelnianie Kerberos (zobacz także: Konfigurowanie Kerberos z Zabbix); Digest - używane jest uwierzytelnianie Digest. |
| User | Wprowadź nazwę użytkownika (do 255 znaków). Pole to jest dostępne, jeśli HTTP authentication jest ustawione na Basic, NTLM, Kerberos lub Digest. Obsługiwane są makra użytkownika. |
| Password | Wprowadź hasło użytkownika (do 255 znaków). Pole to jest dostępne, jeśli HTTP authentication jest ustawione na Basic, NTLM, Kerberos lub Digest. Obsługiwane są makra użytkownika. |
| SSL verify peer | Zaznacz pole wyboru, aby zweryfikować certyfikat SSL serwera WWW. Certyfikat serwera zostanie automatycznie pobrany z systemowej lokalizacji urzędu certyfikacji (CA). Lokalizację plików CA można nadpisać za pomocą parametru konfiguracji serwera Zabbix lub proxy SSLCALocation. Ustawia to opcję cURL CURLOPT_SSL_VERIFYPEER. |
| SSL verify host | Zaznacz pole wyboru, aby zweryfikować, czy pole Common Name lub Subject Alternate Name w certyfikacie serwera WWW jest zgodne. Ustawia to opcję cURL CURLOPT_SSL_VERIFYHOST. |
| SSL certificate file | Nazwa pliku certyfikatu SSL używanego do uwierzytelniania klienta. Plik certyfikatu musi być w formacie PEM1. Jeśli plik certyfikatu zawiera również klucz prywatny, pozostaw pole SSL key file puste. Jeśli klucz jest zaszyfrowany, podaj hasło w polu SSL key password. Katalog zawierający ten plik jest określany przez parametr konfiguracji serwera Zabbix lub proxy SSLCertLocation. W tym polu można używać makr HOST.* oraz makr użytkownika.Ustawia to opcję cURL CURLOPT_SSLCERT. |
| SSL key file | Nazwa pliku prywatnego klucza SSL używanego do uwierzytelniania klienta. Plik klucza prywatnego musi być w formacie PEM1. Katalog zawierający ten plik jest określany przez parametr konfiguracji serwera Zabbix lub proxy SSLKeyLocation. W tym polu można używać makr HOST.* oraz makr użytkownika.Ustawia to opcję cURL CURLOPT_SSLKEY. |
| SSL key password | Hasło pliku prywatnego klucza SSL. W tym polu można używać makr użytkownika. Ustawia to opcję cURL CURLOPT_KEYPASSWD. |
[1] Zabbix obsługuje wyłącznie pliki certyfikatów i kluczy prywatnych w formacie PEM. Jeśli masz dane certyfikatu i klucza prywatnego w pliku w formacie PKCS #12 (zwykle z rozszerzeniem *.p12 lub *.pfx), możesz wygenerować z niego plik PEM za pomocą następujących poleceń:
openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes -out ssl-cert.key
Serwer Zabbix wykrywa zmiany w certyfikatach bez ponownego uruchamiania.
Jeśli masz certyfikat klienta i klucz prywatny w jednym pliku, po prostu podaj go w polu "SSL certificate file" i pozostaw pole "SSL key file" puste. Certyfikat i klucz nadal muszą być w formacie PEM. Połączenie certyfikatu i klucza jest proste:
cat client.crt client.key > client.pem
Wyświetlanie
Aby wyświetlić scenariusze web skonfigurowane dla hosta, przejdź do Monitoring → Hosts, znajdź hosta na liście i kliknij hiperłącze Web w ostatniej kolumnie. Kliknij nazwę scenariusza, aby uzyskać szczegółowe informacje.

Przegląd scenariuszy web można również wyświetlić w Dashboards za pomocą widżetu monitorowania web.
Najnowsze wyniki wykonania scenariusza web są dostępne w sekcji Monitoring → Latest data.
Rozszerzone monitorowanie
Czasami konieczne jest rejestrowanie otrzymanej zawartości strony HTML.
Jest to szczególnie przydatne, jeśli któryś krok scenariusza webowego zakończy się niepowodzeniem.
Do tego celu służy poziom debugowania 5 (trace).
Ten poziom można ustawić w plikach konfiguracyjnych serwer i proxy lub za pomocą opcji runtime control (-R log_level_increase="http poller,N", gdzie N jest numerem procesu).
Poniższe przykłady pokazują, jak można uruchomić rozszerzone monitorowanie, pod warunkiem że poziom debugowania 4 jest już ustawiony:
# Increase log level of all http pollers:
zabbix_server -R log_level_increase="http poller"
# Increase log level of second http poller:
zabbix_server -R log_level_increase="http poller,2"
Jeśli rozszerzone monitorowanie webowe nie jest wymagane, można je zatrzymać za pomocą opcji
-R log_level_decrease.

