Monitoraggio web
Panoramica
Con Zabbix puoi verificare diversi aspetti di disponibilità dei siti web.
Per eseguire il monitoraggio web, il server Zabbix deve essere inizialmente configurato con il supporto cURL (libcurl).
Per attivare il monitoraggio web devi definire degli scenari web. Uno scenario web è composto da una o più richieste HTTP o "step". Gli step vengono eseguiti periodicamente dal server Zabbix in un ordine predefinito. Se un host è monitorato da proxy, gli step vengono eseguiti dal proxy.
Gli scenari web sono associati a host/template nello stesso modo di item, trigger, ecc. Ciò significa che gli scenari web possono anche essere creati a livello di template e poi 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 gli step dell'intero scenario
- numero dello step che è fallito
- ultimo messaggio di errore
Le seguenti informazioni vengono raccolte in qualsiasi step dello scenario web:
- velocità di download al secondo
- tempo di risposta
- codice di risposta
Per ulteriori dettagli, consulta gli item di 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. Quando esegue uno scenario web, Zabbix può facoltativamente seguire i reindirizzamenti (vedi l'opzione Follow redirects sotto). Il numero massimo di reindirizzamenti è impostato in modo fisso a 10 (usando 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 (o 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 da un asterisco rosso.
Parametri dello scenario:
| Parametro | Descrizione |
|---|---|
| Nome | Nome univoco dello scenario. Le macro utente sono supportate. Nota: se vengono utilizzate macro utente, queste macro rimarranno irrisolte nei nomi degli item di monitoraggio web. |
| Intervallo di aggiornamento | Frequenza di esecuzione dello scenario. I suffissi temporali sono supportati, ad esempio 30s, 1m, 2h, 1d. Le macro utente sono supportate. Nota: 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 | Numero di tentativi per l'esecuzione dei passaggi dello scenario web. In caso di problemi di rete (timeout, assenza di connettività, ecc.), Zabbix può ripetere l'esecuzione di un passaggio diverse volte. Il valore impostato verrà applicato allo stesso modo a ogni passaggio dello scenario. È possibile specificare fino a 10 tentativi; il valore predefinito è 1. Nota: Zabbix non ripeterà un passaggio a causa di un codice di risposta errato o della mancata corrispondenza di una stringa richiesta. |
| Agent | Seleziona un agent client. Zabbix simulerà il browser selezionato. Questa opzione è utile quando un sito web restituisce contenuti diversi per browser diversi. In questo campo è possibile utilizzare macro utente. |
| Proxy HTTP | È possibile specificare un proxy HTTP da utilizzare, nel formato [protocol://][username[:password]@]proxy.example.com[:port].Questa impostazione definisce l'opzione cURL CURLOPT_PROXY. Il prefisso facoltativo protocol:// può essere utilizzato per specificare protocolli proxy alternativi (il supporto per il prefisso del protocollo è stato aggiunto in cURL 7.21.7). Se non viene specificato alcun protocollo, il proxy verrà trattato come un proxy HTTP.Per impostazione predefinita verrà utilizzata la porta 1080. Se specificato, il proxy sovrascriverà le variabili d'ambiente relative al proxy, come http_proxy e 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à. È inoltre possibile inserire l'indirizzo di un proxy SOCKS. Se si specifica il protocollo errato, la connessione avrà esito negativo e l'item diventerà non supportato. Nota: con un proxy HTTP è supportata solo l'autenticazione semplice. In questo campo è possibile utilizzare macro utente. |
| Variabili | Variabili che possono essere utilizzate nei passaggi dello scenario (URL, variabili post). Hanno il formato seguente: {macro1}=value1 {macro2}=value2 {macro3}=regex:<regular expression> {macro4}=jsonpath:<jsonpath> {macro5}=xmlxpath:<xmlxpath> {macro6}={{macro}.function()} (vedere funzioni delle macro) Ad 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 referenziate nei passaggi come {username}, {password}, {hostid}, ecc. Zabbix le sostituirà automaticamente con i valori effettivi. Nota: le variabili con regex: richiedono un passaggio per ottenere il valore dell'espressione regolare, pertanto il valore estratto può essere applicato solo al passaggio 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.Le macro utente e le macro {HOST.*} sono supportate.Le variabili vengono codificate automaticamente in formato URL quando utilizzate nei campi di query o nei dati del modulo per le variabili post, ma devono essere codificate manualmente in formato URL quando vengono utilizzate nei dati post non elaborati o direttamente nell'URL. |
| Intestazioni | Le intestazioni HTTP vengono utilizzate durante l'esecuzione di una richiesta. È possibile utilizzare intestazioni predefinite e personalizzate. Le intestazioni verranno assegnate utilizzando le impostazioni predefinite in base al tipo di Agent selezionato dall'elenco a discesa a livello di scenario e verranno applicate a tutti i passaggi, a meno che non siano definite personalizzazioni a livello di passaggio. È importante notare che la definizione dell'intestazione a livello di passaggio elimina automaticamente tutte le intestazioni definite in precedenza, ad eccezione di un'intestazione predefinita assegnata selezionando 'User-Agent' dall'elenco a discesa a livello di scenario. Tuttavia, anche l'intestazione predefinita 'User-Agent' può essere sovrascritta specificandola a livello di passaggio. Per annullare l'impostazione dell'intestazione a livello di scenario, l'intestazione deve essere denominata e impostata senza alcun valore a livello di passaggio. Le intestazioni devono essere elencate utilizzando la stessa sintassi con cui apparirebbero nel protocollo HTTP, utilizzando facoltativamente alcune funzionalità aggiuntive supportate dall'opzione cURL CURLOPT_HTTPHEADER. Ad esempio: Accept-Charset=utf-8 Accept-Language=en-US Content-Type=application/xml; charset=utf-8 Le macro utente e le macro {HOST.*} sono supportate. |
| Abilitato | Lo scenario è attivo se questa casella è selezionata; in caso contrario, è disabilitato. |
Quando si modifica uno scenario esistente, nel modulo sono disponibili anche due pulsanti aggiuntivi:
![]() |
Crea un altro scenario basato sulle proprietà di quello esistente. |
![]() |
Elimina i dati storici e di trend dello scenario. In questo modo il server eseguirà lo scenario immediatamente dopo l'eliminazione dei dati. |
Se il campo Proxy HTTP viene lasciato vuoto, un altro modo per utilizzare un proxy HTTP consiste nell'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. Ad esempio,
http_proxy=http://proxy_ip:proxy_port.
Per i controlli HTTPS, imposta la variabile d'ambiente HTTPS_PROXY. Ad esempio,
HTTPS_PROXY=http://proxy_ip:proxy_port. Ulteriori dettagli sono disponibili
eseguendo il comando shell: # man curl.
La scheda Passaggi consente di configurare i passaggi dello scenario web. Per aggiungere un passaggio allo scenario web, fai clic su Aggiungi nel blocco Passaggi.

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: se vengono utilizzate macro utente, queste macro rimarranno irrisolte 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 utilizzando caratteri Unicode. Vengono automaticamente convertiti in punycode ASCII durante l'esecuzione del passaggio dello scenario web. Il pulsante Analizza può essere utilizzato per separare i campi di query facoltativi (come ?key=value&limit=10) dall'URL, spostando attributi e valori in Campi di query per la codifica automatica dell'URL.Nell'URL è possibile utilizzare variabili mediante la sintassi {macro}. Le variabili possono essere codificate manualmente nell'URL utilizzando la sintassi {{macro}.urlencode()}. Sono supportate le macro utente e le macro {HOST.*}.Per motivi di sicurezza, non includere nomi utente o password reali negli URL. Utilizzare invece le macro utente per evitare di esporre le credenziali. Limitato a 2048 caratteri. |
| Campi di query | Variabili HTTP GET per l'URL. Specificate come coppie attributo e valore. I valori vengono codificati automaticamente nell'URL. I valori provenienti da variabili dello scenario, macro utente o macro {HOST.*} vengono risolti e quindi codificati automaticamente nell'URL. L'utilizzo della sintassi {{macro}.urlencode()} li codificherà due volte nell'URL.Sono supportate le macro utente e le macro {HOST.*}. |
| Post | Variabili HTTP POST. Nella modalità Dati del modulo, specificate come coppie attributo e valore. I valori vengono codificati automaticamente nell'URL. I valori provenienti da variabili dello scenario, macro utente o macro {HOST.*} vengono risolti e quindi codificati automaticamente nell'URL.Nella modalità Dati grezzi, attributi e valori vengono visualizzati su una singola riga e concatenati con il simbolo &. I valori grezzi possono essere codificati o decodificati manualmente nell'URL utilizzando la sintassi {{macro}.urlencode()} o {{macro}.urldecode()}. Ad esempio: id=2345&userid={user} Se {user} è definita come variabile dello scenario web, verrà sostituita dal relativo valore durante l'esecuzione del passaggio. Se si desidera codificare la variabile nell'URL, sostituire {user} con {{user}.urlencode()}. Sono supportate le macro utente e le macro {HOST.*}. |
| Variabili | Variabili a livello di passaggio che possono essere utilizzate per le funzioni GET e POST. Specificate come coppie attributo e valore. Le variabili a livello di passaggio hanno la precedenza sulle variabili a livello di scenario o sulle variabili del passaggio precedente. Tuttavia, il valore di una variabile a livello di passaggio influisce solo sul passaggio successivo (e non su quello corrente). Hanno il seguente formato: {macro}=value {macro}=regex:<regular expression> Per ulteriori informazioni, vedere la descrizione delle variabili a livello di scenario. Le variabili vengono codificate automaticamente nell'URL quando utilizzate nei campi di query o nei dati del modulo per le variabili POST, ma devono essere codificate manualmente nell'URL quando utilizzate nei dati POST grezzi o direttamente nell'URL. |
| Intestazioni | Intestazioni HTTP personalizzate che verranno inviate durante l'esecuzione di una richiesta. Specificate come coppie attributo e valore. Un'intestazione definita a livello di passaggio verrà utilizzata per quel particolare passaggio. È importante notare che la definizione dell'intestazione a livello di passaggio elimina automaticamente tutte le intestazioni definite in precedenza, ad eccezione di un'intestazione predefinita assegnata selezionando 'User-Agent' dall'elenco a discesa a livello di scenario. Tuttavia, anche l'intestazione predefinita 'User-Agent' può essere sovrascritta specificandola a livello di passaggio. Ad esempio, assegnare un nome a un'intestazione senza impostare alcun valore annullerà l'intestazione predefinita a livello di scenario. Sono supportate le macro utente e le macro {HOST.*}.Questa impostazione definisce l'opzione cURL CURLOPT_HTTPHEADER. |
| Segui reindirizzamenti | Selezionare la casella di controllo per seguire i reindirizzamenti HTTP. Questa impostazione definisce l'opzione cURL CURLOPT_FOLLOWLOCATION. |
| Modalità di recupero | Selezionare la modalità di recupero: Corpo - recupera solo il corpo della risposta HTTP Intestazioni - recupera solo le intestazioni della risposta HTTP Corpo e intestazioni - recupera il corpo e le intestazioni della risposta HTTP |
| Timeout | Zabbix non dedicherà all'elaborazione dell'URL più del tempo impostato (da un secondo 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 dedicherà al passaggio più di 2 x Timeout secondi. Sono supportati i suffissi temporali, ad esempio 30s, 1m, 1h. Sono supportate le macro utente. |
| Stringa richiesta | Pattern di espressione regolare richiesto. Se il contenuto recuperato (HTML) non corrisponde al pattern richiesto, il passaggio avrà esito negativo. Se vuoto, non viene eseguito alcun controllo sulla stringa richiesta. Ad esempio: Homepage of Zabbix Welcome.*admin Nota: in questo campo non è supportato il riferimento alle espressioni regolari create nel frontend di Zabbix. Sono supportate le macro utente e le macro {HOST.*}. |
| Codici di stato richiesti | Elenco dei codici di stato HTTP previsti. Se Zabbix riceve un codice non incluso nell'elenco, il passaggio avrà esito negativo. Se vuoto, non viene eseguito alcun controllo sui codici di stato. Ad esempio: 200,201,210-299 Sono supportate le macro utente. |
Le modifiche ai passaggi dello scenario web verranno salvate solo quando viene salvato l'intero scenario.
Vedere anche un esempio reale di come configurare i passaggi del monitoraggio web.
Configurazione dei tag
La scheda Tag consente di definire i tag a livello di scenario.

L'uso dei tag consente di filtrare gli scenari web e gli item di monitoraggio web.
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 tipo di autenticazione HTTP.

Parametri di autenticazione:
| Parametro | Descrizione |
|---|---|
| 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. Sono supportate le macro utente. |
| Password | Inserire la password dell'utente (fino a 255 caratteri). Questo campo è disponibile se Autenticazione HTTP è impostata su Basic, NTLM, Kerberos o Digest. Sono supportate le macro utente. |
| Verifica peer SSL | Selezionare la casella per verificare il certificato SSL del web server. Il certificato del server viene verificato rispetto ai certificati delle autorità di certificazione (CA) attendibili nella posizione CA a livello di sistema. È possibile sovrascrivere la posizione dei file CA utilizzando il parametro di configurazione del server Zabbix o del proxy SSLCALocation. 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. Imposta l'opzione cURL CURLOPT_SSL_VERIFYHOST. |
| File del 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 della chiave SSL. Se la chiave è crittografata, specificare la password nel campo Password della chiave SSL. La directory contenente questo file è specificata dal parametro di configurazione del server Zabbix o del proxy SSLCertLocation. In questo campo è possibile utilizzare le macro HOST.* e le macro utente.Imposta l'opzione cURL CURLOPT_SSLCERT. |
| File della 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 contenente questo file è specificata dal parametro di configurazione del server Zabbix o del proxy SSLKeyLocation. In questo campo è possibile utilizzare le macro HOST.* e le macro utente.Imposta l'opzione cURL CURLOPT_SSLKEY. |
| Password della chiave SSL | Password del file della chiave privata SSL. In questo campo è possibile utilizzare le macro utente. Imposta l'opzione cURL CURLOPT_KEYPASSWD. |
[1] Zabbix supporta solo i file di certificato e di chiave privata in formato PEM. Se i dati del certificato e della chiave privata si trovano in un file in formato PKCS #12 (solitamente con estensione *.p12 o *.pfx), è possibile generare 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
Il server Zabbix rileva le modifiche ai certificati senza riavviarsi.
Se il certificato client e la chiave privata si trovano in un unico file, specificarlo nel campo "File del certificato SSL" e lasciare vuoto il campo "File della chiave SSL". Il certificato e la chiave devono comunque essere in formato PEM. È facile combinare certificato e chiave:
cat client.crt client.key > client.pem
Visualizzazione
Per visualizzare gli scenari web configurati per un host:
- Vai a Monitoraggio > Host.
- Individua l'host nell'elenco e fai clic sul collegamento ipertestuale Web nell'ultima colonna.
- Fai clic sul nome dello scenario per visualizzare informazioni dettagliate.

Una panoramica degli scenari web può essere visualizzata anche in Dashboard tramite il widget Monitoraggio web.
I risultati recenti dell'esecuzione dello scenario web sono disponibili nella sezione Monitoraggio > Ultimi dati.
Monitoraggio esteso
A volte è necessario registrare il contenuto della pagina HTML ricevuta.
Questo è particolarmente utile se un passaggio dello scenario web fallisce.
Il livello di debug 5 (trace) serve a questo scopo.
Questo livello può essere impostato nei file di configurazione di server e proxy oppure usando un'opzione di runtime control (-R log_level_increase="http poller,N", dove N è il numero del processo).
I seguenti esempi mostrano come avviare il monitoraggio esteso, a condizione che il livello di debug 4 sia già impostato:
# Increase log level of all http pollers:
zabbix_server -R log_level_increase="http poller"
# Increase log level of second http poller:
zabbix_server -R log_level_increase="http poller,2"
Se il monitoraggio web esteso non è richiesto, può essere interrotto usando l'opzione
-R log_level_decrease.

