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ā.

Tīmekļa scenārija konfigurēšana

Lai konfigurētu tīmekļa scenāriju:

  1. Dodieties uz: Data collection > Hosts (vai Templates).
  2. Hosts/veidnes rindā noklikšķiniet uz Web.
  3. Labajā pusē noklikšķiniet uz Create web scenario (vai uz scenārija nosaukuma, lai rediģētu esošu scenāriju).
  4. Veidlapā ievadiet scenārija parametrus.

Cilnē Scenario var konfigurēt tīmekļa scenārija vispārīgos parametrus.

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

Scenārija parametri:

Parametrs Apraksts
Name Unikāls scenārija nosaukums.
Tiek atbalstīti lietotāja makro. Ņemiet vērā, ka, ja tiek izmantoti lietotāja makro, šie makro tīmekļa uzraudzības vienumu nosaukumos paliks neatrisināti.
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 makro. Ņemiet vērā, ka, ja tiek izmantots lietotāja makro un tā vērtība tiek mainīta (piemēram, 5m → 30s), nākamā pārbaude tiks veikta atbilstoši iepriekšējai vērtībai (piemērā ar šīm vērtībām — vēlāk).
Jauni tīmekļa scenāriji tiks pārbaudīti 60 sekunžu laikā pēc to izveides.
Attempts Mēģinājumu skaits tīmekļa scenārija darbību izpildei. Tīkla problēmu gadījumā (noildze, savienojuma trūkums u. c.) Zabbix var atkārtot darbības izpildi vairākas reizes. Iestatītais skaits vienādi ietekmēs katru scenārija darbību. Var norādīt līdz 10 mēģinājumiem; noklusējuma vērtība ir 1.
Piezīme: Zabbix neatkārtos darbību nepareiza atbildes koda vai nepieciešamās virknes neatbilstības dēļ.
Agent Atlasiet klienta aģentu.
Zabbix uzdosies par atlasīto pārlūkprogrammu. Tas ir noderīgi, ja tīmekļa vietne dažādām pārlūkprogrammām atgriež atšķirīgu saturu.
Šajā laukā var izmantot lietotāja makro.
HTTP proxy Varat norādīt izmantojamo HTTP starpniekserveri, izmantojot formātu [protocol://][username[:password]@]proxy.example.com[:port].
Tādējādi tiek iestatīta cURL opcija 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 ports 1080.
Ja starpniekserveris ir norādīts, tas aizstās ar starpniekserveri saistītos vides mainīgos, piemēram, http_proxy un HTTPS_PROXY. Ja starpniekserveris nav norādīts, tas ar starpniekserveri saistītos vides mainīgos neaizstās. Ievadītā vērtība tiek nodota “tāda, kāda tā ir”; tās pareizība netiek pārbaudīta.
Varat ievadīt arī SOCKS starpniekservera adresi. Ja norādīsiet nepareizu protokolu, savienojums neizdosies un vienums kļūs neatbalstīts.
Piezīme: HTTP starpniekserverim tiek atbalstīta tikai vienkārša autentifikācija.
Šajā laukā var izmantot lietotāja makro.
Variables Mainīgie, kurus var izmantot scenārija darbībās (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()} (skatiet 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 uz makro var atsaukties darbībās, piemēram, {username}, {password}, {hostid} u. c. Zabbix tos automātiski aizstās ar faktiskajām vērtībām. Ņemiet vērā, ka mainīgajiem ar regex: ir nepieciešama viena darbība, lai iegūtu regulārās izteiksmes vērtību, tāpēc iegūto vērtību var izmantot tikai nākamajā darbībā.
Ja vērtības daļa sākas ar regex:, daļa pēc tā tiek uzskatīta par regulāro izteiksmi, kas meklē atbilstību tīmekļa lapā un, ja tā tiek atrasta, saglabā atbilstību mainīgajā. Lai varētu iegūt atbilstošo vērtību, jābūt vismaz vienai apakšgrupai.
Tiek atbalstīti lietotāja makro un {HOST.*} makro.
Izmantojot mainīgos vaicājuma laukos vai veidlapas datos POST mainīgajiem, tie tiek automātiski kodēti URL formātā, taču, izmantojot tos neapstrādātā POST pieprasījumā vai tieši URL, tie manuāli jāiekodē URL formātā.
Headers HTTP galvenes tiek izmantotas pieprasījuma izpildes laikā. Var izmantot noklusējuma un pielāgotās galvenes.
Galvenes tiks piešķirtas, izmantojot noklusējuma iestatījumus atkarībā no aģenta tipa, kas scenārija līmenī atlasīts nolaižamajā sarakstā, un tiks lietotas visām darbībām, ja vien tās nav pielāgotas darbības līmenī.
Ņemiet vērā, ka galvenes definēšana darbības līmenī automātiski atmet visas iepriekš definētās galvenes, izņemot noklusējuma galveni, kas piešķirta, scenārija līmenī nolaižamajā sarakstā atlasot “User-Agent”.
Tomēr arī noklusējuma galveni “User-Agent” var aizstāt, norādot to darbības līmenī.
Lai atceltu galveni scenārija līmenī, darbības līmenī galvene jānosauc un jānorāda bez vērtības.
Galvenes jānorāda, izmantojot tādu pašu sintaksi, kāda tiek izmantota 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 makro un {HOST.*} makro.
Enabled Ja šī izvēles rūtiņa ir atzīmēta, scenārijs ir aktīvs; pretējā gadījumā tas ir atspējots.

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

Izveidot citu scenāriju, pamatojoties uz esošā scenārija parametriem.
Dzēst scenārija vēstures un tendenču datus. Pēc datu dzēšanas serveris scenāriju izpildīs nekavējoties.

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

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

HTTPS pārbaudēm iestatiet vides mainīgo HTTPS_PROXY. Piemēram, HTTPS_PROXY=http://proxy_ip:proxy_port. Plašāku informāciju var iegūt, izpildot čaulas komandu: # man curl.

Cilnē Steps var konfigurēt tīmekļa scenārija darbības. Lai pievienotu tīmekļa scenārija darbību, blokā Steps noklikšķiniet uz Add.

Slepenus lietotāja makro nedrīkst izmantot URL, jo tie tiks aizstāti ar "******".

Darbību konfigurēšana

Darbības parametri:

Parametrs Apraksts
Nosaukums Unikāls darbības nosaukums.
Tiek atbalstīti lietotāja makro. Ņemiet vērā, ka, ja tiek izmantoti lietotāja makro, šie makro tīmekļa uzraudzības vienumu nosaukumos paliks neatrisināti.
URL URL, ar kuru izveidot savienojumu un no kura izgū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 darbību, tie tiek automātiski pārveidoti par ASCII, izmantojot punycode.
Pogu Parsēt var izmantot, lai no URL atdalītu neobligātos vaicājuma laukus (piemēram, ?key=value&limit=10), pārvietojot atribūtus un vērtības uz Vaicājuma laukiem, lai tos automātiski kodētu URL formātā.
URL var izmantot mainīgos, izmantojot sintaksi {macro}. Mainīgos var manuāli kodēt URL formātā, izmantojot sintaksi {{macro}.urlencode()}.
Tiek atbalstīti lietotāja makro un {HOST.*} makro.
Drošības apsvērumu dēļ URL neiekļaujiet faktiskos lietotājvārdus vai paroles. Tā vietā izmantojiet lietotāja makro, lai nepieļautu akreditācijas datu atklāšanu.
Ierobežots līdz 2048 rakstzīmēm.
Vaicājuma lauki HTTP GET mainīgie URL.
Tie tiek norādīti kā atribūtu un vērtību pāri.
Vērtības tiek automātiski kodētas URL formātā. Tīmekļa scenārija mainīgo, lietotāja makro vai {HOST.*} makro vērtības tiek atrisinātas un pēc tam automātiski kodētas URL formātā. Izmantojot sintaksi {{macro}.urlencode()}, tās tiks kodētas URL formātā divreiz.
Tiek atbalstīti lietotāja makro un {HOST.*} makro.
Post HTTP POST mainīgie.
Režīmā Formas dati tie tiek norādīti kā atribūtu un vērtību pāri.
Vērtības tiek automātiski kodētas URL formātā. Tīmekļa scenārija mainīgo, lietotāja makro vai {HOST.*} makro vērtības tiek atrisinātas un pēc tam automātiski kodētas URL formātā.
Režīmā Neapstrādāti dati atribūti/vērtības tiek parādītas vienā rindā un savienotas ar simbolu &.
Neapstrādātas vērtības var manuāli kodēt/dekodēt URL formātā, izmantojot sintaksi {{macro}.urlencode()} vai {{macro}.urldecode()}.
Piemēram: id=2345&userid={user}
Ja {user} ir definēts kā tīmekļa scenārija mainīgais, darbības izpildes laikā tas tiks aizstāts ar tā vērtību. Ja vēlaties mainīgo kodēt URL formātā, aizstājiet {user} ar {{user}.urlencode()}.
Tiek atbalstīti lietotāja makro un {HOST.*} makro.
Mainīgie Darbības līmeņa mainīgie, kurus var izmantot GET un POST funkcijās.
Tie tiek norādīti kā atribūtu un vērtību pāri.
Darbības līmeņa mainīgie aizstāj scenārija līmeņa mainīgos vai iepriekšējās darbības mainīgos. Tomēr darbības līmeņa mainīgā vērtība ietekmē tikai nākamo darbību, nevis pašreizējo darbību.
Tiem ir šāds formāts:
{macro}=value
{macro}=regex:<regular expression>
Papildinformāciju skatiet mainīgo aprakstā scenārija līmenī.
Izmantojot mainīgos vaicājuma laukos vai formas datos POST mainīgajiem, tie tiek automātiski kodēti URL formātā, bet, izmantojot tos neapstrādātā POST pieprasījumā vai tieši URL, tie ir manuāli jākodē URL formātā.
Galvenes Pielāgotas HTTP galvenes, kas tiks nosūtītas pieprasījuma izpildes laikā.
Tās tiek norādītas kā atribūtu un vērtību pāri.
Darbības līmenī definēta galvene tiks izmantota konkrētajai darbībai.
Ņemiet vērā, ka galvenes definēšana darbības līmenī automātiski atmet visas iepriekš definētās galvenes, izņemot noklusējuma galveni, kas piešķirta, scenārija līmenī nolaižamajā sarakstā atlasot “User-Agent”.
Tomēr pat noklusējuma galveni “User-Agent” var aizstāt, norādot to darbības līmenī.
Piemēram, piešķirot galvenei nosaukumu, bet nenorādot vērtību, tiks noņemta noklusējuma galvene scenārija līmenī.
Tiek atbalstīti lietotāja makro un {HOST.*} makro.
Tādējādi tiek iestatīta cURL opcija CURLOPT_HTTPHEADER.
Sekot novirzēm Atzīmējiet izvēles rūtiņu, lai sekotu HTTP novirzēm.
Tādējādi tiek iestatīta cURL opcija CURLOPT_FOLLOWLOCATION.
Izgūšanas režīms Atlasiet izgūšanas režīmu:
Pamatteksts - izgūt tikai HTTP atbildes pamattekstu
Galvenes - izgūt tikai HTTP atbildes galvenes
Pamatteksts un galvenes - izgūt HTTP atbildes pamattekstu un galvenes
Noildze Zabbix URL apstrādei nepatērēs 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 izpildei. Tāpēc Zabbix darbībai nepatērēs vairāk par 2 x Timeout sekundēm.
Tiek atbalstīti laika sufiksi, piemēram, 30s, 1m, 1h. Tiek atbalstīti lietotāja makro.
Nepieciešamā virkne Nepieciešamais regulārās izteiksmes paraugs.
Ja izgūtais saturs (HTML) neatbilst nepieciešamajam paraugam, darbība neizdosies. Ja lauks ir tukšs, nepieciešamās virknes pārbaude netiek veikta.
Piemēram:
Homepage of Zabbix
Welcome.*admin
Piezīme: Šajā laukā netiek atbalstīta atsauce uz regulārajām izteiksmēm, kas izveidotas Zabbix lietotāja saskarnē.
Tiek atbalstīti lietotāja makro un {HOST.*} makro.
Nepieciešamie statusa kodi Sagaidāmo HTTP statusa kodu saraksts. Ja Zabbix saņem kodu, kas nav sarakstā, darbība neizdosies.
Ja lauks ir tukšs, statusa kodu pārbaude netiek veikta.
Piemēram: 200,201,210-299
Tiek atbalstīti lietotāja makro.

Jebkādas izmaiņas tīmekļa scenārija darbībās tiks saglabātas tikai tad, kad tiks saglabāts viss scenārijs.

Skatiet arī praktisku piemēru, kurā parādīts, kā konfigurēt tīmekļa uzraudzības darbības.

Tagu konfigurēšana

Cilne Tagi ļauj definēt scenārija līmeņa tagus.

Tagu 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ējots kāds HTTP autentifikācijas veids.

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 makro.
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 makro.
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 tiek pārbaudīts, izmantojot sistēmas mēroga CA atrašanās vietā esošos uzticamo sertificēšanas iestāžu (CA) sertifikātus. CA failu atrašanās vietu var mainīt, izmantojot Zabbix servera vai starpniekservera konfigurācijas parametru SSLCALocation.
Tādējādi tiek iestatīta cURL opcija 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.
Tādējādi tiek iestatīta cURL opcija CURLOPT_SSL_VERIFYHOST.
SSL certificate file Klienta autentifikācijai izmantotā SSL sertifikāta faila nosaukums. Sertifikāta failam jābūt PEM1 formātā. Ja sertifikāta failā ir arī privātā atslēga, atstājiet lauku SSL key file tukšu. Ja atslēga ir šifrēta, laukā SSL key password norādiet paroli. Direktoriju, kurā atrodas šis fails, nosaka Zabbix servera vai starpniekservera konfigurācijas parametrs SSLCertLocation.
Šajā laukā var izmantot HOST.* makro un lietotāja makro.
Tādējādi tiek iestatīta cURL opcija CURLOPT_SSLCERT.
SSL key file Klienta autentifikācijai izmantotā SSL privātās atslēgas faila nosaukums. Privātās atslēgas failam jābūt PEM1 formātā. Direktoriju, kurā atrodas šis fails, nosaka Zabbix servera vai starpniekservera konfigurācijas parametrs SSLKeyLocation.
Šajā laukā var izmantot HOST.* makro un lietotāja makro.
Tādējādi tiek iestatīta cURL opcija CURLOPT_SSLKEY.
SSL key password SSL privātās atslēgas faila parole.
Šajā laukā var izmantot lietotāja makro.
Tādējādi tiek iestatīta cURL opcija CURLOPT_KEYPASSWD.

[1] Zabbix atbalsta tikai PEM formāta sertifikātu un privāto atslēgu failus. Ja sertifikāta un privātās atslēgas dati ir PKCS #12 formāta failā (parasti ar paplašinājumu *.p12 vai *.pfx), PEM failu no tā var ģenerēt, 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 uztver sertifikātu izmaiņas bez restartēšanas.

Ja klienta sertifikāts un privātā atslēga atrodas vienā failā, vienkārši 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ātu un atslēgu var viegli apvienot:

cat client.crt client.key > client.pem

Attēlošana

Lai skatītu hostam konfigurētos tīmekļa scenārijus:

  1. Dodieties uz Monitoring > Hosts.
  2. Atrodiet sarakstā hostu un pēdējā kolonnā noklikšķiniet uz hipersaites Web.
  3. Noklikšķiniet uz scenārija nosaukuma, lai iegūtu detalizētu informāciju.

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

Jaunākie tīmekļa scenārija izpildes 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.