9. Web monitoring

Overzicht

Met Zabbix kunt u verschillende beschikbaarheidsaspecten van websites controleren.

Om webmonitoring uit te voeren, moet de Zabbix-server aanvankelijk worden geconfigureerd met cURL (libcurl) ondersteuning.

Om webmonitoring te activeren, moet u webscenario's definiëren. Een webscenario bestaat uit één of meerdere HTTP-verzoeken of "stappen". De stappen worden periodiek uitgevoerd door de Zabbix-server in een vooraf gedefinieerde volgorde. Als een host wordt gemonitord door een proxy, worden de stappen uitgevoerd door de proxy.

Webscenario's worden op dezelfde manier aan hosts/templates gekoppeld als items, triggers, enzovoort. Dit betekent dat webscenario's ook op het niveau van een sjabloon kunnen worden gemaakt en vervolgens op meerdere hosts kunnen worden toegepast.

De volgende informatie wordt verzameld in elk webscenario:

  • gemiddelde downloadsnelheid per seconde voor alle stappen van het gehele scenario
  • het nummer van de stap die is mislukt
  • laatste foutbericht

De volgende informatie wordt verzameld in elke stap van een webscenario:

  • downloadsnelheid per seconde
  • reactietijd
  • reactiecode

Voor meer details, zie webmonitoringitems.

Gegevens die zijn verzameld tijdens het uitvoeren van webscenario's worden opgeslagen in de database. De gegevens worden automatisch gebruikt voor grafieken, triggers en meldingen.

Zabbix kan ook controleren of een opgehaalde HTML-pagina een vooraf gedefinieerde string bevat. Het kan een gesimuleerde login uitvoeren en een pad van gesimuleerde muisklikken op de pagina volgen.

Zabbix webmonitoring ondersteunt zowel HTTP als HTTPS. Bij het uitvoeren van een webscenario volgt Zabbix optioneel redirects (zie de optie Volg redirects hieronder). Het maximale aantal redirects is hardcoded op 10 (gebruikmakend van de cURL-optie CURLOPT_MAXREDIRS). Alle cookies worden behouden tijdens de uitvoering van een enkel scenario.

Een webscenario configureren

Om een webscenario te configureren:

  • Ga naar: Configuratie → Hosts (of Sjablonen)
  • Klik op Web in de rij van de host/sjabloon
  • Klik rechts op Nieuw webscenario maken (of op de naam van het scenario om een bestaand scenario te bewerken)
  • Voer de parameters van het scenario in het formulier in

Het tabblad Scenario stelt u in staat om de algemene parameters van een webscenario te configureren.

Afbeelding

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

Scenarioparameters:

