7 Tīmekļa uzraudzība

Pārskats

Ar Zabbix varat pārbaudīt vairākus tīmekļa vietņu pieejamības aspektus.

Lai veiktu tīmekļa uzraudzību, Zabbix serverim sākotnēji jābūt konfigurētam ar cURL (libcurl) atbalstu.

Lai aktivizētu tīmekļa uzraudzību, jums jādefinē tīmekļa scenāriji. Tīmekļa scenārijs sastāv no viena vai vairākiem HTTP pieprasījumiem jeb "soļiem". Soļi tiek periodiski izpildīti ar Zabbix serveris iepriekš noteiktā secībā. Ja hosts tiek uzraudzīts ar starpniekserveris, soļus izpilda starpniekserveris.

Tīmekļa scenāriji tiek piesaistīti hosts/veidnēm tādā pašā veidā kā vienumi, trigeri u. c. Tas nozīmē, ka tīmekļa scenārijus var izveidot arī veidnes līmenī un pēc tam vienā piegājienā piemērot vairākiem hosts.

Jebkurā tīmekļa scenārijā tiek apkopota šāda informācija:

  • vidējais lejupielādes ātrums sekundē visiem visa scenārija soļiem
  • neveiksmīgā soļa numurs
  • pēdējais kļūdas ziņojums

Jebkurā tīmekļa scenārija solī tiek apkopota šāda informācija:

  • lejupielādes ātrums sekundē
  • atbildes laiks
  • atbildes kods

Plašāku informāciju skatiet sadaļā tīmekļa uzraudzības vienumi.

No tīmekļa scenāriju izpildes iegūtie dati tiek glabāti datubāzē. Šie dati automātiski tiek izmantoti diagrammām, trigeriem un paziņojumiem.

Zabbix var arī pārbaudīt, vai iegūtā HTML lapa satur iepriekš noteiktu virkni. Tas var izpildīt simulētu pieteikšanos un sekot simulētu peles klikšķu ceļam lapā.

Zabbix tīmekļa uzraudzība atbalsta gan HTTP, gan HTTPS. Palaižot tīmekļa scenāriju, Zabbix pēc izvēles sekos pāradresācijām (skatiet tālāk opciju Sekot pāradresācijām). Maksimālais pāradresāciju skaits ir iebūvēts un ir 10 (izmantojot cURL opciju CURLOPT_MAXREDIRS). Visas sīkdatnes tiek saglabātas viena scenārija izpildes laikā.

Web scenārija konfigurēšana

Lai konfigurētu web scenāriju:

  1. Dodieties uz: Datu vākšana > Hosts (vai Veidnes).
  2. Hosts/veidnes rindā noklikšķiniet uz Web.
  3. Noklikšķiniet uz Izveidot web scenāriju labajā pusē (vai uz scenārija nosaukuma, lai rediģētu esošu scenāriju).
  4. Formā ievadiet scenārija parametrus.

Cilne Scenārijs ļauj konfigurēt web scenārija vispārīgos parametrus.

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

Scenārija parametri:

