7 Monitorowanie WWW

Przegląd

Za pomocą Zabbix można sprawdzać kilka aspektów dostępności stron internetowych.\

Aby wykonywać monitoring WWW, serwer Zabbix musi być wcześniej skonfigurowany z obsługą cURL (libcurl).

Aby włączyć monitoring WWW, należy zdefiniować scenariusze WWW. Scenariusz WWW składa się z jednego lub kilku żądań HTTP, czyli „kroków”. Kroki są okresowo wykonywane przez serwer Zabbix we wcześniej zdefiniowanej 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 itd. Oznacza to, że scenariusze WWW można również tworzyć na poziomie szablonu, a następnie zastosować do wielu hostów jednocześnie.

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 monitoringu WWW.

Dane zebrane podczas wykonywania scenariuszy WWW są przechowywane w bazie danych. Dane te są automatycznie wykorzystywane do tworzenia wykresów, wyzwalaczy i powiadomień.

Zabbix może również sprawdzać, czy pobrana strona HTML zawiera wcześniej zdefiniowany ciąg znaków. Może wykonywać symulowane logowanie i podążać ścieżką symulowanych kliknięć myszą na stronie.

Monitoring WWW w Zabbix obsługuje zarówno HTTP, jak i HTTPS. Podczas uruchamiania scenariusza WWW Zabbix może opcjonalnie podążać za przekierowaniami (zobacz opcję Follow redirects poniżej). Maksymalna liczba przekierowań jest na stałe ustawiona na 10 (przy użyciu opcji cURL CURLOPT_MAXREDIRS). Wszystkie pliki cookie są zachowywane podczas wykonywania pojedynczego scenariusza.

Konfigurowanie scenariusza WWW

Aby skonfigurować scenariusz WWW:

  • 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

Zakładka Scenario umożliwia skonfigurowanie ogólnych parametrów scenariusza WWW.

Wszystkie wymagane 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, makra te pozostaną nierozwinięte w nazwach pozycji monitorowania WWW.
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 wartości — później).
Nowe scenariusze WWW zostaną sprawdzone w ciągu 60 sekund od ich utworzenia.
Attempts Liczba prób wykonania kroków scenariusza WWW. W przypadku problemów sieciowych (timeout, brak łączności itp.) Zabbix może powtórzyć wykonanie kroku kilka razy. Ustawiona wartość będzie miała jednakowy wpływ na każdy krok 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 lub niedopasowania wymaganego ciągu znaków.
Agent Wybierz agent klienta.
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ć używany HTTP proxy, stosując format [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 określono protokołu, proxy będzie traktowany jako HTTP proxy.
Domyślnie zostanie użyty port 1080.
Jeśli określono, proxy nadpisze zmienne środowiskowe związane z proxy, takie jak http_proxy, HTTPS_PROXY. Jeśli nie określono, proxy nie nadpisze zmiennych środowiskowych związanych z proxy. Wprowadzona wartość jest przekazywana „as is”, bez sprawdzania poprawności.
Możesz również podać adres SOCKS proxy. Jeśli określisz nieprawidłowy protokół, połączenie nie powiedzie się, a pozycja stanie się nieobsługiwana.
Uwaga: w przypadku HTTP proxy 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).
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()}
Do makr 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 do pobrania wartości wyrażenia regularnego, więc wyodrębniona wartość może zostać zastosowana dopiero w następnym kroku.
Jeśli część wartości zaczyna się od regex:, część po niej jest traktowana jako wyrażenie regularne przeszukujące stronę WWW 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}.
Zmienne są automatycznie kodowane URL przy użyciu 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.
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ą 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ć nadpisany przez określenie go na poziomie kroku.
Aby usunąć nagłówek na poziomie scenariusza, należy podać nazwę nagłówka i przypisać mu pustą wartość na poziomie kroku.
Nagłówki powinny być podawane przy użyciu tej samej składni, w jakiej występują 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 trendy dla scenariusza. Spowoduje to, że serwer wykona scenariusz natychmiast po usunięciu danych.

Jeśli pole HTTP proxy pozostanie puste, innym sposobem użycia HTTP proxy 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 jest dostępnych po uruchomieniu polecenia powłoki: # man curl.

Zakładka Steps umożliwia skonfigurowanie kroków scenariusza WWW. Aby dodać krok scenariusza WWW, 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, makra te pozostaną nierozwinięte w nazwach pozycji monitorowania WWW.
URL URL, z którym ma zostać nawiązane połączenie i z którego mają zostać pobrane dane. Na przykład:
https://www.example.com
http://www.example.com/download
Nazwy domen mogą być podawane przy użyciu znaków 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ą rozwijane, 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 są określane jako pary atrybut-wartość.
Wartości są automatycznie kodowane URL. Wartości ze zmiennych scenariusza, makr użytkownika lub makr {HOST.*} są rozwijane, 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ć kodowane/dekodowane URL ręcznie 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 tej zmiennej, 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 surowych danych 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 nagłówka domyślnego 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 bez ustawienia wartości spowoduje usunięcie domyślnego nagłówka na poziomie scenariusza.
Obsługiwane są makra użytkownika oraz makra {HOST.*}.
Ustawia to opcję cURL CURLOPT_HTTPHEADER.
Podążaj za przekierowaniami Zaznacz pole wyboru, aby podążać za przekierowaniami HTTP.
Ustawia to 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
Limit czasu Zabbix nie poświęci na przetwarzanie URL więcej czasu niż ustawiona wartość (od jednej sekundy do maksymalnie 1 godziny). W rzeczywistości parametr ten definiuje maksymalny czas na nawiązanie połączenia z URL oraz maksymalny czas wykonania żądania HTTP. Dlatego Zabbix nie poświęci na krok więcej niż 2 x Limit czasu sekund.
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 Zabbix frontend 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 dopiero po zapisaniu całego scenariusza.

Zobacz także praktyczny przykład tego, 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 WWW skonfigurowane dla hosta, przejdź do Monitoring → Hosts, odszukaj host na liście i kliknij hiperłącze Web w ostatniej kolumnie. Kliknij nazwę scenariusza, aby uzyskać szczegółowe informacje.

Przegląd scenariuszy WWW można również wyświetlić w Dashboards za pomocą widżetu monitorowania WWW.

Ostatnie wyniki wykonania scenariusza WWW 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.