9. Web monitoring

Overzicht

Met Zabbix kun je verschillende aspecten van de beschikbaarheid van websites controleren.

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

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

Webscenario's worden op dezelfde manier toegewezen aan hosts/templates als items, triggers, enz. Dat betekent dat webscenario's ook op sjabloonniveau kunnen worden gemaakt en vervolgens op meerdere hosts tegelijk kunnen worden toegepast.

De volgende informatie wordt verzameld in elk webscenario:

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

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

  • downloadsnelheid per seconde
  • reactietijd
  • reactiecode

Voor meer details, zie webmonitoring items.

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 aanmelding uitvoeren en een pad volgen van gesimuleerde muisklikken op de pagina.

Zabbix webmonitoring ondersteunt zowel HTTP als HTTPS. Bij het uitvoeren van een webscenario zal Zabbix optioneel redirects volgen (zie optie Redirects volgen hieronder). Het maximum aantal redirects is hard gecodeerd op 10 (met gebruik 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: Datacollectie → Hosts (of Sjablonen)
  • Klik op Web in de rij van de host/sjabloon
  • Klik rechts op 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 je in staat om de algemene parameters van een webscenario te configureren.

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

Scenario parameters:

Parameter Omschrijving
Naam Unieke naam van het scenario.
Gebruikersmacro's worden ondersteund. Let op dat als gebruikersmacro's worden gebruikt, deze macro's onopgelost zullen blijven in webmonitoringitemnamen.
Update-interval Hoe vaak het scenario wordt uitgevoerd.
Tijdsuffixes 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).
Nieuwe webscenario's worden gecontroleerd binnen 60 seconden na hun creatie.
Pogingen Het aantal pogingen om webscenariostappen uit te voeren. In geval van netwerkproblemen (time-out, geen connectiviteit, enzovoort) kan Zabbix een stap meerdere keren uitvoeren. Het opgegeven aantal zal evenveel invloed hebben op elke stap van het scenario. Er kunnen maximaal 10 pogingen worden gespecificeerd, de standaardwaarde is 1.
Opmerking: Zabbix zal een stap niet herhalen vanwege een verkeerde responscode of de onjuistheid van een vereiste string.
Agent Selecteer een clientagent.
Zabbix zal zich voordoen als de geselecteerde browser. Dit is handig wanneer een website verschillende inhoud retourneert voor verschillende browsers.
Gebruikersmacro's kunnen worden gebruikt in dit veld.
HTTP-proxy Je kunt een HTTP-proxy opgeven om te gebruiken, in de indeling [protocol://][gebruikersnaam[:wachtwoord]@]proxy.example.com[:poort].
Dit stelt de cURL-optie CURLOPT_PROXY in.
De optionele prefix protocol:// kan worden gebruikt om alternatieve proxyprotocollen op te geven (de protocolprefixondersteuning is toegevoegd in cURL 7.21.7). Als er geen protocol is gespecificeerd, wordt de proxy behandeld als een HTTP-proxy.
Standaard wordt poort 1080 gebruikt.
Indien gespecificeerd, overschrijft de proxy proxygerelateerde omgevingsvariabelen zoals http_proxy, HTTPS_PROXY. Als niet gespecificeerd, overschrijft de proxy geen proxygerelateerde omgevingsvariabelen. De ingevoerde waarde wordt 'zoals deze is' doorgegeven, er vindt geen sanity-check plaats.
Je kunt ook een SOCKS-proxyadres invoeren. Als je het verkeerde protocol opgeeft, zal de verbinding mislukken en wordt het item niet ondersteund.
Let op dat alleen eenvoudige authenticatie wordt ondersteund met HTTP-proxy.
Gebruikersmacro's kunnen worden gebruikt in dit veld.
Variabelen Variabelen die kunnen worden gebruikt in de stappen van het scenario (URL, postvariabelen).
Zij hebben het volgende formaat:
{macro1}=waarde1
{macro2}=waarde2
{macro3}=regex:<reguliere expressie>
Bijvoorbeeld:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
De macro's kunnen vervolgens in de stappen worden gebruikt als {username}, {password} en {hostid}. Zabbix zal ze automatisch vervangen door de werkelijke waarden. Let op dat variabelen met regex: één stap nodig hebben om de waarde van de reguliere expressie te krijgen, zodat de geëxtraheerde waarde alleen kan worden toegepast op de stap daarna.
Als het waardegedeelte begint met regex:, dan wordt het deel na regex: behandeld als een reguliere expressie die de webpagina doorzoekt en, indien gevonden, de overeenkomst in de variabele opslaat. Er moet ten minste éé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 bij gebruik in queryvelden of formuliergegevens voor postvariabelen, maar moeten handmatig worden URL-gecodeerd bij gebruik in rauwe post of rechtstreeks in de URL.
Headers HTTP-headers worden gebruikt bij het uitvoeren van een verzoek. Standaard- en aangepaste headers kunnen worden gebruikt.
Headers worden toegewezen met standaardinstellingen, afhankelijk van het type Agent dat is geselecteerd in een keuzelijst op scenarioniveau, en worden toegepast op alle stappen, tenzij ze op stapniveau op maat zijn gedefinieerd.
Het moet worden opgemerkt dat het definiëren van de header op stapniveau automatisch alle eerder gedefinieerde headers verwijdert, behalve een standaardheader die wordt toegewezen door 'User-Agent' te selecteren in een keuzelijst op scenarioniveau.
Zelfs de standaard 'User-Agent'-header kan echter worden overschreven door deze op stapniveau op te geven.
Om de header op scenarioniveau uit te schakelen, moet de header worden genoemd en toegeschreven zonder waarde op stapniveau.
Headers moeten worden vermeld met dezelfde syntaxis als ze in het HTTP-protocol zouden verschijnen, waarbij optioneel enkele extra functies 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 is het uitgeschakeld.

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

Maak een ander scenario op basis van de eigenschappen van het bestaande.
Geschiedenis- en trendgegevens voor het scenario verwijderen. 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 om omgevingsvariabelen met betrekking tot de proxy in te stellen.

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

Voor HTTPS-controles - stel de HTTPS_PROXY-omgevingsvariabele in. Bij voorbeeld, HTTPS_PROXY=http://proxy_ip:proxy_port. Meer details zijn beschikbaar via een shell-opdracht: # man curl.

Het tabblad Stappen stelt je in staat om de stappen van het webscenario te configureren. Om een webscenariostap toe te voegen, klik je op Toevoegen in het blok Stappen.

Geheime gebruikersmacro's mogen niet worden gebruikt in URL's, omdat deze worden opgelost tot "******".

Stappen configureren

Stap parameters:

Parameter Omschrijving
Naam Unieke naam van de stap.
Gebruikersmacro's worden ondersteund. Let op dat als gebruikersmacro's worden gebruikt, deze macro's onopgelost zullen blijven in webmonitoringitemnamen.
URL URL om verbinding mee te maken en gegevens op te halen. Bijvoorbeeld:
https://www.example.com
http://www.example.com/download
Domeinnamen kunnen worden gespecificeerd in Unicode-tekens. Ze worden automatisch geconverteerd naar ASCII met punycode wanneer de webscenario-stap wordt uitgevoerd.
De knop Parseren kan worden gebruikt om optionele queryvelden (zoals ?naam=Admin&password=mypassword) van de URL te scheiden en de attributen en waarden in Queryvelden te verplaatsen voor automatische URL-codering.
Variabelen kunnen worden gebruikt in de URL, met behulp van de syntaxis {macro}. Variabelen kunnen handmatig worden URL-gecodeerd met de syntaxis {{macro}.urlencode()}.
Gebruikersmacro's en {HOST.*} macros worden ondersteund.
Beperkt tot 2048 tekens.
Queryvelden HTTP GET-variabelen voor de URL.
Opgesomd als attribuut- en waardeparen.
Waarden worden automatisch URL-gecodeerd. Waarden van scenariovariabelen, gebruikersmacro's of {HOST.*} macro's worden eerst opgelost en vervolgens automatisch URL-gecodeerd. Met de syntaxis {{macro}.urlencode()} worden ze dubbel URL-gecodeerd.
Gebruikersmacro's en {HOST.*} macros worden ondersteund.
Post HTTP POST-variabelen.
In de modus Formuliergegevens opgegeven als attribuut- en waardeparen.
Waarden worden automatisch URL-gecodeerd. Waarden van scenariovariabelen, gebruikersmacro's of {HOST.*} macro's worden eerst opgelost en vervolgens automatisch URL-gecodeerd. In de modus Ruwe gegevens worden attributen/waarden weergegeven op één regel en samengevoegd met een &-symbool.
Ruwe waarden kunnen handmatig URL-gecodeerd/gedecodeerd worden met de syntaxis {{macro}.urlencode()} of {{macro}.urldecode()}.
Bijvoorbeeld: id=2345&userid={user}
Als {user} wordt gedefinieerd als een variabele van de webscenario, wordt deze vervangen door zijn waarde wanneer de stap wordt uitgevoerd. Als je de variabele wilt URL-coderen, vervang dan {user} door {{user}.urlencode()}.
Gebruikersmacro's en {HOST.*} macros worden ondersteund.
Variabelen Variabelen op stapniveau die kunnen worden gebruikt voor GET- en POST-functies.
Opgesomd als attribuut- en waardeparen.
Variabelen op stapniveau overschrijven variabelen op scenariosniveau of variabelen van de vorige stap. De waarde van een variabele op stapniveau heeft echter alleen invloed op de stap daarna (en niet op de huidige stap).
Ze hebben het volgende formaat:
{macro}=waarde
{macro}=regex:<reguliere expressie>
Zie voor meer informatie de beschrijving van variabelen op scenarios niveau.
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 rauwe post of rechtstreeks in de URL.
Headers Aangepaste HTTP-headers die worden verzonden bij het uitvoeren van een verzoek.
Opgesomd als attribuut- en waardeparen.
Een op stapniveau gedefinieerde header wordt gebruikt voor die specifieke stap.
Het moet worden opgemerkt dat het definiëren van de header op stapniveau automatisch alle eerder gedefinieerde headers verwijdert, behalve een standaardheader die wordt toegewezen door 'User-Agent' te selecteren uit een keuzelijst op scenarioniveau.
Zelfs de standaard 'User-Agent'-header kan echter worden overschreven door deze op stapniveau op te geven.
Door de naam aan een header toe te kennen, maar geen waarde in te stellen, wordt de standaardheader op scenarioniveau uitgeschakeld.
Gebruikersmacro's en {HOST.*} macro's worden ondersteund.
Dit stelt de cURL-optie CURLOPT_HTTPHEADER in.
Volg redirects Vink het vakje aan om HTTP-omleidingen te volgen.
Dit stelt de cURL-optie CURLOPT_FOLLOWLOCATION in.
Ophalen modus Selecteer de ophaalmodus:
Body - haal alleen de body op uit het HTTP-antwoord
Headers - haal alleen de headers op uit het HTTP-antwoord
Body en headers - haal de body en headers op uit het HTTP-antwoord
Timeout Zabbix zal niet meer tijd besteden aan het verwerken van de URL dan de ingestelde hoeveelheid tijd (van één seconde tot maximaal 1 uur). In feite bepaalt deze parameter de maximale tijd om verbinding te maken met de URL en de maximale tijd om een HTTP-verzoek uit te voeren. Daarom zal Zabbix niet meer tijd besteden dan 2 x Timeout seconden aan de stap.
Tijdsuffixen worden ondersteund, bijvoorbeeld 30s, 1m, 1u. Gebruikersmacro's worden ondersteund.
Vereiste string Vereist regulier expressiepatroon.
Tenzij de opgehaalde inhoud (HTML) overeenkomt met het vereiste patroon, zal de stap mislukken. Als leeg, wordt er geen controle op de vereiste string uitgevoerd.
Bijvoorbeeld:
Homepage van Zabbix
Welcome.*admin
Opmerking: Referenties naar reguliere expressies die zijn gemaakt in de Zabbix frontend worden niet ondersteund in dit veld.
Gebruikersmacro's en {HOST.*} macros worden ondersteund.
Vereiste statuscodes Lijst met verwachte HTTP-statuscodes. Als Zabbix een code krijgt die niet in de lijst staat, zal de stap mislukken.
Als leeg, wordt er geen controle op statuscodes uitgevoerd.
Bijvoorbeeld: 200,201,210-299
Gebruikersmacro's worden ondersteund.

Wijzigingen in webscenariostappen worden pas opgeslagen als het hele scenario wordt opgeslagen.

Zie ook een voorbeeld uit de praktijk van hoe webscenario-stappen kunnen worden geconfigureerd.

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 tabblad Authenticatie stelt u in staat scenario-authenticatieopties te configureren. Een groen puntje naast de tabbladnaam geeft aan dat er een soort HTTP-authenticatie is ingeschakeld.

Authenticatieparameters:

Parameter Omschrijving
Authenticatie Authenticatieopties.
Geen - er wordt geen authenticatie gebruikt.
Basis - er wordt basisauthenticatie gebruikt.
NTLM - NTLM (Windows NT LAN Manager) authenticatie wordt gebruikt.
Kerberos - Kerberos-authenticatie wordt gebruikt. Zie ook: Kerberos configureren met Zabbix.
Digest - Digest-authenticatie wordt gebruikt.
Het selecteren van een authenticatiemethode geeft twee aanvullende velden voor het invoeren van een gebruikersnaam en wachtwoord.
Gebruikersmacro's kunnen worden gebruikt in de gebruikers- en wachtwoordvelden.
SSL verifiëren peer Vink het vakje aan om het SSL-certificaat van de webserver te verifiëren.
Het servercertificaat wordt automatisch gehaald uit de systeembrede locatie van de certificaatautoriteit (CA). U kunt de locatie van CA-bestanden overschrijven met de Zabbix-server- of proxysconfiguratieparameter SSLCALocation.
Dit stelt de cURL-optie CURLOPT_SSL_VERIFYPEER in.
SSL verifiëren 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 cURL-optie CURLOPT_SSL_VERIFYHOST in.
SSL-certificaatbestand 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-sleutelbestand leeg. Als de sleutel is versleuteld, specificeert u het wachtwoord in het veld Wachtwoord SSL-sleutel. De map met dit bestand wordt gespecificeerd door de Zabbix-server- of proxysconfiguratieparameter SSLCertLocation.
HOST.* macros en gebruikersmacro's kunnen in dit veld worden gebruikt.
Dit stelt de cURL-optie CURLOPT_SSLCERT in.
SSL-sleutelbestand Naam van het SSL-privésleutelbestand dat wordt gebruikt voor clientauthenticatie. Het privésleutelbestand moet in PEM1 -indeling zijn. De map met dit bestand wordt gespecificeerd door de Zabbix-server- of proxysconfiguratieparameter SSLKeyLocation.
HOST.* macros en gebruikersmacro's kunnen in dit veld worden gebruikt.
Dit stelt de cURL-optie CURLOPT_SSLKEY in.
Wachtwoord SSL-sleutel Wachtwoord voor het SSL-privésleutelbestand.
Gebruikersmacro's kunnen in dit veld worden gebruikt.
Dit stelt de cURL-optie CURLOPT_KEYPASSWD in.

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

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

De Zabbix-server haalt wijzigingen in certificaten op zonder een herstart.

Als u een clientcertificaat en privésleutel in één bestand heeft, geeft u dit gewoon op 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. Het combineren van certificaat en sleutel is eenvoudig:

cat client.crt client.key > client.pem

Weergave

Om webscenario's geconfigureerd voor een host te bekijken, gaat u naar Monitoring → Hosts, zoek de host in de lijst en klik op de Web koppeling in de laatste kolom. Klik op de naam van het scenario voor gedetailleerde informatie.

Een overzicht van webscenario's kan ook worden weergegeven in Dashboards met behulp van de Webmonitoring-widget.

Recente resultaten van de uitvoering van het webscenario zijn beschikbaar in de sectie Monitoring → Laatste gegevens.

Uitgebreide monitoring

Soms is het noodzakelijk om de ontvangen HTML-pagina-inhoud te registreren. Dit is vooral handig als een stap in het webscenario mislukt. Debugniveau 5 (trace) dient dit doel. Dit niveau kan worden ingesteld in de server en proxy configuratiebestanden of met behulp van een runtime-besturingsoptie (-R log_level_increase="http poller,N", waar N het procesnummer is). De volgende voorbeelden laten zien hoe uitgebreide monitoring kan worden gestart, op voorwaarde dat debugniveau 4 al is ingesteld:

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

Als uitgebreide webmonitoring niet nodig is, kan dit worden gestopt met behulp van de -R log_level_decrease optie.