7 Monitoraggio web

Panoramica

Con Zabbix è possibile verificare diversi aspetti della disponibilità dei siti web.\

Per eseguire il monitoraggio web, Zabbix server deve essere inizialmente configurato con il supporto cURL (libcurl).

Per attivare il monitoraggio web è necessario definire degli scenari web. Uno scenario web consiste in una o più richieste HTTP o "passi". I passi vengono eseguiti periodicamente da Zabbix server in un ordine predefinito. Se un host è monitorato da un proxy, i passi vengono eseguiti dal proxy.

Gli scenari web sono collegati a host/template nello stesso modo di item, trigger, ecc. Ciò significa che gli scenari web possono essere creati anche a livello di template e quindi applicati a più host in un'unica operazione.

Le seguenti informazioni vengono raccolte in qualsiasi scenario web:

  • velocità media di download al secondo per tutti i passi dell'intero scenario
  • numero del passo che non è riuscito
  • ultimo messaggio di errore

Le seguenti informazioni vengono raccolte in qualsiasi passo di uno scenario web:

  • velocità di download al secondo
  • tempo di risposta
  • codice di risposta

Per maggiori dettagli, vedere item del monitoraggio web.

I dati raccolti dall'esecuzione degli scenari web vengono conservati nel database. I dati vengono utilizzati automaticamente per grafici, trigger e notifiche.

Zabbix può anche verificare se una pagina HTML recuperata contiene una stringa predefinita. Può eseguire un accesso simulato e seguire un percorso di clic del mouse simulati sulla pagina.

