9 Monitorowanie WWW
Przegląd
Za pomocą Zabbix można 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 włączyć monitorowanie WWW, należy zdefiniować scenariusze WWW. Scenariusz WWW składa się z jednego lub kilku żądań HTTP lub "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 można znaleźć 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 może opcjonalnie śledzić przekierowania (zobacz opcję Follow redirects poniżej). Maksymalna liczba przekierowań jest na stałe 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 (limit czasu, 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 do użycia, stosując format [protocol://][username[:password]@]proxy.example.com[:port].Spowoduje to ustawienie opcji 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 określono protokołu, proxy będzie traktowane jako proxy HTTP.Domyślnie używany będzie port 1080. Jeśli zostanie określone, proxy nadpisze zmienne środowiskowe związane z proxy, takie jak http_proxy, HTTPS_PROXY. Jeśli nie zostanie określone, 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 nieprawidłowy protokół, połączenie zakończy się niepowodzeniem, 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ć 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 do pobrania wartości 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ę web i, jeśli zostanie znalezione, zapisuje dopasowanie do 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 w formacie URL, gdy są używane w polach zapytania lub danych formularza dla zmiennych post, ale muszą być kodowane ręcznie, 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 serwera 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.

Tajnych makr użytkownika nie wolno używać 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
Zakładka Authentication umożliwia skonfigurowanie opcji uwierzytelniania scenariusza. Zielona kropka obok nazwy zakładki wskazuje, że włączony jest 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 w Zabbix); Digest — używane jest uwierzytelnianie Digest. |
| User | Wprowadź nazwę użytkownika (do 255 znaków). To pole 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). To pole 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 weryfikować 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 konfiguracyjnego serwera lub proxy Zabbix SSLCALocation. Ustawia to opcję cURL CURLOPT_SSL_VERIFYPEER. |
| SSL verify host | Zaznacz pole wyboru, aby zweryfikować, czy pole Common Name lub pole Subject Alternate Name certyfikatu 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ślony przez parametr konfiguracyjny serwera lub proxy Zabbix SSLCertLocation. W tym polu można używać makr HOST.* i makr użytkownika.Ustawia to opcję cURL CURLOPT_SSLCERT. |
| SSL key file | Nazwa pliku klucza prywatnego SSL używanego do uwierzytelniania klienta. Plik klucza prywatnego musi być w formacie PEM1. Katalog zawierający ten plik jest określony przez parametr konfiguracyjny serwera lub proxy Zabbix SSLKeyLocation. W tym polu można używać makr HOST.* i makr użytkownika.Ustawia to opcję cURL CURLOPT_SSLKEY. |
| SSL key password | Hasło do pliku klucza prywatnego 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 dane certyfikatu i klucza prywatnego są zapisane w pliku w formacie PKCS #12 (zwykle z rozszerzeniem *.p12 lub *.pfx), można 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 konieczności ponownego uruchamiania.
Jeśli certyfikat klienta i klucz prywatny znajdują się 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 jakiś krok scenariusza WWW 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 to numer procesu).
Poniższe przykłady pokazują, jak można uruchomić rozszerzone monitorowanie, zakładając, że poziom debugowania 4 jest już ustawiony:
# Zwiększ poziom logowania wszystkich procesów http poller:
zabbix_server -R log_level_increase="http poller"
# Zwiększ poziom logowania drugiego procesu http poller:
zabbix_server -R log_level_increase="http poller,2"
Jeśli rozszerzone monitorowanie WWW nie jest wymagane, można je zatrzymać za pomocą opcji
-R log_level_decrease.