Parameter Beschrijving
Naam Unieke naam van het scenario.
Gebruikersmacro's worden ondersteund. Let op dat als gebruikersmacro's worden gebruikt, deze macro's niet worden opgelost in webmonitoringsitem namen.
Update-interval Hoe vaak het scenario wordt uitgevoerd.
Tijdssuffixes worden ondersteund, bijv. 30s, 1m, 2h, 1d.
Gebruikersmacro's worden ondersteund. Let op dat als een gebruikersmacro wordt gebruikt en de waarde ervan wordt gewijzigd (bijv. 5m → 30s), de volgende controle wordt uitgevoerd volgens de vorige waarde (verder in de toekomst met de voorbeeldwaarden).
Pogingen Het aantal pogingen om webscenariostappen uit te voeren. In geval van netwerkproblemen (time-out, geen connectiviteit, enzovoort) kan Zabbix een stap meerdere keren herhalen. Het opgegeven cijfer zal evenveel invloed hebben op elke stap van het scenario. Tot 10 pogingen kunnen worden gespecificeerd, de standaardwaarde is 1.
Opmerking: Zabbix zal een stap niet herhalen vanwege een onjuiste reactiecode of de onjuiste overeenkomst van een vereiste string.
Agent Selecteer een client agent.
Zabbix zal doen alsof het de geselecteerde browser is. Dit is handig wanneer een website verschillende inhoud retourneert voor verschillende browsers.
Gebruikersmacro's kunnen worden gebruikt in dit veld.
HTTP-proxy U kunt een HTTP-proxy opgeven om te gebruiken, in de indeling [protocol://][gebruikersnaam[:wachtwoord]@]proxy.example.com[:poort].
Dit stelt de CURLOPT_PROXY cURL-optie in.
Het optionele voorvoegsel protocol:// kan worden gebruikt om alternatieve proxyprotocollen op te geven (de protocolvoorvoegsel-ondersteuning werd toegevoegd in cURL 7.21.7). Zonder opgegeven protocol wordt de proxy behandeld als een HTTP-proxy.
Standaard wordt poort 1080 gebruikt.
Indien gespecificeerd, zal de proxy proxygerelateerde omgevingsvariabelen overschrijven zoals http_proxy, HTTPS_PROXY. Indien niet gespecificeerd, zal de proxy proxygerelateerde omgevingsvariabelen niet overschrijven. De ingevoerde waarde wordt "zoals het is" doorgegeven, er vindt geen sanity-check plaats.
U kunt ook een SOCKS-proxyadres invoeren. Als u het verkeerde protocol opgeeft, mislukt de verbinding en wordt het item niet-ondersteund.
Let op dat alleen eenvoudige authenticatie wordt ondersteund met HTTP-proxy.
Gebruikersmacro's kunnen in dit veld worden gebruikt.
Variabelen Variabelen die kunnen worden gebruikt in scenariosstappen (URL, postvariabelen).
Ze hebben het volgende formaat:
{macro1}=waarde1
{macro2}=waarde2
{macro3}=regex:<reguliere expressie>
Bijvoorbeeld:
{gebruikersnaam}=Alexei
{wachtwoord}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
De macro's kunnen dan worden gebruikt in de stappen als {gebruikersnaam}, {wachtwoord} en {hostid}. Zabbix vervangt ze automatisch door werkelijke waarden. Merk op dat variabelen met regex: één stap nodig hebben om de waarde van de reguliere expressie te verkrijgen, zodat de geëxtraheerde waarde alleen kan worden toegepast op de stap daarna.
Als het waardegedeelte begint met regex:, dan wordt het deel na de regex: beschouwd als een reguliere expressie die de webpagina doorzoekt en, indien gevonden, de overeenkomst opslaat in de variabele. Er moet minstens één subgroep aanwezig zijn zodat de overeenkomende waarde kan worden geëxtraheerd.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Variabelen worden automatisch URL-gecodeerd wanneer ze worden gebruikt in queryvelden of formuliergegevens voor postvariabelen, maar moeten handmatig URL-gecodeerd worden wanneer ze worden gebruikt in raw post of direct in URL.
Headers HTTP-headers worden gebruikt bij het uitvoeren van een verzoek. Standaard- en aangepaste headers kunnen worden gebruikt.
Headers worden toegewezen met behulp van standaardinstellingen, afhankelijk van het op een scenariosniveau geselecteerde agenttype, en worden toegepast op alle stappen, tenzij ze op een stapsniveau aangepast zijn gedefinieerd.
Het moet worden opgemerkt dat het definiëren van de header op een stapsniveau automatisch alle eerder gedefinieerde headers verwerpt, behalve een standaardheader die wordt toegewezen door 'User-Agent' te selecteren uit een keuzelijst op een scenariosniveau.
Er kan echter zelfs een standaardheader 'User-Agent' worden overschreven door deze op een stapsniveau te specificeren.
Om de header op een scenariosniveau ongedaan te maken, moet de header worden genoemd en toegewezen zonder waarde op een stapsniveau.
Headers moeten worden vermeld in dezelfde syntaxis als ze zouden verschijnen in het HTTP-protocol, eventueel gebruikmakend van enkele aanvullende functies die worden ondersteund door de CURLOPT_HTTPHEADER cURL-optie.
Bijvoorbeeld:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Ingeschakeld Het scenario is actief als dit vakje is aangevinkt, anders - uitgeschakeld.

Merk op dat bij het bewerken van een bestaand scenario twee extra knoppen beschikbaar zijn in het formulier:

Afbeelding Maak een nieuw scenario op basis van de eigenschappen van het bestaande scenario.
Afbeelding Verwijder geschiedenis- en trendgegevens voor het scenario. Hierdoor zal de server het scenario onmiddellijk uitvoeren na het verwijderen van de gegevens.

Als het veld HTTP-proxy leeg wordt gelaten, is een andere manier om een HTTP-proxy te gebruiken het instellen van proxygerelateerde omgevingsvariabelen.

Voor HTTP-controles - stel de http_proxy omgevingsvariabele in voor de Zabbix-servergebruiker. Bijvoorbeeld, http_proxy=http://proxy_ip:proxy_port.

Voor HTTPS-controles - stel de HTTPS_PROXY omgevingsvariabele in. Bijvoorbeeld, HTTPS_PROXY=http://proxy_ip:proxy_port. Meer details zijn beschikbaar door een shell-opdracht uit te voeren: # man curl.

Het tabblad Stappen stelt u in staat om de stappen van het webscenario te config

ureren. Om een webscenariostap toe te voegen, klikt u op Toevoegen in het blok Stappen.

Afbeelding

Geheime gebruikers macros mogen niet worden gebruikt in URL's, omdat ze worden omgezet in "******".

Stappen configureren

Stap parameters:

Parameter Omschrijving
Naam Unieke stapnaam.
Gebruikersmacro's worden ondersteund. Let op dat als gebruikersmacro's worden gebruikt, deze macro's onopgelost blijven in webmonitoringsitemnamen.
URL URL om verbinding te maken en gegevens op te halen. Bijvoorbeeld:
https://www.example.com
http://www.example.com/download
Domeinnamen kunnen worden opgegeven in Unicode-tekens. Ze worden automatisch punycode-geconverteerd naar ASCII bij het uitvoeren van de webscenariostap.
De knop Parseren kan worden gebruikt om optionele queryvelden (zoals ?name=Admin&password=mypassword) van de URL te scheiden en de attributen en waarden naar Queryvelden te verplaatsen voor automatische URL-codering.
Variabelen kunnen worden gebruikt in de URL, met behulp van de syntaxis {macro}. Variabelen kunnen handmatig URL-gecodeerd worden met behulp van een {{macro}.urlencode()} syntaxis.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Beperkt tot 2048 tekens.
Queryvelden HTTP GET-variabelen voor de URL.
Opgegeven als attribuut- en waardeparen.
Waarden worden automatisch URL-gecodeerd. Waarden van scenariovariabelen, gebruikersmacro's of {HOST.*} macro's worden automatisch opgelost en vervolgens automatisch URL-gecodeerd. Door een {{macro}.urlencode()} syntaxis te gebruiken, worden de waarden dubbel URL-gecodeerd.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Post HTTP POST-variabelen.
In Formuliergegevens-modus, opgegeven als attribuut- en waardeparen.
Waarden worden automatisch URL-gecodeerd. Waarden van scenariovariabelen, gebruikersmacro's of {HOST.*} macro's worden automatisch opgelost en vervolgens automatisch URL-gecodeerd.
In Ruw gegevens-modus worden attribuut/waarden weergegeven op één regel en samengevoegd met een &-symbool.
Ruwe waarden kunnen handmatig URL-gecodeerd/gedecodeerd worden met behulp van een {{macro}.urlencode()} of {{macro}.urldecode()} syntaxis.
Bijvoorbeeld: id=2345&userid={user}
Als {user} gedefinieerd is als een variabele van het webscenario, wordt deze vervangen door de waarde ervan wanneer de stap wordt uitgevoerd. Als u de variabele URL-gecodeerd wilt maken, vervangt u {user} door {{user}.urlencode()}.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Variabelen Stapniveau-variabelen die kunnen worden gebruikt voor GET- en POST-functies.
Opgegeven als attribuut- en waardeparen.
Stapniveau-variabelen overschrijven scenariovariabelen of variabelen van de vorige stap. De waarde van een stapniveau-variabele beïnvloedt echter alleen de stap daarna (en niet de huidige stap).
Ze hebben het volgende formaat:
{macro}=waarde
{macro}=regex:<reguliere expressie>
Zie de beschrijving van variabelen op scenariosniveau voor meer informatie.
Variabelen worden automatisch URL-gecodeerd wanneer ze worden gebruikt in queryvelden of formuliergegevens voor postvariabelen, maar moeten handmatig URL-gecodeerd worden wanneer ze worden gebruikt in ruwe post of rechtstreeks in URL.
Headers Aangepaste HTTP-headers die worden verzonden bij het uitvoeren van een verzoek.
Opgegeven als attribuut- en waardeparen.
Een header die op een stapniveau is gedefinieerd, wordt gebruikt voor die specifieke stap.
Let op dat het definiëren van de header op stapniveau automatisch alle eerder gedefinieerde headers verwerpt, behalve een standaardheader die wordt toegewezen door 'User-Agent' te selecteren uit een keuzelijst op scenario-niveau.
Zelfs de standaard 'User-Agent'-header kan echter worden overschreven door deze op stapniveau op te geven.
Bijvoorbeeld, het toekennen van de naam aan een header, maar geen waarde instellen, zal de standaardheader op scenario-niveau verwijderen.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Dit stelt de CURLOPT_HTTPHEADER cURL-optie in.
Het specificeren van aangepaste headers wordt ondersteund vanaf Zabbix 2.4.
Volg doorverwijzingen Markeer het selectievakje om HTTP-doorverwijzingen te volgen.
Dit stelt de CURLOPT_FOLLOWLOCATION cURL-optie in.
Haal op modus op Selecteer de ophaalmodus:
Body - haal alleen de body op uit de HTTP-response
Headers - haal alleen de headers op uit de HTTP-response
Body en headers - haal de body en headers op uit de HTTP-response
Time-out Zabbix zal niet meer tijd besteden aan het verwerken van de URL dan de ingestelde hoeveelheid tijd (van één seconde tot maximaal 1 uur). Eigenlijk bepaalt deze parameter de maximale tijd voor het maken van verbinding met de URL en de maximale tijd voor het uitvoeren van een HTTP-verzoek. Daarom zal Zabbix niet meer dan 2 x Time-out seconden besteden aan de stap.
Tijdsuffixen worden ondersteund, bijvoorbeeld 30s, 1m, 1h. Gebruikersmacro's worden ondersteund.
Vereiste string Vereist reguliere expressiepatroon.
Tenzij de opgehaalde inhoud (HTML) overeenkomt met het vereiste patroon, zal de stap mislukken. Als het leeg is, wordt er geen controle op de vereiste tekenreeks uitgevoerd.
Bijvoorbeeld:
Homepage van Zabbix
Welcome.*admin
Opmerking: Het verwijzen naar reguliere expressies die in de Zabbix-frontend zijn aangemaakt, wordt niet ondersteund in dit veld.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Vereiste statuscodes Lijst van verwachte HTTP-statuscodes. Als Zabbix een code krijgt die niet in de lijst staat, zal de stap mislukken.
Als het leeg is, wordt er geen controle op statuscodes uitgevoerd.
Bijvoorbeeld: 200,201,210-299
Gebruikersmacro's worden ondersteund.

Elke wijziging in webscenariostappen wordt pas opgeslagen wanneer het hele scenario wordt opgeslagen.

Zie ook een realistisch voorbeeld van hoe webscenario-stappen geconfigureerd kunnen worden.

Tags configureren

Het Tags-tabblad maakt het mogelijk om scenario-niveau tags te definiëren.

Tagging maakt het mogelijk om webscenario's en webmonitoring items te filteren.

Authenticatie configureren

Het Authentication-tabblad maakt het mogelijk om scenario authenticatieopties te configureren. Een groen puntje naast de tabnaam geeft aan dat een vorm van HTTP-authenticatie is ingeschakeld.

Authenticatieparameters:

Parameter Beschrijving
Authentication Authenticatieopties.
None - geen authenticatie gebruikt.
Basic - basisauthenticatie wordt gebruikt.
NTLM - NTLM (Windows NT LAN Manager) authenticatie wordt gebruikt.
Kerberos - Kerberos-authenticatie wordt gebruikt. Zie ook: Configuring Kerberos with Zabbix.
Digest - Digest-authenticatie wordt gebruikt.
Het selecteren van een authenticatiemethode zal twee extra velden bieden om een gebruikersnaam en wachtwoord in te voeren.
Gebruikersmacro's kunnen worden gebruikt in de gebruikersnaam- en wachtwoordvelden.
SSL verify peer Vink het vakje aan om het SSL-certificaat van de webserver te verifiëren.
Het servercertificaat wordt automatisch overgenomen uit de systeembrede locatie van de certificeringsinstantie (CA). U kunt de locatie van CA-bestanden overschrijven met de Zabbix server- of proxy-configuratieparameter SSLCALocation.
Dit stelt de CURLOPT_SSL_VERIFYPEER cURL-optie in.
SSL verify host Vink het vakje aan om te controleren of het Common Name-veld of het Subject Alternate Name-veld van het certificaat van de webserver overeenkomt.
Dit stelt de CURLOPT_SSL_VERIFYHOST cURL-optie in.
SSL certificate file Naam van het SSL-certificaatbestand dat wordt gebruikt voor clientauthenticatie. Het certificaatbestand moet in PEM1 -indeling zijn. Als het certificaatbestand ook de privésleutel bevat, laat dan het veld SSL key file leeg. Als de sleutel is versleuteld, geef dan het wachtwoord op in het veld SSL key password. De directory die dit bestand bevat, wordt gespecificeerd door de Zabbix server- of proxy-configuratieparameter SSLCertLocation.
HOST.*-macro's en gebruikersmacro's kunnen in dit veld worden gebruikt.
Dit stelt de CURLOPT_SSLCERT cURL-optie in.
SSL key file Naam van het privésleutelbestand dat wordt gebruikt voor clientauthenticatie. Het privésleutelbestand moet in PEM1 -indeling zijn. De directory die dit bestand bevat, wordt gespecificeerd door de Zabbix server- of proxy-configuratieparameter SSLKeyLocation.
HOST.*-macro's en gebruikersmacro's kunnen in dit veld worden gebruikt.
Dit stelt de CURLOPT_SSLKEY cURL-optie in.
SSL key password Wachtwoord voor het privésleutelbestand van SSL.
Gebruikersmacro's kunnen in dit veld worden gebruikt.
Dit stelt de CURLOPT_KEYPASSWD cURL-optie in.

[1] Zabbix ondersteunt alleen certificaat- en privésleutelbestanden in PEM-indeling. Als u uw certificaat- en privésleutelgegevens in een PKCS #12-indelingbestand heeft (meestal met de extensie *.p12 of *.pfx), kunt u het PEM-bestand daaruit genereren met de volgende commando's:

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-server pikt wijzigingen in certificaten op zonder dat een herstart nodig is.

Als u een klantcertificaat en privésleutel in

één bestand heeft, specificeert u dit gewoon in het veld "SSL certificaatbestand" en laat u het veld "SSL sleutelbestand" leeg. Het certificaat en de sleutel moeten nog steeds in PEM-indeling zijn. Certificaat en sleutel combineren is eenvoudig:

cat client.crt client.key > client.pem

Weergave

Om web scenario's die zijn geconfigureerd voor een host te bekijken, ga naar Monitoring → Hosts, zoek de host in de lijst en klik op de Web hyperlink in de laatste kolom. Klik op de naam van het scenario voor gedetailleerde informatie.

Een overzicht van web scenario's kan ook worden weergegeven in Monitoring → Dashboard met behulp van een Web monitoring widget.

Recente resultaten van de uitvoering van het web scenario zijn beschikbaar in het Monitoring → Laatste gegevens gedeelte.

Uitgebreide monitoring

Soms is het nodig om ontvangen HTML-pagina-inhoud te loggen. Dit is vooral handig als een bepaalde stap van een web scenario mislukt. Debug niveau 5 (trace) wordt hiervoor gebruikt. Dit niveau kan worden ingesteld in server en proxy configuratiebestanden of met behulp van een runtime controleoptie (-R log_level_increase="http poller,N", waarbij N het procesnummer is). De volgende voorbeelden laten zien hoe uitgebreide monitoring gestart kan worden als debug niveau 4 al is ingesteld:

# Verhoog het logniveau van alle http-pollers:
       zabbix_server -R log_level_increase="http poller"
       
       # Verhoog het logniveau van de tweede http-poller:
       zabbix_server -R log_level_increase="http poller,2"

Als uitgebreide web monitoring niet meer nodig is, kan dit worden gestopt met de optie -R log_level_decrease.