Il monitoraggio web di Zabbix supporta sia HTTP che HTTPS. Durante l'esecuzione di uno scenario web, Zabbix seguirà facoltativamente i reindirizzamenti (vedere l'opzione Follow redirects sotto). Il numero massimo di reindirizzamenti è fissato nel codice a 10 (utilizzando l'opzione cURL CURLOPT_MAXREDIRS). Tutti i cookie vengono mantenuti durante l'esecuzione di un singolo scenario.

Configurazione di uno scenario web

Per configurare uno scenario web:

  • Vai a: Raccolta dati → Host (oppure Template)
  • Fai clic su Web nella riga dell'host/template
  • Fai clic su Crea scenario web a destra (oppure sul nome dello scenario per modificare uno scenario esistente)
  • Inserisci i parametri dello scenario nel modulo

La scheda Scenario consente di configurare i parametri generali di uno scenario web.

Tutti i campi di input obbligatori sono contrassegnati con un asterisco rosso.

Parametri dello scenario:

Parametro Descrizione
Nome Nome univoco dello scenario.
Sono supportate le macro utente. Nota che, se vengono utilizzate macro utente, queste macro rimarranno non risolte nei nomi degli item di monitoraggio web.
Intervallo di aggiornamento Con quale frequenza verrà eseguito lo scenario.
Sono supportati i suffissi temporali, ad esempio 30s, 1m, 2h, 1d.
Sono supportate le macro utente. Nota che, se viene utilizzata una macro utente e il suo valore viene modificato (ad esempio 5m → 30s), il controllo successivo verrà eseguito in base al valore precedente (più avanti nel futuro con i valori dell'esempio).
I nuovi scenari web verranno controllati entro 60 secondi dalla loro creazione.
Tentativi Il numero di tentativi per l'esecuzione degli step dello scenario. In caso di problemi di rete (timeout, assenza di connettività, ecc.) Zabbix può ripetere l'esecuzione di uno step più volte. Il valore impostato influirà in ugual misura su ogni step dello scenario. È possibile specificare fino a 10 tentativi, il valore predefinito è 1.
Nota: Zabbix non ripeterà uno step a causa di un codice di risposta errato o della mancata corrispondenza di una stringa richiesta.
Agent Seleziona un agent client.
Zabbix fingerà di essere il browser selezionato. Questo è utile quando un sito web restituisce contenuti diversi per browser diversi.
In questo campo possono essere utilizzate macro utente.
HTTP proxy Puoi specificare un HTTP proxy da utilizzare, nel formato [protocol://][username[:password]@]proxy.example.com[:port].
Questo imposta l'opzione cURL CURLOPT_PROXY.
Il prefisso facoltativo protocol:// può essere utilizzato per specificare protocolli proxy alternativi (il supporto del prefisso di protocollo è stato aggiunto in cURL 7.21.7). Se non viene specificato alcun protocollo, il proxy verrà trattato come un HTTP proxy.
Per impostazione predefinita verrà utilizzata la porta 1080.
Se specificato, il proxy sovrascriverà le variabili d'ambiente relative al proxy come http_proxy, HTTPS_PROXY. Se non specificato, il proxy non sovrascriverà le variabili d'ambiente relative al proxy. Il valore inserito viene passato "così com'è", senza alcun controllo di validità.
Puoi anche inserire l'indirizzo di un proxy SOCKS. Se specifichi il protocollo sbagliato, la connessione fallirà e l'item diventerà non supportato.
Nota che con HTTP proxy è supportata solo l'autenticazione semplice.
In questo campo possono essere utilizzate macro utente.
Variabili Variabili che possono essere utilizzate negli step dello scenario (URL, variabili post).
Hanno il seguente formato:
{macro1}=value1
{macro2}=value2
{macro3}=regex:<regular expression>
{macro4}=jsonpath:<jsonpath>
{macro5}=xmlxpath:<xmlxpath>
{macro6}={{macro}.function()} (vedi funzioni macro)
Per esempio:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
{url}=jsonpath:$.host_url
{status}=xmlxpath://host/response/status
{newvar}={{myvar}.btoa()}
Le macro possono quindi essere richiamate negli step come {username}, {password}, {hostid}, ecc. Zabbix le sostituirà automaticamente con i valori effettivi. Nota che le variabili con regex: necessitano di uno step per ottenere il valore dell'espressione regolare, quindi il valore estratto può essere applicato solo allo step successivo.
Se la parte del valore inizia con regex:, la parte successiva viene trattata come un'espressione regolare che cerca nella pagina web e, se trovata, memorizza la corrispondenza nella variabile. Deve essere presente almeno un sottogruppo affinché il valore corrispondente possa essere estratto.
Sono supportate le macro utente e le macro}.
Le variabili vengono codificate automaticamente in URL quando utilizzate nei campi di query o nei dati di modulo per le variabili post, ma devono essere codificate manualmente in URL quando utilizzate in post raw o direttamente nell'URL.
Header Gli header HTTP vengono utilizzati durante l'esecuzione di una richiesta. Possono essere utilizzati header predefiniti e personalizzati.
Gli header verranno assegnati utilizzando le impostazioni predefinite in base al tipo di Agent selezionato da un elenco a discesa a livello di scenario e verranno applicati a tutti gli step, a meno che non siano definiti in modo personalizzato a livello di step.
Va notato che definire l'header a livello di step scarta automaticamente tutti gli header definiti in precedenza, ad eccezione di un header predefinito assegnato selezionando 'User-Agent' da un elenco a discesa a livello di scenario.
Tuttavia, anche l'header predefinito 'User-Agent' può essere sovrascritto specificandolo a livello di step.
Per annullare l'impostazione dell'header a livello di scenario, l'header deve essere nominato e attribuito senza valore a livello di step.
Gli header devono essere elencati utilizzando la stessa sintassi con cui apparirebbero nel protocollo HTTP, facoltativamente usando alcune funzionalità aggiuntive supportate dall'opzione cURL CURLOPT_HTTPHEADER.
Per esempio:
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
Sono supportate le macro utente e le macro}.
Abilitato Lo scenario è attivo se questa casella è selezionata, altrimenti è disabilitato.

Nota che durante la modifica di uno scenario esistente, nel modulo sono disponibili due pulsanti aggiuntivi:

Crea un altro scenario basato sulle proprietà di quello esistente.
Elimina i dati di history e trend dello scenario. Questo farà sì che il server esegua lo scenario immediatamente dopo l'eliminazione dei dati.

Se il campo HTTP proxy viene lasciato vuoto, un altro modo per utilizzare un HTTP proxy è impostare le variabili d'ambiente relative al proxy.

Per i controlli HTTP, imposta la variabile d'ambiente http_proxy per l'utente del server Zabbix. Per esempio, http_proxy=http://proxy_ip:proxy_port.

Per i controlli HTTPS, imposta la variabile d'ambiente HTTPS_PROXY. Per esempio, HTTPS_PROXY=http://proxy_ip:proxy_port. Maggiori dettagli sono disponibili eseguendo un comando della shell: # man curl.

La scheda Step consente di configurare gli step dello scenario web. Per aggiungere uno step dello scenario web, fai clic su Aggiungi nel blocco Step.

Le macro utente segrete non devono essere utilizzate negli URL, poiché verranno risolte in "******".

Configurazione dei passaggi

Parametri del passaggio:

Parametro Descrizione
Nome Nome univoco del passaggio.
Le macro utente sono supportate. Nota che, se vengono utilizzate macro utente, queste macro rimarranno non risolte nei nomi degli item di monitoraggio web.
URL URL a cui connettersi e da cui recuperare i dati. Ad esempio:
https://www.example.com
http://www.example.com/download
I nomi di dominio possono essere specificati con caratteri Unicode. Vengono convertiti automaticamente in punycode ASCII durante l'esecuzione del passaggio dello scenario web.
Il pulsante Parse può essere utilizzato per separare i campi di query opzionali (come ?name=Admin&password=mypassword) dall'URL, spostando attributi e valori in Campi query per la codifica URL automatica.
Le variabili possono essere utilizzate nell'URL usando la sintassi {macro}. Le variabili possono essere codificate URL manualmente usando la sintassi {{macro}.urlencode()}.
Le macro utente e le macro} sono supportate.
Limitato a 2048 caratteri.
Campi query Variabili HTTP GET per l'URL.
Specificate come coppie attributo-valore.
I valori vengono codificati URL automaticamente. I valori delle variabili dello scenario, delle macro utente o delle macro {HOST.*} vengono risolti e quindi codificati URL automaticamente. L'uso della sintassi {{macro}.urlencode()} comporterà una doppia codifica URL.
Le macro utente e le macro} sono supportate.
Post Variabili HTTP POST.
In modalità Form data, specificate come coppie attributo-valore.
I valori vengono codificati URL automaticamente. I valori delle variabili dello scenario, delle macro utente o delle macro {HOST.*} vengono risolti e quindi codificati URL automaticamente.
In modalità Raw data, attributi/valori vengono visualizzati su una singola riga e concatenati con il simbolo &.
I valori grezzi possono essere codificati/decodificati URL manualmente usando la sintassi {{macro}.urlencode()} o {{macro}.urldecode()}.
Ad esempio: id=2345&userid={user}
Se {user} è definita come variabile dello scenario web, verrà sostituita con il suo valore quando il passaggio viene eseguito. Se si desidera codificare URL la variabile, sostituire {user} con {{user}.urlencode()}.
Le macro utente e le macro} sono supportate.
Variabili Variabili a livello di passaggio che possono essere utilizzate per le funzioni GET e POST.
Specificate come coppie attributo-valore.
Le variabili a livello di passaggio sovrascrivono le variabili a livello di scenario o le variabili del passaggio precedente. Tuttavia, il valore di una variabile a livello di passaggio influisce solo sul passaggio successivo (e non sul passaggio corrente).
Hanno il seguente formato:
{macro}=value
{macro}=regex:<espressione regolare>
Per ulteriori informazioni vedere la descrizione delle variabili a livello di scenario.
Le variabili vengono codificate URL automaticamente quando utilizzate nei campi query o nei dati del modulo per le variabili post, ma devono essere codificate URL manualmente quando utilizzate nel post grezzo o direttamente nell'URL.
Header Header HTTP personalizzati che verranno inviati durante l'esecuzione di una richiesta.
Specificati come coppie attributo-valore.
Un header definito a livello di passaggio verrà utilizzato per quel particolare passaggio.
Va notato che definire l'header a livello di passaggio scarta automaticamente tutti gli header definiti in precedenza, ad eccezione di un header predefinito assegnato selezionando 'User-Agent' da un elenco a discesa a livello di scenario.
Tuttavia, anche l'header predefinito 'User-Agent' può essere sovrascritto specificandolo a livello di passaggio.
Ad esempio, assegnare il nome a un header senza impostare alcun valore annullerà l'header predefinito a livello di scenario.
Le macro utente e le macro {HOST.*} sono supportate.
Questo imposta l'opzione cURL CURLOPT_HTTPHEADER.
Segui reindirizzamenti Selezionare la casella per seguire i reindirizzamenti HTTP.
Questo imposta l'opzione cURL CURLOPT_FOLLOWLOCATION.
Modalità di recupero Selezionare la modalità di recupero:
Body - recupera solo il body dalla risposta HTTP
Headers - recupera solo gli header dalla risposta HTTP
Body and headers - recupera body e header dalla risposta HTTP
Timeout Zabbix non impiegherà più del tempo impostato per elaborare l'URL (da un secondo fino a un massimo di 1 ora). In realtà questo parametro definisce il tempo massimo per stabilire la connessione all'URL e il tempo massimo per eseguire una richiesta HTTP. Pertanto, Zabbix non impiegherà più di 2 x Timeout secondi per il passaggio.
I suffissi temporali sono supportati, ad esempio 30s, 1m, 1h. Le macro utente sono supportate.
Stringa richiesta Pattern di espressione regolare richiesto.
A meno che il contenuto recuperato (HTML) non corrisponda al pattern richiesto, il passaggio fallirà. Se vuoto, non viene eseguito alcun controllo sulla stringa richiesta.
Ad esempio:
Homepage of Zabbix
Welcome.*admin
Nota: il riferimento alle espressioni regolari create nel frontend di Zabbix non è supportato in questo campo.
Le macro utente e le macro} sono supportate.
Codici di stato richiesti Elenco dei codici di stato HTTP previsti. Se Zabbix riceve un codice non presente nell'elenco, il passaggio fallirà.
Se vuoto, non viene eseguito alcun controllo sui codici di stato.
Ad esempio: 200,201,210-299
Le macro utente sono supportate.

