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: Gromadzenie danych > Hosty (lub Szablony)
  • Kliknij Web w wierszu hosta/szablonu
  • Kliknij po prawej stronie Utwórz scenariusz web (lub kliknij 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, makra te pozostaną 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 ponowić wykonanie kroku. Ustawiona wartość będzie jednakowo dotyczyć każdego kroku scenariusza. Można określić maksymalnie 10 prób, a wartość domyślna wynosi 1.
Uwaga: Zabbix nie ponowi 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żesz 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”; nie jest przeprowadzana kontrola poprawności.
Możesz również wprowadzić adres proxy SOCKS. Jeśli określisz 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 w celu pobrania wartości 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ę po nim jest traktowana jako wyrażenie regularne wyszukujące dane na stronie web; jeśli zostanie znalezione dopasowanie, jest ono zapisywane 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 w formacie URL, gdy są używane w polach zapytania lub danych formularza dla zmiennych post, ale w przypadku użycia w nieprzetworzonych danych post lub bezpośrednio w URL należy zakodować je 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 usuwa 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żna zastąpić, określając 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}.
Włączony Scenariusz jest aktywny, jeśli to pole wyboru jest zaznaczone; w przeciwnym razie jest wyłączony.

Podczas edytowania istniejącego scenariusza w formularzu dostępne są dwa dodatkowe przyciski:

Utwórz kolejny scenariusz na podstawie właściwości istniejącego scenariusza.
Usuń dane historii i trendów 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.

Nie należy używać poufnych makr użytkownika w adresach URL, ponieważ zostaną one 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, 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.