Parameter Description
Name Unikāls scenārija nosaukums.
Tiek atbalstīti lietotāja makrosi. Piezīme: ja tiek izmantoti lietotāja makrosi, šie makrosi paliks neatrisināti web monitoring vienuma nosaukumos.
Update interval Cik bieži scenārijs tiks izpildīts.
Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m, 2h, 1d.
Tiek atbalstīti lietotāja makrosi. Piezīme: ja tiek izmantots lietotāja makross un tā vērtība tiek mainīta (piem., 5m → 30s), nākamā pārbaude tiks izpildīta atbilstoši iepriekšējai vērtībai (ar dotajiem piemēriem - vēlāk).
Jauni web scenāriji tiks pārbaudīti 60 sekunžu laikā pēc to izveides.
Attempts Mēģinājumu skaits web scenārija soļu izpildei. Tīkla problēmu gadījumā (noildze, savienojuma trūkums u. c.) Zabbix var atkārtot soļa izpildi vairākas reizes. Norādītā vērtība vienādi ietekmēs katru scenārija soli. Var norādīt līdz 10 mēģinājumiem, noklusējuma vērtība ir 1.
Piezīme: Zabbix neatkārtos soli nepareiza atbildes koda vai nepieciešamās virknes neatbilstības dēļ.
Agent Izvēlieties klienta aģentu.
Zabbix izliksies par izvēlēto pārlūkprogrammu. Tas ir noderīgi, ja vietne dažādām pārlūkprogrammām atgriež atšķirīgu saturu.
Šajā laukā var izmantot lietotāja makrosus.
HTTP proxy Varat norādīt izmantojamo HTTP starpniekserveri, izmantojot formātu [protocol://][username[:password]@]proxy.example.com[:port].
Tas iestata cURL opciju CURLOPT_PROXY.
Neobligāto prefiksu protocol:// var izmantot, lai norādītu alternatīvus starpniekservera protokolus (protokola prefiksa atbalsts tika pievienots cURL 7.21.7). Ja protokols nav norādīts, starpniekserveris tiks uzskatīts par HTTP starpniekserveri.
Pēc noklusējuma tiks izmantots 1080 ports.
Ja norādīts, starpniekserveris pārrakstīs ar starpniekserveri saistītās vides mainīgās, piemēram, http_proxy, HTTPS_PROXY. Ja nav norādīts, starpniekserveris nepārrakstīs ar starpniekserveri saistītās vides mainīgās. Ievadītā vērtība tiek nodota "tā, kā ir", bez jebkādas pārbaudes.
Varat arī ievadīt SOCKS starpniekservera adresi. Ja norādīsiet nepareizu protokolu, savienojums neizdosies un vienums kļūs neatbalstīts.
Piezīme: ar HTTP starpniekserveri tiek atbalstīta tikai vienkārša autentifikācija.
Šajā laukā var izmantot lietotāja makrosus.
Variables Mainīgie, kurus var izmantot scenārija soļos (URL, post mainīgie).
Tiem ir šāds formāts:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<regular expression>
{macro4}=jsonpath:<jsonpath>
{macro5}=xmlxpath:<xmlxpath>
{macro6}={{macro}.function()} (skat. makro funkcijas)
Piemēram:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
{url}=jsonpath:$.host_url
{status}=xmlxpath://host/response/status
{newvar}={{myvar}.btoa()}
Pēc tam makrosus var izmantot soļos kā {username}, {password}, {hostid} utt. Zabbix tos automātiski aizstās ar faktiskajām vērtībām. Ņemiet vērā, ka mainīgajiem ar regex: ir nepieciešams viens solis, lai iegūtu regulārās izteiksmes vērtību, tāpēc iegūtā vērtība var tikt piemērota tikai nākamajam solim.
Ja vērtības daļa sākas ar regex:, tad daļa aiz tās tiek uzskatīta par regulāro izteiksmi, kas meklē tīmekļa lapā un, ja tiek atrasta, saglabā atbilstību mainīgajā. Jābūt vismaz vienai apakšgrupai, lai varētu izvilkt atrasto vērtību.
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Mainīgie tiek automātiski URL kodēti, ja tos izmanto vaicājuma laukos vai formas datos post mainīgajiem, taču tie ir jāURL kodē manuāli, ja tos izmanto raw post vai tieši URL.
Headers HTTP galvenes tiek izmantotas, veicot pieprasījumu. Var izmantot noklusējuma un pielāgotās galvenes.
Galvenes tiks piešķirtas, izmantojot noklusējuma iestatījumus atkarībā no nolaižamajā sarakstā scenārija līmenī izvēlētā aģenta tipa, un tās tiks piemērotas visiem soļiem, ja vien tās nav pielāgoti definētas soļa līmenī.
Jāņem vērā, ka galvenes definēšana soļa līmenī automātiski atmet visas iepriekš definētās galvenes, izņemot noklusējuma galveni, kas tiek piešķirta, scenārija līmenī nolaižamajā sarakstā izvēloties 'User-Agent'.
Tomēr pat noklusējuma galveni 'User-Agent' var pārrakstīt, norādot to soļa līmenī.
Lai noņemtu galveni scenārija līmenī, galvenei jābūt nosauktai un soļa līmenī tai jābūt piešķirtai bez vērtības.
Galvenes jāuzskaita, izmantojot to pašu sintaksi, kāda tām būtu HTTP protokolā, pēc izvēles izmantojot dažas papildu funkcijas, ko atbalsta cURL opcija CURLOPT_HTTPHEADER.
Piemēram:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Enabled Scenārijs ir aktīvs, ja šī izvēles rūtiņa ir atzīmēta; pretējā gadījumā - atspējots.

Ņemiet vērā, ka, rediģējot esošu scenāriju, formā ir pieejamas divas papildu pogas:

Izveidot vēl vienu scenāriju, pamatojoties uz esošā scenārija īpašībām.
Dzēst scenārija vēstures un tendenču datus. Tas liks serverim nekavējoties izpildīt scenāriju pēc datu dzēšanas.

Ja lauks HTTP proxy ir atstāts tukšs, cits veids, kā izmantot HTTP starpniekserveri, ir iestatīt ar starpniekserveri saistītās vides mainīgās.

HTTP pārbaudēm - iestatiet http_proxy vides mainīgo Zabbix servera lietotājam. Piemēram, http_proxy=http://proxy_ip:proxy_port.

HTTPS pārbaudēm - iestatiet HTTPS_PROXY vides mainīgo. Piemēram, HTTPS_PROXY=http://proxy_ip:proxy_port. Papildu informācija ir pieejama, izpildot čaulas komandu: # man curl.

Cilne Soļi ļauj konfigurēt web scenārija soļus. Lai pievienotu web scenārija soli, blokā Soļi noklikšķiniet uz Pievienot.

Slepenus lietotāja makrosus nedrīkst izmantot URL, jo tie tiks atrisināti kā "******".

Soļu konfigurēšana

Soļa parametri:

Parameter Description
Name Unikāls soļa nosaukums.
Tiek atbalstīti lietotāja makrosi. Piezīme: ja tiek izmantoti lietotāja makrosi, šie makrosi paliks neatrisināti lietotāja saskarnes vienuma nosaukumos.
URL URL, ar ko izveidot savienojumu un iegūt datus. Piemēram:
https://www.example.com
http://www.example.com/download
Domēna nosaukumus var norādīt Unicode rakstzīmēs. Izpildot tīmekļa scenārija soli, tie automātiski tiek pārveidoti no punycode uz ASCII.
Pogu Parse var izmantot, lai atdalītu izvēles vaicājuma laukus (piemēram, ?name=Admin&password=mypassword) no URL, pārvietojot atribūtus un vērtības uz Query fields automātiskai URL kodēšanai.
URL var izmantot mainīgos, izmantojot {macro} sintaksi. Mainīgos var manuāli URL kodēt, izmantojot {{macro}.urlencode()} sintaksi.
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Ierobežots līdz 2048 rakstzīmēm.
Query fields HTTP GET mainīgie URL.
Norādāmi kā atribūtu un vērtību pāri.
Vērtības tiek automātiski URL kodētas. Vērtības no scenārija mainīgajiem, lietotāja makro vai {HOST.*} makro tiek atrisinātas un pēc tam automātiski URL kodētas. Izmantojot {{macro}.urlencode()} sintaksi, tiks veikta dubulta URL kodēšana.
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Post HTTP POST mainīgie.
Form data režīmā tie tiek norādīti kā atribūtu un vērtību pāri.
Vērtības tiek automātiski URL kodētas. Vērtības no scenārija mainīgajiem, lietotāja makro vai {HOST.*} makro tiek atrisinātas un pēc tam automātiski URL kodētas.
Raw data režīmā atribūti/vērtības tiek attēloti vienā rindā un savienoti ar simbolu &.
Neapstrādātās vērtības var manuāli URL kodēt/dekodēt, izmantojot {{macro}.urlencode()} vai {{macro}.urldecode()} sintaksi.
Piemēram: id=2345&userid={user}
Ja {user} ir definēts kā tīmekļa scenārija mainīgais, tas tiks aizstāts ar savu vērtību, kad solis tiks izpildīts. Ja vēlaties mainīgo URL kodēt, aizstājiet {user} ar {{user}.urlencode()}.
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Variables Soļa līmeņa mainīgie, kurus var izmantot GET un POST funkcijām.
Norādāmi kā atribūtu un vērtību pāri.
Soļa līmeņa mainīgie pārraksta scenārija līmeņa mainīgos vai mainīgos no iepriekšējā soļa. Tomēr soļa līmeņa mainīgā vērtība ietekmē tikai nākamo soli (nevis pašreizējo soli).
Tiem ir šāds formāts:
{macro}=value
{macro}=regex:<regular expression>
Lai iegūtu vairāk informācijas, skatiet mainīgo aprakstu scenārija līmenī.
Mainīgie tiek automātiski URL kodēti, ja tiek izmantoti vaicājuma laukos vai form data POST mainīgajiem, bet tie ir manuāli URL kodējami, ja tiek izmantoti raw post vai tieši URL.
Headers Pielāgoti HTTP galvenes, kas tiks nosūtītas, veicot pieprasījumu.
Norādāmi kā atribūtu un vērtību pāri.
Soļa līmenī definēta galvene tiks izmantota tieši šim konkrētajam solim.
Jāņem vērā, ka galvenes definēšana soļa līmenī automātiski atmet visas iepriekš definētās galvenes, izņemot noklusējuma galveni, kas tiek piešķirta, scenārija līmenī nolaižamajā sarakstā izvēloties 'User-Agent'.
Tomēr pat 'User-Agent' noklusējuma galveni var pārrakstīt, norādot to soļa līmenī.
Piemēram, piešķirot galvenei nosaukumu, bet nenorādot vērtību, scenārija līmeņa noklusējuma galvene tiks noņemta.
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Tas iestata cURL opciju CURLOPT_HTTPHEADER.
Follow redirects Atzīmējiet izvēles rūtiņu, lai sekotu HTTP pāradresācijām.
Tas iestata cURL opciju CURLOPT_FOLLOWLOCATION.
Retrieve mode Izvēlieties iegūšanas režīmu:
Body - iegūt tikai HTTP atbildes pamattekstu
Headers - iegūt tikai HTTP atbildes galvenes
Body and headers - iegūt HTTP atbildes pamattekstu un galvenes
Timeout Zabbix nepavadīs URL apstrādei vairāk par iestatīto laiku (no vienas sekundes līdz maksimāli 1 stundai). Faktiski šis parametrs nosaka maksimālo laiku savienojuma izveidei ar URL un maksimālo laiku HTTP pieprasījuma veikšanai. Tāpēc Zabbix solim nepavadīs vairāk par 2 x Timeout sekundēm.
Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m, 1h. Tiek atbalstīti lietotāja makrosi.
Required string Obligāts regulārās izteiksmes paraugs.
Ja iegūtais saturs (HTML) neatbilst obligātajam paraugam, solis neizdosies.
Ja lauks ir tukšs, obligātās virknes pārbaude netiek veikta.
Piemēram:
Zabbix sākumlapa
Welcome.*admin
Piezīme: šajā laukā nav atbalstīta Zabbix lietotāja saskarnē izveidotu regulāro izteiksmju atsaukšana.
Tiek atbalstīti lietotāja makrosi un {HOST.*} makrosi.
Required status codes Sagaidāmo HTTP statusa kodu saraksts. Ja Zabbix saņem kodu, kas nav sarakstā, solis neizdosies.
Ja lauks ir tukšs, statusa kodu pārbaude netiek veikta.
Piemēram: 200,201,210-299
Tiek atbalstīti lietotāja makrosi.

Jebkuras izmaiņas tīmekļa scenārija soļos tiks saglabātas tikai tad, kad tiks saglabāts viss scenārijs.

Skatiet arī reālas dzīves piemēru, kā var konfigurēt tīmekļa uzraudzības soļus.

Birku konfigurēšana

Cilne Tags ļauj definēt scenārija līmeņa birkas.

Birku izmantošana ļauj filtrēt tīmekļa scenārijus un tīmekļa uzraudzības vienumus.

Autentifikācijas konfigurēšana

Cilne Authentication ļauj konfigurēt scenārija autentifikācijas opcijas. Zaļš punkts blakus cilnes nosaukumam norāda, ka ir iespējota kāda HTTP autentifikācijas forma.

Autentifikācijas parametri:

Parameter Description
HTTP authentication Atlasiet autentifikācijas opciju:
None - autentifikācija netiek izmantota;
Basic - tiek izmantota pamata autentifikācija;
NTLM - tiek izmantota NTLM (Windows NT LAN Manager) autentifikācija;
Kerberos - tiek izmantota Kerberos autentifikācija (skatiet arī: Kerberos konfigurēšana ar Zabbix);
Digest - tiek izmantota Digest autentifikācija.
User Ievadiet lietotājvārdu (līdz 255 rakstzīmēm).
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz Basic, NTLM, Kerberos vai Digest. Tiek atbalstīti lietotāja makrosi.
Password Ievadiet lietotāja paroli (līdz 255 rakstzīmēm).
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz Basic, NTLM, Kerberos vai Digest. Tiek atbalstīti lietotāja makrosi.
SSL verify peer Atzīmējiet izvēles rūtiņu, lai pārbaudītu tīmekļa servera SSL sertifikātu.
Servera sertifikāts tiks automātiski ņemts no sistēmas mēroga sertifikātu autoritātes (CA) atrašanās vietas. CA failu atrašanās vietu var pārrakstīt, izmantojot Zabbix servera vai starpniekservera konfigurācijas parametru SSLCALocation.
Šis iestatījums nosaka cURL opciju CURLOPT_SSL_VERIFYPEER.
SSL verify host Atzīmējiet izvēles rūtiņu, lai pārbaudītu, vai tīmekļa servera sertifikāta lauks Common Name vai Subject Alternate Name atbilst.
Šis iestatījums nosaka cURL opciju CURLOPT_SSL_VERIFYHOST.
SSL certificate file SSL sertifikāta faila nosaukums, ko izmanto klienta autentifikācijai. Sertifikāta failam jābūt PEM1 formātā. Ja sertifikāta fails satur arī privāto atslēgu, atstājiet lauku SSL key file tukšu. Ja atslēga ir šifrēta, norādiet paroli laukā SSL key password. Katalogs, kurā atrodas šis fails, tiek noteikts ar Zabbix servera vai starpniekservera konfigurācijas parametru SSLCertLocation.
Šajā laukā var izmantot HOST.* makrosus un lietotāja makrosus.
Šis iestatījums nosaka cURL opciju CURLOPT_SSLCERT.
SSL key file SSL privātās atslēgas faila nosaukums, ko izmanto klienta autentifikācijai. Privātās atslēgas failam jābūt PEM1 formātā. Katalogs, kurā atrodas šis fails, tiek noteikts ar Zabbix servera vai starpniekservera konfigurācijas parametru SSLKeyLocation.
Šajā laukā var izmantot HOST.* makrosus un lietotāja makrosus.
Šis iestatījums nosaka cURL opciju CURLOPT_SSLKEY.
SSL key password SSL privātās atslēgas faila parole.
Šajā laukā var izmantot lietotāja makrosus.
Šis iestatījums nosaka cURL opciju CURLOPT_KEYPASSWD.

[1] Zabbix atbalsta sertifikātu un privātās atslēgas failus tikai PEM formātā. Ja sertifikāta un privātās atslēgas dati ir PKCS #12 formāta failā (parasti ar paplašinājumu *.p12 vai *.pfx), no tā var izveidot PEM failu, izmantojot šādas komandas:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Zabbix serveris nolasa sertifikātu izmaiņas bez restartēšanas.

Ja klienta sertifikāts un privātā atslēga ir vienā failā, norādiet to laukā "SSL certificate file" un atstājiet lauku "SSL key file" tukšu. Sertifikātam un atslēgai joprojām jābūt PEM formātā. Sertifikāta un atslēgas apvienošana ir vienkārša:

cat client.crt client.key > client.pem

Attēlošana

Lai skatītu hostam konfigurētos tīmekļa scenārijus, dodieties uz Monitoring > Hosts, atrodiet hostu sarakstā un noklikšķiniet uz Web hipersaites pēdējā kolonnā. Noklikšķiniet uz scenārija nosaukuma, lai iegūtu detalizētu informāciju.

Tīmekļa scenāriju pārskatu var arī attēlot Dashboards sadaļā, izmantojot Web monitoring logrīku.

Tīmekļa scenārija izpildes jaunākie rezultāti ir pieejami sadaļā Monitoring > Latest data.

Paplašināta uzraudzība

Dažkārt ir nepieciešams reģistrēt saņemtās HTML lapas saturu.
Tas ir īpaši noderīgi, ja kāds tīmekļa scenārija solis neizdodas.
Šim nolūkam kalpo atkļūdošanas līmenis 5 (trace).
Šo līmeni var iestatīt serveris un starpniekserveris konfigurācijas failos vai izmantojot izpildlaika vadības opciju (-R log_level_increase="http poller,N", kur N ir procesa numurs).
Tālāk redzamie piemēri parāda, kā var sākt paplašinātu uzraudzību, ja jau ir iestatīts atkļūdošanas līmenis 4:

# Palielināt visu http poller žurnāla līmeni:
zabbix_server -R log_level_increase="http poller"

# Palielināt otrā http poller žurnāla līmeni:
zabbix_server -R log_level_increase="http poller,2"

Ja paplašināta tīmekļa uzraudzība nav nepieciešama, to var apturēt, izmantojot -R log_level_decrease opciju.