Qualsiasi modifica nei passaggi dello scenario web verrà salvata solo quando verrà salvato l'intero scenario.

Vedere anche un esempio reale di come i passaggi del monitoraggio web possono essere configurati.

Configurazione dei tag

La scheda Tag consente di definire il livello di scenario tag.

Il tagging permette di filtrare gli scenari web e il monitoraggio web items.

Configurazione dell'autenticazione

La scheda Autenticazione consente di configurare le opzioni di autenticazione dello scenario. Un punto verde accanto al nome della scheda indica che è abilitato un qualche tipo di autenticazione HTTP.

Parametri di autenticazione:

Parameter Description
Autenticazione HTTP Selezionare l'opzione di autenticazione:
Nessuna - non viene utilizzata alcuna autenticazione;
Basic - viene utilizzata l'autenticazione di base;
NTLM - viene utilizzata l'autenticazione NTLM (Windows NT LAN Manager);
Kerberos - viene utilizzata l'autenticazione Kerberos (vedere anche: Configurazione di Kerberos con Zabbix);
Digest - viene utilizzata l'autenticazione Digest.
Utente Inserire il nome utente (fino a 255 caratteri).
Questo campo è disponibile se Autenticazione HTTP è impostata su Basic, NTLM, Kerberos o Digest. Le macro utente sono supportate.
Password Inserire la password dell'utente (fino a 255 caratteri).
Questo campo è disponibile se Autenticazione HTTP è impostata su Basic, NTLM, Kerberos o Digest. Le macro utente sono supportate.
Verifica peer SSL Selezionare la casella per verificare il certificato SSL del web server.
Il certificato del server verrà prelevato automaticamente dalla posizione dell'autorità di certificazione (CA) a livello di sistema. È possibile sovrascrivere la posizione dei file CA utilizzando il parametro di configurazione di Zabbix server o proxy SSLCALocation.
Questo imposta l'opzione cURL CURLOPT_SSL_VERIFYPEER.
Verifica host SSL Selezionare la casella per verificare che il campo Common Name o il campo Subject Alternate Name del certificato del web server corrisponda.
Questo imposta l'opzione cURL CURLOPT_SSL_VERIFYHOST.
File certificato SSL Nome del file del certificato SSL utilizzato per l'autenticazione del client. Il file del certificato deve essere in formato PEM1. Se il file del certificato contiene anche la chiave privata, lasciare vuoto il campo File chiave SSL. Se la chiave è crittografata, specificare la password nel campo Password chiave SSL. La directory che contiene questo file è specificata dal parametro di configurazione di Zabbix server o proxy SSLCertLocation.
In questo campo possono essere utilizzate le macro HOST.* e le macro utente.
Questo imposta l'opzione cURL CURLOPT_SSLCERT.
File chiave SSL Nome del file della chiave privata SSL utilizzato per l'autenticazione del client. Il file della chiave privata deve essere in formato PEM1. La directory che contiene questo file è specificata dal parametro di configurazione di Zabbix server o proxy SSLKeyLocation.
In questo campo possono essere utilizzate le macro HOST.* e le macro utente.
Questo imposta l'opzione cURL CURLOPT_SSLKEY.
Password chiave SSL Password del file della chiave privata SSL.
In questo campo possono essere utilizzate le macro utente.
Questo imposta l'opzione cURL CURLOPT_KEYPASSWD.

