[comment]: # ({734ebac5-734ebac5})
# 9 Monitoraggio web

[comment]: # ({/734ebac5-734ebac5})

[comment]: # ({7966aaaa-f37bc18c})
#### Panoramica

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

::: noteimportant
Per eseguire il monitoraggio web, il server Zabbix deve essere
inizialmente [configurato](/manual/installation/install#from-the-sources)
con il supporto cURL (libcurl).
:::

Per attivare il monitoraggio web è necessario definire 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 essere creati anche 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 di uno scenario web:

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

Per ulteriori dettagli, vedere gli [item di monitoraggio web](/manual/web_monitoring/items).

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 sia HTTPS. Durante l'esecuzione di uno scenario web, Zabbix può facoltativamente seguire i reindirizzamenti (vedere l'opzione *Follow redirects* più avanti). Il numero massimo di reindirizzamenti è impostato in modo fisso a 10 (usando l'opzione cURL
[CURLOPT\_MAXREDIRS](http://curl.haxx.se/libcurl/c/CURLOPT_MAXREDIRS.html)).
Tutti i cookie vengono mantenuti durante l'esecuzione di un singolo scenario.

[comment]: # ({/7966aaaa-f37bc18c})

[comment]: # ({1166cfed-f007debe})
#### Configurazione di uno scenario web

Per configurare uno scenario web:

-   Vai a: *Data collection → Hosts* (o *Templates*)
-   Fai clic su *Web* nella riga dell'host/template
-   Fai clic su *Create web scenario* 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.

![](../../assets/en/manual/config/scenario.png)

Tutti i campi obbligatori sono contrassegnati da un asterisco rosso.

Parametri dello scenario:

|Parameter|Description|
|--|--------|
|*Name*|Nome univoco dello scenario.<br>Sono supportate le [macro utente](/manual/config/macros/user_macros). *Nota* che, se vengono usate macro utente, queste macro resteranno non risolte nei nomi degli [item di web monitoring](/manual/web_monitoring/items).|
|*Update interval*|Con quale frequenza verrà eseguito lo scenario.<br>Sono supportati i [suffissi temporali](/manual/appendix/suffixes), ad esempio 30s, 1m, 2h, 1d.<br>Sono supportate le [macro utente](/manual/config/macros/user_macros). *Nota* che, se viene usata 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 tempo con i valori dell'esempio). <br> I nuovi scenari web verranno controllati entro 60 secondi dalla loro creazione.|
|*Attempts*|Numero di tentativi per l'esecuzione dei passi dello scenario web. In caso di problemi di rete (timeout, assenza di connettività, ecc.), Zabbix può ripetere l'esecuzione di un passo più volte. Il valore impostato influirà in modo uguale su ogni passo dello scenario. È possibile specificare fino a 10 tentativi; il valore predefinito è 1.<br>*Nota*: Zabbix non ripeterà un passo a causa di un codice di risposta errato o della mancata corrispondenza di una stringa richiesta.|
|*Agent*|Seleziona un client agent.<br>Zabbix si comporterà come il browser selezionato. Questo è utile quando un sito web restituisce contenuti diversi per browser diversi.<br>In questo campo è possibile usare macro utente.|
|*HTTP proxy*|È possibile specificare un proxy HTTP da usare, nel formato `[protocol://][username[:password]@]proxy.example.com[:port]`.<br>Questo imposta l'opzione cURL [CURLOPT\_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html).<br>Il prefisso facoltativo `protocol://` può essere usato per specificare protocolli proxy alternativi (il supporto del prefisso del protocollo è stato aggiunto in cURL 7.21.7). Se non viene specificato alcun protocollo, il proxy verrà trattato come un proxy HTTP.<br>Per impostazione predefinita, verrà usata la porta 1080.<br>Se specificato, il proxy sovrascriverà le variabili di ambiente relative al proxy, come http\_proxy, HTTPS\_PROXY. Se non specificato, il proxy non sovrascriverà le variabili di ambiente relative al proxy. Il valore inserito viene passato "così com'è", senza alcun controllo di validità.<br>È anche possibile inserire un indirizzo proxy SOCKS. Se si specifica il protocollo errato, la connessione fallirà e l'item diventerà non supportato.<br>*Nota* che con il proxy HTTP è supportata solo l'autenticazione semplice.<br>In questo campo è possibile usare macro utente.|
|*Variables*|Variabili che possono essere usate nei passi dello scenario (URL, variabili post).<br>Hanno il seguente formato:<br>**{macro1}**=value1<br>**{macro2}**=value2<br>**{macro3}**=regex:<regular expression><br>**{macro4}**=jsonpath:<jsonpath><br>**{macro5}**=xmlxpath:<xmlxpath><br>**{macro6}**={{macro}.function()} (vedi [funzioni macro](/manual/config/macros/macro_functions)).<br>*Nota* che l'uso di JSONPath, XML XPath e delle funzioni macro nelle variabili è supportato da Zabbix 7.0.4.<br>Ad esempio:<br>{username}=Alexei<br>{password}=kj3h5kJ34bd<br>{hostid}=regex:hostid is (\[0-9\]+)<br>{url}=jsonpath:$.host_url<br>{status}=xmlxpath://host/response/status<br>{newvar}={{myvar}.btoa()}<br>Le macro possono quindi essere richiamate nei passi come {username}, {password}, {hostid}, ecc. Zabbix le sostituirà automaticamente con i valori effettivi. Nota che le variabili con `regex:` richiedono un passo per ottenere il valore dell'espressione regolare, quindi il valore estratto può essere applicato solo al passo successivo.<br>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, in modo che il valore corrispondente possa essere estratto.<br>Sono supportate le macro utente e le [macro](/manual/appendix/macros/supported_by_location) {HOST.\*}.<br>Le variabili vengono codificate automaticamente in URL quando sono usate nei campi di query o nei dati dei moduli per le variabili post, ma devono essere codificate manualmente quando sono usate nel post raw o direttamente nell'URL.|
|*Headers*|Gli header HTTP vengono usati durante l'esecuzione di una richiesta. È possibile usare header predefiniti e personalizzati.<br>Gli header verranno assegnati usando le impostazioni predefinite in base al tipo di Agent selezionato da un elenco a discesa a livello di scenario e verranno applicati a tutti i passi, a meno che non siano definiti come personalizzati a livello di passo.<br>**Si noti che la definizione dell'header a livello di passo scarta automaticamente tutti gli header definiti in precedenza, tranne un header predefinito assegnato selezionando 'User-Agent' da un elenco a discesa a livello di scenario.**<br>Tuttavia, anche l'header predefinito 'User-Agent' può essere sovrascritto specificandolo a livello di passo.<br>Per rimuovere l'header a livello di scenario, l'header deve essere nominato e attribuito senza valore a livello di passo.<br>Gli header devono essere elencati usando la stessa sintassi con cui apparirebbero nel protocollo HTTP, eventualmente utilizzando alcune funzionalità aggiuntive supportate dall'opzione cURL [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html).<br>Ad esempio:<br>Accept-Charset=utf-8<br>Accept-Language=en-US<br>Content-Type=application/xml; charset=utf-8<br>Sono supportate le macro utente e le [macro](/manual/appendix/macros/supported_by_location) {HOST.\*}.|
|*Enabled*|Lo scenario è attivo se questa casella è selezionata, altrimenti è disabilitato.|

Nota che, quando si modifica uno scenario esistente, nel modulo sono
disponibili due pulsanti aggiuntivi:

|   |   |
|--|--------|
|![](../../assets/en/manual/web_monitoring/buttons_clone.png)|Crea un altro scenario basato sulle proprietà di quello esistente.|
|![](../../assets/en/manual/web_monitoring/buttons_clear.png)|Elimina i dati storici e di trend dello scenario. Questo farà sì che il server esegua lo scenario immediatamente dopo l'eliminazione dei dati.|

::: notetip
Se il campo *HTTP proxy* viene lasciato vuoto, un altro modo per
usare un proxy HTTP è impostare le variabili di ambiente relative al proxy.

Per i controlli HTTP - imposta la variabile di 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 di ambiente **HTTPS\_PROXY**. Ad
esempio, `HTTPS_PROXY=http://proxy_ip:proxy_port`. Ulteriori dettagli sono
disponibili eseguendo il comando shell: *\# man curl*.
:::

La scheda **Steps** consente di configurare i passi dello scenario web. Per aggiungere
un passo dello scenario web, fai clic su *Add* nel blocco *Steps*.

![](../../assets/en/manual/config/scenario_b.png){width="600"}

::: noteclassic
Le [macro utente](/manual/config/macros/user_macros#configuration) segrete non devono essere
usate negli URL, poiché verranno risolte in "\*\*\*\*\*\*".
:::

[comment]: # ({/1166cfed-f007debe})

[comment]: # ({c406e61a-74c8baab})
#### Configurazione dei passaggi

![](../../assets/en/manual/config/scenario_step.png){width="600"}

Parametri del passaggio:

|Parametro|Descrizione|
|--|--------|
|*Nome*|Nome univoco del passaggio.<br>Le [macro utente](/manual/config/macros/user_macros) sono supportate. *Nota* che, se vengono utilizzate macro utente, queste macro rimarranno non risolte nei nomi degli [item di monitoraggio web](/manual/web_monitoring/items).|
|*URL*|URL a cui connettersi e da cui recuperare i dati. Ad esempio:<br>https://www.example.com<br>http://www.example.com/download<br>I nomi di dominio possono essere specificati con caratteri Unicode. Vengono convertiti automaticamente in punycode ASCII durante l'esecuzione del passaggio dello scenario web.<br>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 *Query fields* per la codifica URL automatica.<br>Le variabili possono essere utilizzate nell'URL usando la sintassi {macro}. Le variabili possono essere codificate URL manualmente usando la sintassi {{macro}.urlencode()}.<br>Le macro utente e le [macro](/manual/appendix/macros/supported_by_location) {HOST.\*} sono supportate.<br>Limitato a 2048 caratteri.|
|*Query fields*|Variabili HTTP GET per l'URL.<br>Specificate come coppie attributo-valore.<br>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.<br>Le macro utente e le [macro](/manual/appendix/macros/supported_by_location) {HOST.\*} sono supportate.|
|*Post*|Variabili HTTP POST.<br>In modalità **Form data**, specificate come coppie attributo-valore.<br>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.<br>In modalità **Raw data**, attributi/valori vengono visualizzati su una singola riga e concatenati con il simbolo **&**.<br>I valori grezzi possono essere codificati/decodificati URL manualmente usando la sintassi {{macro}.urlencode()} o {{macro}.urldecode()}.<br>Ad esempio: id=2345&userid={user}<br>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()}.<br>Le macro utente e le [macro](/manual/appendix/macros/supported_by_location) {HOST.\*} sono supportate.|
|*Variables*|Variabili a livello di passaggio che possono essere utilizzate per le funzioni GET e POST.<br>Specificate come coppie attributo-valore.<br>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).<br>Hanno il seguente formato:<br>**{macro}**=value<br>**{macro}**=regex:<regular expression><br>Per ulteriori informazioni, vedere la descrizione delle variabili a livello di [scenario](web_monitoring#configuring-a-web-scenario).<br>Le variabili vengono codificate URL automaticamente quando utilizzate nei campi di 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.|
|*Headers*|Intestazioni HTTP personalizzate che verranno inviate durante l'esecuzione di una richiesta.<br>Specificate come coppie attributo-valore.<br>Un'intestazione definita a livello di passaggio verrà utilizzata per quel particolare passaggio.<br>**Si noti che la definizione dell'intestazione a livello di passaggio scarta automaticamente tutte le intestazioni definite in precedenza, ad eccezione di un'intestazione predefinita assegnata selezionando 'User-Agent' da un elenco a discesa a livello di scenario.**<br>Tuttavia, anche l'intestazione predefinita 'User-Agent' può essere sovrascritta specificandola a livello di passaggio.<br>Ad esempio, assegnando il nome a un'intestazione ma senza impostare alcun valore, l'intestazione predefinita a livello di scenario verrà annullata.<br>Le macro utente e le macro {HOST.\*} sono supportate.<br>Questo imposta l'opzione cURL [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html).|
|*Follow redirects*|Selezionare la casella di controllo per seguire i reindirizzamenti HTTP.<br>Questo imposta l'opzione cURL [CURLOPT\_FOLLOWLOCATION](http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html).|
|*Retrieve mode*|Selezionare la modalità di recupero:<br>**Body** - recupera solo il corpo dalla risposta HTTP<br>**Headers** - recupera solo le intestazioni dalla risposta HTTP<br>**Body and headers** - recupera il corpo e le intestazioni 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.<br>I [suffissi temporali](/manual/appendix/suffixes) sono supportati, ad esempio 30s, 1m, 1h. Le [macro utente](/manual/config/macros/user_macros) sono supportate.|
|*Required string*|Pattern di espressione regolare richiesto.<br>A meno che il contenuto recuperato (HTML) non corrisponda al pattern richiesto, il passaggio non riuscirà. Se vuoto, non viene eseguito alcun controllo sulla stringa richiesta.<br>Ad esempio:<br>Homepage of Zabbix<br>Welcome.\*admin<br>*Nota*: il riferimento alle [espressioni regolari](regular_expressions) create nel frontend di Zabbix non è supportato in questo campo.<br>Le macro utente e le [macro](/manual/appendix/macros/supported_by_location) {HOST.\*} sono supportate.|
|*Required status codes*|Elenco dei codici di stato HTTP previsti. Se Zabbix riceve un codice non presente nell'elenco, il passaggio non riuscirà.<br>Se vuoto, non viene eseguito alcun controllo sui codici di stato.<br>Ad esempio: 200,201,210-299<br>Le macro utente sono supportate.|

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

Vedere anche un [esempio reale](/manual/web_monitoring/example) di come
i passaggi del monitoraggio web possono essere configurati.

[comment]: # ({/c406e61a-74c8baab})

[comment]: # ({6f40ea68-6f40ea68})
#### Configurazione dei tag

La scheda **Tag** consente di definire il livello di scenario
[tag](/manual/config/tagging).

![](../../assets/en/manual/config/scenario_c.png)

Il tagging permette di filtrare gli scenari web e il monitoraggio web
[items](/manual/web_monitoring/items).

[comment]: # ({/6f40ea68-6f40ea68})

[comment]: # ({b880b77b-4cce2d90})
#### 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.

![](../../assets/en/manual/config/scenario_d.png)

Parametri di autenticazione:

|Parametro|Descrizione|
|--|--------|
|*Autenticazione HTTP*|Selezionare l'opzione di autenticazione:<br>**Nessuna** - nessuna autenticazione utilizzata;<br>**Basic** - viene utilizzata l'autenticazione Basic;<br>**NTLM** - viene utilizzata l'autenticazione NTLM ([Windows NT LAN Manager](http://en.wikipedia.org/wiki/NTLM));<br>**Kerberos** - viene utilizzata l'autenticazione Kerberos (vedere anche: [Configurazione di Kerberos con Zabbix](/manual/appendix/items/kerberos));<br>**Digest** - viene utilizzata l'autenticazione Digest.|
|*User*|Immettere il nome utente (fino a 255 caratteri).<br>Questo campo è disponibile se *Autenticazione HTTP* è impostata su Basic, NTLM, Kerberos o Digest. Sono supportate le macro utente. |
|*Password*|Immettere la password dell'utente (fino a 255 caratteri).<br>Questo campo è disponibile se *Autenticazione HTTP* è impostata su Basic, NTLM, Kerberos o Digest. Sono supportate le macro utente. |
|*SSL verify peer*|Selezionare la casella di controllo per verificare il certificato SSL del web server.<br>Il certificato del server verrà recuperato automaticamente dalla posizione globale dell'autorità di certificazione (CA) del sistema. È possibile sovrascrivere la posizione dei file CA usando il parametro di configurazione di Zabbix server o proxy [SSLCALocation](/manual/appendix/config/zabbix_server#sslcalocation).<br>Questo imposta l'opzione cURL [CURLOPT\_SSL\_VERIFYPEER](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html).|
|*SSL verify host*|Selezionare la casella di controllo per verificare che il campo *Common Name* o il campo *Subject Alternate Name* del certificato del web server corrisponda.<br>Questo imposta l'opzione cURL [CURLOPT\_SSL\_VERIFYHOST](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html).|
|*SSL certificate file*|Nome del file del certificato SSL utilizzato per l'autenticazione del client. Il file del certificato deve essere in formato PEM^1^. Se il file del certificato contiene anche la chiave privata, lasciare vuoto il campo *SSL key file*. Se la chiave è crittografata, specificare la password nel campo *SSL key password*. La directory contenente questo file è specificata dal parametro di configurazione di Zabbix server o proxy [SSLCertLocation](/manual/appendix/config/zabbix_server).<br>In questo campo è possibile usare macro `HOST.*` e macro utente.<br>Questo imposta l'opzione cURL [CURLOPT\_SSLCERT](http://curl.haxx.se/libcurl/c/CURLOPT_SSLCERT.html).|
|*SSL key file*|Nome del file della chiave privata SSL utilizzato per l'autenticazione del client. Il file della chiave privata deve essere in formato PEM^1^. La directory contenente questo file è specificata dal parametro di configurazione di Zabbix server o proxy [SSLKeyLocation](/manual/appendix/config/zabbix_server).<br>In questo campo è possibile usare macro `HOST.*` e macro utente.<br>Questo imposta l'opzione cURL [CURLOPT\_SSLKEY](http://curl.haxx.se/libcurl/c/CURLOPT_SSLKEY.html).|
|*SSL key password*|Password del file della chiave privata SSL.<br>In questo campo è possibile usare macro utente.<br>Questo imposta l'opzione cURL [CURLOPT\_KEYPASSWD](http://curl.haxx.se/libcurl/c/CURLOPT_KEYPASSWD.html).|

::: noteimportant
 \[1\] Zabbix supporta solo file di certificato e chiave privata in formato PEM. Nel caso in cui i dati del certificato e della chiave privata siano in un file in formato PKCS \#12 (di solito con estensione \*.p12 o \*.pfx), è possibile generare il file PEM usando 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


:::

::: noteclassic
 Zabbix server rileva le modifiche nei certificati senza richiedere un riavvio. 
:::

::: noteclassic
 Se il certificato client e la chiave privata si trovano in un unico file, specificarlo nel campo "SSL certificate file" e lasciare vuoto il campo "SSL key file". Il certificato e la chiave devono comunque essere in formato PEM. Unire certificato e chiave è semplice:

    cat client.crt client.key > client.pem


:::

[comment]: # ({/b880b77b-4cce2d90})

[comment]: # ({f2d5e43e-ae869848})
#### Visualizzazione

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

![](../../assets/en/manual/web_monitoring/scenario_details2.png){width="600"}

Una panoramica degli scenari web può essere visualizzata anche in *Dashboards* tramite il widget di monitoraggio web.

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

[comment]: # ({/f2d5e43e-ae869848})

[comment]: # ({1520b096-42ab5787})
#### 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](/manual/appendix/config/zabbix_server#debuglevel) e [proxy](/manual/appendix/config/zabbix_proxy#debuglevel) oppure usando un'opzione di [runtime control](/manual/concepts/server#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:

    # 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`.

[comment]: # ({/1520b096-42ab5787})
