Monitorowanie sieci web
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: Gromadzenie danych > Hosty (lub Szablony).
- Kliknij Web w wierszu hosta/szablonu.
- Kliknij po prawej stronie Utwórz scenariusz web (lub nazwę scenariusza, aby edytować istniejący scenariusz).
- Wprowadź parametry scenariusza w formularzu.
Karta Scenariusz umożliwia skonfigurowanie ogólnych parametrów scenariusza web.

Wszystkie wymagane pola wejściowe są oznaczone czerwoną gwiazdką.
Parametry scenariusza:
| Parametr | Opis |
|---|---|
| Nazwa | Unikalna nazwa scenariusza. Obsługiwane są makra użytkownika. Uwaga: jeśli używane są makra użytkownika, pozostaną one nierozwinięte w nazwach pozycji monitorowania web. |
| Interwał aktualizacji | Jak często scenariusz będzie wykonywany. Obsługiwane są przyrostki czasu, np. 30s, 1m, 2h, 1d. Obsługiwane są makra użytkownika. Uwaga: jeśli używane jest makro użytkownika, a jego wartość zostanie zmieniona (np. 5m → 30s), następne sprawdzenie zostanie wykonane zgodnie z poprzednią wartością (w przykładzie z podanymi wartościami nastąpi później). Nowe scenariusze web zostaną sprawdzone w ciągu 60 sekund od ich utworzenia. |
| Próby | Liczba prób wykonania kroków scenariusza web. W przypadku problemów z siecią (przekroczenie limitu czasu, brak połączenia itp.) Zabbix może kilkakrotnie powtórzyć wykonanie kroku. Ustawiona wartość będzie jednakowo dotyczyć każdego kroku scenariusza. Można określić maksymalnie 10 prób; wartość domyślna to 1. Uwaga: Zabbix nie powtórzy kroku z powodu nieprawidłowego kodu odpowiedzi ani niezgodności wymaganego ciągu znaków. |
| Agent | Wybierz agenta klienta. Zabbix będzie symulować wybraną przeglądarkę. Jest to przydatne, gdy witryna zwraca inną zawartość dla różnych przeglądarek. W tym polu można używać makr użytkownika. |
| Proxy HTTP | Można określić proxy HTTP do użycia, korzystając z formatu [protocol://][username[:password]@]proxy.example.com[:port].Ustawia to opcję cURL CURLOPT_PROXY. Opcjonalny prefiks protocol:// może służyć do określenia alternatywnych protokołów proxy (obsługa prefiksu protokołu została dodana w cURL 7.21.7). Jeśli protokół nie zostanie określony, proxy będzie traktowane jako proxy HTTP.Domyślnie używany będzie port 1080. Jeśli proxy zostanie określone, zastąpi powiązane z proxy zmienne środowiskowe, takie jak http_proxy i HTTPS_PROXY. Jeśli nie zostanie określone, nie zastąpi zmiennych środowiskowych związanych z proxy. Wprowadzona wartość jest przekazywana „bez zmian” i nie jest sprawdzana pod kątem poprawności. Można również wprowadzić adres proxy SOCKS. Jeśli zostanie określony nieprawidłowy protokół, połączenie nie powiedzie się, a pozycja stanie się nieobsługiwana. Uwaga: w przypadku proxy HTTP obsługiwane jest tylko proste uwierzytelnianie. W tym polu można używać makr użytkownika. |
| Zmienne | Zmienne, których można używać w krokach scenariusza (URL, zmienne post). Mają one następujący format: {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()} Następnie można odwoływać się do makr 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 pobierającego wartość wyrażenia regularnego, dlatego wyodrębniona wartość może zostać zastosowana dopiero w następnym kroku.Jeśli część wartości zaczyna się od regex:, część znajdująca się za nim jest traktowana jako wyrażenie regularne wyszukujące dane na stronie internetowej i, jeśli zostanie znalezione, zapisujące 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 {HOST.*}.Zmienne są automatycznie kodowane w formacie URL, gdy są używane w polach zapytania lub danych formularza dla zmiennych post, ale podczas używania w surowym poście lub bezpośrednio w URL muszą być kodowane w formacie URL ręcznie. |
| Nagłówki | Nagłówki HTTP są używane podczas wykonywania żądania. Można używać nagłówków domyślnych i niestandardowych. Nagłówki zostaną przypisane przy użyciu ustawień domyślnych zależnych od typu agenta wybranego z listy rozwijanej na poziomie scenariusza i zastosowane do wszystkich kroków, chyba że zostaną niestandardowo zdefiniowane na poziomie 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ć zastąpiony przez określenie go na poziomie kroku. Aby usunąć nagłówek na poziomie scenariusza, należy nadać mu nazwę i pozostawić jego wartość pustą na poziomie kroku. Nagłówki należy wyświetlać przy użyciu tej samej składni, w jakiej występują w protokole HTTP, opcjonalnie korzystając z 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 {HOST.*}. |
| Włączony | Scenariusz jest aktywny, jeśli to pole wyboru jest zaznaczone; w przeciwnym razie jest wyłączony. |
Należy pamiętać, że podczas edytowania istniejącego scenariusza w formularzu dostępne są dwa dodatkowe przyciski:
![]() |
Utworzenie kolejnego scenariusza na podstawie właściwości istniejącego scenariusza. |
![]() |
Usunięcie danych historycznych i danych trendów dla scenariusza. Spowoduje to, że serwer wykona scenariusz natychmiast po usunięciu danych. |
Jeśli pole Proxy HTTP pozostanie puste, innym sposobem użycia proxy HTTP jest ustawienie zmiennych środowiskowych związanych z proxy.
W przypadku sprawdzeń HTTP ustaw zmienną środowiskową http_proxy dla
użytkownika serwera Zabbix. Na przykład:
http_proxy=http://proxy_ip:proxy_port.
W przypadku sprawdzeń HTTPS ustaw zmienną środowiskową HTTPS_PROXY. Na
przykład: HTTPS_PROXY=http://proxy_ip:proxy_port. Więcej informacji można
uzyskać, uruchamiając polecenie powłoki: # man curl.
Karta Kroki umożliwia skonfigurowanie kroków scenariusza web. Aby dodać krok scenariusza web, kliknij Dodaj w bloku Kroki.

Tajnych makr użytkownika nie wolno używać w adresach URL, ponieważ zostaną rozwinięte do wartości "******".
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, pozostaną one nierozwinięte w nazwach pozycji monitorowania sieci 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ć określane za pomocą znaków Unicode. Podczas wykonywania kroku scenariusza sieci WWW są one automatycznie konwertowane na ASCII w formacie punycode. Przycisk Parse umożliwia oddzielenie opcjonalnych pól zapytania (takich jak ?key=value&limit=10) od URL, przenosząc atrybuty i wartości do pola Query fields w celu automatycznego kodowania URL.W URL można używać zmiennych, stosując składnię {macro}. Zmienne można ręcznie kodować w URL za pomocą składni {{macro}.urlencode()}. Obsługiwane są makra użytkownika i makra {HOST.*} makra.Ze względów bezpieczeństwa nie należy umieszczać rzeczywistych nazw użytkowników ani haseł w URL. Zamiast tego należy używać makr użytkownika, aby uniknąć ujawnienia danych uwierzytelniających. Ograniczenie do 2048 znaków. |
| Query fields | Zmienne HTTP GET dla URL. Określane jako pary atrybutów i wartości. Wartości są automatycznie kodowane w URL. Wartości ze zmiennych scenariusza, makr użytkownika lub makr {HOST.*} są rozwijane, a następnie automatycznie kodowane w URL. Użycie składni {{macro}.urlencode()} spowoduje ich podwójne kodowanie w URL.Obsługiwane są makra użytkownika i makra {HOST.*} makra. |
| Post | Zmienne HTTP POST. W trybie Form data określane jako pary atrybutów i wartości. Wartości są automatycznie kodowane w URL. Wartości ze zmiennych scenariusza, makr użytkownika lub makr {HOST.*} są rozwijane, a następnie automatycznie kodowane w URL.W trybie Raw data atrybuty/wartości są wyświetlane w jednym wierszu i łączone symbolem &. Wartości surowe można ręcznie kodować/dekodować w URL za pomocą składni {{macro}.urlencode()} lub {{macro}.urldecode()}. Na przykład: id=2345&userid={user} Jeśli {user} jest zdefiniowane jako zmienna scenariusza sieci WWW, zostanie zastąpione swoją wartością podczas wykonywania kroku. Aby zakodować zmienną w URL, należy zastąpić {user} przez {{user}.urlencode()}. Obsługiwane są makra użytkownika i makra {HOST.*} makra. |
| Variables | Zmienne na poziomie kroku, których można używać dla funkcji GET i POST. Określane jako pary atrybutów i wartości. Zmienne na poziomie kroku zastępują zmienne na poziomie scenariusza lub zmienne z poprzedniego kroku. Jednak wartość zmiennej na poziomie kroku wpływa dopiero na następny krok (a nie na bieżący krok). Mają następujący format: {macro}=value {macro}=regex:<regular expression> Więcej informacji zawiera opis zmiennych na poziomie scenariusza. Zmienne są automatycznie kodowane w URL, gdy są używane w polach zapytania lub danych formularza dla zmiennych post, ale w przypadku użycia w surowym poście lub bezpośrednio w URL należy zakodować je ręcznie. |
| Headers | Niestandardowe nagłówki HTTP wysyłane podczas wykonywania żądania. Określane jako pary atrybutów i wartości. Nagłówek zdefiniowany na poziomie kroku będzie używany dla danego 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żna zastąpić, określając go na poziomie kroku. Na przykład przypisanie nazwy nagłówkowi bez ustawienia wartości spowoduje usunięcie domyślnego nagłówka na poziomie scenariusza. Obsługiwane są makra użytkownika i makra {HOST.*}.Ustawia to opcję cURL CURLOPT_HTTPHEADER. |
| Follow redirects | Zaznacz pole wyboru, aby śledzić przekierowania HTTP. Ustawia to opcję cURL CURLOPT_FOLLOWLOCATION. |
| Retrieve mode | Wybierz tryb pobierania: Body - pobieranie tylko treści z odpowiedzi HTTP Headers - pobieranie tylko nagłówków z odpowiedzi HTTP Body and headers - pobieranie treści i nagłówków z odpowiedzi HTTP |
| Timeout | Zabbix nie poświęci na przetwarzanie URL więcej czasu niż ustawiona wartość (od jednej sekundy do maksymalnie 1 godziny). W rzeczywistości ten parametr określa maksymalny czas nawiązania połączenia z URL oraz maksymalny czas wykonywania żądania HTTP. Dlatego Zabbix nie poświęci na krok więcej niż 2 x Timeout sekund. Obsługiwane są przyrostki czasu, np. 30s, 1m, 1h. Obsługiwane są makra użytkownika. |
| Required string | Wymagany wzorzec wyrażenia regularnego. Jeśli pobrana treść (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 i makra {HOST.*} makra. |
| Required status codes | 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 sieci WWW zostaną zapisane dopiero po zapisaniu całego scenariusza.
Zobacz także przykład z życia wzięty pokazujący, jak można skonfigurować kroki monitorowania sieci WWW.
Konfigurowanie tagów
Karta Tagi umożliwia definiowanie tagów na poziomie scenariusza.

Tagowanie umożliwia filtrowanie scenariuszy webowych i pozycji monitorowania webowego.
Konfigurowanie uwierzytelniania
Karta Uwierzytelnianie umożliwia skonfigurowanie opcji uwierzytelniania scenariusza. Zielona kropka obok nazwy karty wskazuje, że włączono pewien typ uwierzytelniania HTTP.

Parametry uwierzytelniania:
| Parametr | Opis |
|---|---|
| Uwierzytelnianie HTTP | Wybierz opcję uwierzytelniania: Brak - uwierzytelnianie nie jest używane; 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. |
| Użytkownik | Wprowadź nazwę użytkownika (do 255 znaków). To pole jest dostępne, jeśli dla opcji Uwierzytelnianie HTTP ustawiono Basic, NTLM, Kerberos lub Digest. Obsługiwane są makra użytkownika. |
| Hasło | Wprowadź hasło użytkownika (do 255 znaków). To pole jest dostępne, jeśli dla opcji Uwierzytelnianie HTTP ustawiono Basic, NTLM, Kerberos lub Digest. Obsługiwane są makra użytkownika. |
| Weryfikuj element równorzędny SSL | Zaznacz pole wyboru, aby zweryfikować certyfikat SSL serwera WWW. Certyfikat serwera jest weryfikowany względem certyfikatów zaufanych urzędów certyfikacji (CA) z systemowej lokalizacji CA. Lokalizację plików CA można zastąpić za pomocą parametru konfiguracji serwera Zabbix lub proxy SSLCALocation. Ustawia to opcję cURL CURLOPT_SSL_VERIFYPEER. |
| Weryfikuj host SSL | Zaznacz pole wyboru, aby zweryfikować, czy pole Common Name lub Subject Alternate Name certyfikatu serwera WWW jest zgodne. Ustawia to opcję cURL CURLOPT_SSL_VERIFYHOST. |
| Plik certyfikatu SSL | 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 Plik klucza SSL puste. Jeśli klucz jest zaszyfrowany, określ hasło w polu Hasło klucza SSL. 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.* i makr użytkownika.Ustawia to opcję cURL CURLOPT_SSLCERT. |
| Plik klucza SSL | 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ślany przez parametr konfiguracji serwera Zabbix lub proxy SSLKeyLocation. W tym polu można używać makr HOST.* i makr użytkownika.Ustawia to opcję cURL CURLOPT_SSLKEY. |
| Hasło klucza SSL | Hasło 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 certyfikaty i pliki kluczy prywatnych w formacie PEM. Jeśli dane certyfikatu i klucza prywatnego znajdują się 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 ponownego uruchamiania.
Jeśli certyfikat klienta i klucz prywatny znajdują się w jednym pliku, określ go w polu „Plik certyfikatu SSL” i pozostaw pole „Plik klucza SSL” 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 internetowe skonfigurowane dla host:
- Przejdź do Monitoring > Hosts.
- Znajdź host na liście i kliknij hiperłącze Web w ostatniej kolumnie.
- Kliknij nazwę scenariusza, aby wyświetlić szczegółowe informacje.

Przegląd scenariuszy internetowych można również wyświetlić w sekcji Dashboards za pomocą widżetu monitorowania sieci Web.
Najnowsze wyniki wykonywania scenariusza internetowego 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.