[1] Zabbix supporta solo file di certificato e chiave privata in formato PEM. Se i dati del certificato e della chiave privata sono in un file in formato PKCS #12 (di solito con estensione *.p12 o *.pfx), è possibile generare da esso il file PEM utilizzando i seguenti comandi:

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 recepisce le modifiche ai certificati senza riavvio.

Se si dispone del certificato client e della chiave privata in un unico file, è sufficiente specificarlo nel campo "File certificato SSL" e lasciare vuoto il campo "File chiave SSL". Il certificato e la chiave devono comunque essere in formato PEM. Combinare certificato e chiave è semplice:

cat client.crt client.key > client.pem

Visualizzazione

Per visualizzare gli scenari web configurati per un host, vai in Monitoring → Hosts, individua l'host nell'elenco e fai clic sul collegamento Web nell'ultima colonna. Fai clic sul nome dello scenario per ottenere informazioni dettagliate.

Una panoramica degli scenari web può essere visualizzata anche in Dashboards tramite il widget Web monitoring.

I risultati recenti dell'esecuzione dello scenario web sono disponibili nella sezione Monitoring → Latest data.

Monitoraggio esteso

A volte è necessario registrare il contenuto della pagina HTML ricevuta. Ciò è particolarmente utile se un passaggio dello scenario web non riesce. Il livello di debug 5 (trace) serve a questo scopo. Questo livello può essere impostato nei file di configurazione di server e proxy oppure utilizzando un'opzione di runtime control (-R log_level_increase="http poller,N", dove N è il numero del processo). Gli esempi seguenti mostrano come avviare il monitoraggio esteso, a condizione che il livello di debug 4 sia già impostato:

# Aumenta il livello di log di tutti gli http poller:
zabbix_server -R log_level_increase="http poller"

# Aumenta il livello di log del secondo http poller:
zabbix_server -R log_level_increase="http poller,2"

Se il monitoraggio web esteso non è necessario, può essere interrotto utilizzando l'opzione -R log_level_decrease.