This is a translation of the original English documentation page. Help us make it better.

9. Monitoraggio Web

Panoramica

Con Zabbix puoi verificare diversi aspetti della disponibilità dei siti web.

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

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

Gli scenari Web sono allegati a host/modelli allo stesso modo degli elementi, trigger, ecc. Ciò significa che è possibile creare scenari web anche a livello di Template e quindi applicato a più host in un'unica mossa.

Le seguenti informazioni vengono raccolte in qualsiasi scenario web:

  • velocità media di download al secondo per tutti i passaggi dell'intero scenario
  • numero del passaggio non riuscito
  • ultimo messaggio di errore

Le seguenti informazioni vengono raccolte in qualsiasi passaggio dello scenario Web:

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

Per maggiori dettagli, vedere monitoraggio web articoli.

I dati raccolti dall'esecuzione di scenari Web vengono conservati nel database. Il 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 login simulato e seguire un percorso di simulato clic del mouse sulla pagina.

Il monitoraggio web Zabbix supporta sia HTTP che HTTPS. Quando si esegue un web scenario, Zabbix seguirà facoltativamente i reindirizzamenti (vedi opzione Segui reindirizza sotto). Il numero massimo di reindirizzamenti è impostato nel codice a 10 (usando l'opzione cURL CURLOPT_MAXREDIRS). Tutti i cookie vengono conservati durante l'esecuzione di un singolo scenario.

Vedi anche problemi noti per il monitoraggio web tramite protocollo HTTPS.

Configurazione di uno scenario web

Per configurare uno scenario web:

  • Vai a: Configurazione → Host (o Modelli)
  • Fare clic su Web nella riga dell'host/modello
  • Fare clic su Crea scenario a destra (o sul nome dello scenario in modificare uno scenario esistente)
  • Immettere i parametri dello scenario nel modulo

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

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

Parametri dello scenario:

Parametro Descrizione
Host Nome dell'host/modello a cui appartiene lo scenario.
Nome Nome scenario univoco.
Intervallo di aggiornamento Quanto spesso verrà eseguito lo scenario.
Suffissi temporali sono supportati, ad es. 30s, 1m, 2h, 1d.
Macro utente sono supportati. Nota che se viene utilizzata una macro utente e il suo valore viene modificato (ad es. 5m → 30s), il controllo successivo verrà eseguito in base al valore precedente (più lontano in futuro con i valori di esempio).
Tentativi Il numero di tentativi per l'esecuzione di passaggi dello scenario Web. In caso di problemi di rete (timeout, mancanza di connettività, ecc.) Zabbix può ripetere l'esecuzione di un passaggio più volte. La cifra impostata influenzerà ugualmente ogni fase 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.
Agente Seleziona un agente client.
Zabbix fingerà di essere il browser selezionato. Ciò è utile quando un sito Web restituisce contenuti diversi per browser diversi.
In questo campo è possibile utilizzare macro utente.
Proxy HTTP Puoi specificare un proxy HTTP da utilizzare, utilizzando il formato [protocol://][nomeutente[:password]@]proxy.example.com[:porta].
Questo imposta il CURLOPT_PROXY opzione cURL.
Il prefisso protocol:// opzionale può essere utilizzato per specificare protocolli proxy alternativi (il protocollo il supporto del prefisso è stato aggiunto in cURL 7.21.7). Senza il protocollo specificato, il proxy verrà trattato come un proxy HTTP.
Per impostazione predefinita, verrà utilizzata la porta 1080.
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'è", non viene eseguito alcun controllo di integrità.
Puoi anche inserire un indirizzo proxy SOCKS. Se specifichi il protocollo sbagliato, la connessione non riuscirà e l'elemento non sarà più supportato.
Nota che con il 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 di post).
Hanno il seguente formato:
{macro1}=valore1
**{macro2}* *=valore2
{macro3}=regex:<espressione regolare>
Ad esempio:
{nomeutente}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex :hostid è ([0-9]+)
Le macro possono quindi essere referenziate nei passaggi come {nome utente}, {password} e {hostid}. Zabbix li sostituirà automaticamente con i valori effettivi. Nota che le variabili con regex: necessitano di un passaggio per ottenere il valore dell'espressione regolare in modo che il valore estratto possa essere applicato solo al passaggio successivo.
Se la parte del valore inizia con regex: allora la parte successiva viene trattata come un'espressione regolare che effettua una ricerca nella pagina Web e, se trovata, memorizza la corrispondenza nella variabile. Per poter estrarre il valore corrispondente, deve essere presente almeno un sottogruppo.
Le macro utente e {HOST.*} macro sono supportate.
Le variabili vengono automaticamente Codificato con URL se utilizzato nei campi di query o nei dati del modulo per le variabili di post, ma deve essere codificato manualmente con l'URL se utilizzato in un post non elaborato o direttamente nell'URL.
Headers 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 a seconda del tipo di agente selezionato da un elenco a discesa a livello di scenario e verranno applicate a tutti i passaggi, a meno che non siano definite in modo personalizzato su un livello di passaggio.
Si noti che la definizione dell'intestazione su un livello di passaggio elimina automaticamente tutte le intestazioni precedentemente definite, ad eccezione di un'intestazione predefinita che viene assegnata selezionando l'"User-Agent" da un menu a discesa elenco 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 attribuiti senza alcun valore a livello di passaggio.
Le intestazioni devono essere elencate utilizzando la stessa sintassi che apparirebbero nel protocollo HTTP, utilizzando facoltativamente alcune funzionalità aggiuntive supportate da CURLOPT_HTTPHEADER opzione cURL.
Ad esempio:
Accetta-Charset=utf-8
Accept-Language=en-US
Tipo di contenuto=applicazione/xml; charset=utf-8
Le macro utente e {HOST.*} macro sono supportate.
Abilitato Lo scenario è attivo se questa casella è selezionata, altrimenti - disabilitato.

Si noti che quando si modifica uno scenario esistente, sono presenti due pulsanti extra disponibile nella forma:

Crea un altro scenario basato sulle proprietà di quello esistente.
Elimina la cronologia e i dati di tendenza per lo scenario. Ciò consentirà al server di eseguire lo scenario immediatamente dopo l'eliminazione dei dati.

Se il campo proxy HTTP viene lasciato vuoto, un altro modo per l'utilizzo di un proxy HTTP consiste nell'impostare le variabili di ambiente relative al proxy.

Per i controlli HTTP: imposta la variabile di ambiente http_proxy per il file Utente del server Zabbix. Per esempio, http_proxy=http://ip_proxy:porta_proxy.

Per i controlli HTTPS: impostare la variabile di ambiente HTTPS_PROXY. Per esempio, HTTPS_PROXY=http://proxy_ip:proxy_port. Maggiori dettagli sono disponibile eseguendo un comando di shell: # man curl.

La scheda Passi consente di configurare i passaggi dello scenario Web. Aggiungere un passaggio di uno scenario web, fare clic su Aggiungi nel blocco Passaggi.

Segreto utente macros non deve essere utilizzati negli URL poiché si risolveranno in "******".

Procedura di configurazione

Parametri del passo:

Parametro Descrizione
Nome Nome univoco del passaggio.
URL URL per connettersi e recuperare i dati. Ad esempio:
https://www.example.com
http://www.example.com/download
I nomi di dominio possono essere specificati in caratteri Unicode. Vengono automaticamente convertiti punycode in ASCII durante l'esecuzione del passaggio dello scenario Web.
Il pulsante Analizza può essere utilizzato per separare i campi di query opzionali (come ?name=Admin&password=mypassword) dall'URL, spostando gli attributi e i valori in Campi di query per la codifica URL automatica.
Le variabili possono essere utilizzate nell'URL, utilizzando la sintassi {macro}. Le variabili possono essere codificate manualmente tramite URL utilizzando una sintassi {{macro}.urlencode()}.
Le macro utente e {HOST.*} macro sono supportate.<br >Limitato a 2048 caratteri.
Campi di query Variabili HTTP GET per l'URL.
Specificati come coppie di attributi e valori.
I valori vengono codificati automaticamente nell'URL. I valori delle variabili di scenario, delle macro utente o delle macro {HOST.*} vengono risolti e quindi codificati nell'URL automaticamente. L'utilizzo di una sintassi {{macro}.urlencode()} raddoppierà la codifica dell'URL.
Sono supportate le macro utente e {HOST.*} macro.
Post Variabili HTTP POST.
In modalità Form data, specificate come coppie di attributi e valori.
I valori vengono codificati automaticamente tramite URL. I valori delle variabili di scenario, delle macro utente o delle macro {HOST.*} vengono risolti e quindi codificati nell'URL automaticamente.
In modalità Dati grezzi, gli attributi/valori vengono visualizzati su una singola riga e concatenati con un * *&** simbolo.
I valori grezzi possono essere codificati/decodificati manualmente utilizzando una sintassi {{macro}.urlencode()} o {{macro}.urldecode()}.
Ad esempio: id= 2345&userid={user}
Se {user} è definito come una variabile dello scenario web, verrà sostituito dal suo valore quando viene eseguito il passaggio. Se desideri codificare in URL la variabile, sostituisci {utente} con {{utente}.urlencode()}.
Macro utente e {HOST.*} macro sono supportati.
Variabili Variabili a livello di passaggio che possono essere utilizzate per le funzioni GET e POST.
Specificate come coppie di attributi e valori.
Le variabili a livello di passaggio sostituiscono 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}=valore
{ macro}=regex:<espressione regolare>
Per ulteriori informazioni, vedere la descrizione della variabile a livello scenario.
Le variabili vengono automaticamente codificate tramite URL quando vengono utilizzate nei campi di query o nei dati del modulo per post variabili, ma devono essere codificate manualmente nell'URL se utilizzate in un post non elaborato o direttamente nell'URL.
Headers Intestazioni HTTP personalizzate che verranno inviate durante l'esecuzione di una richiesta.
Specificate come coppie di attributi e valori.
Per quel particolare passaggio verrà utilizzata un'intestazione definita a livello di passaggio.
** Va notato che la definizione dell'intestazione a livello di passaggio elimina automaticamente tutte le intestazioni precedentemente definite, ad eccezione di un'intestazione predefinita che viene assegnata selezionando lo '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.
Ad esempio, l'assegnazione del nome a un'intestazione, ma senza l'impostazione di alcun valore, annullerà l'impostazione dell'intestazione predefinita a livello di scenario .
Le macro utente e le macro {HOST.*} sono supportate.
Questo imposta l'opzione cURL CURLOPT_HTTPHEADER.
La specificazione di intestazioni personalizzate è supportata a partire da Zabbix 2.4.
Segui reindirizzamenti Segna la casella di controllo per seguire i reindirizzamenti HTTP.
Questo imposta l'opzione cURL CURLOPT_FOLLOWLOCATION.
Modalità di recupero Seleziona la modalità di recupero:
Body - recupera solo il corpo dalla risposta HTTP
Headers - recupera solo le intestazioni dalla risposta HTTP
Body e headers - recupera il corpo e le intestazioni dalla risposta HTTP
Timeout Zabbix non impiegherà più del tempo impostato per l'elaborazione dell'URL (da un secondo a un massimo di 1 ora). In realtà questo parametro definisce il tempo massimo per effettuare la connessione all'URL e il tempo massimo per eseguire una richiesta HTTP. Pertanto, Zabbix non trascorrerà più di 2 x Timeout secondi sul passaggio.
Suffissi temporali sono supportati, ad es. 30s, 1m, 1h. Macro utente sono supportati.
Stringa richiesta Modello di espressione regolare richiesto.
A meno che il contenuto recuperato (HTML) non corrisponda al modello richiesto, il passaggio avrà esito negativo. Se vuoto, non viene eseguito alcun controllo sulla stringa richiesta.
Ad esempio:
Homepage di Zabbix
Benvenuto.*admin
Nota: Riferimento a espressioni regolari create in Zabbix frontend non è supportato in questo campo.
Le macro utente e {HOST.*} macro sono supportate.
Codici di stato obbligatori Elenco dei codici di stato HTTP previsti. Se Zabbix ottiene un codice che non è nell'elenco, il passaggio avrà esito negativo.
Se è vuoto, non viene eseguito alcun controllo sui codici di stato.
Ad esempio: 200,201,210-299
Le macro utente sono supportate.

Eventuali modifiche ai passaggi dello scenario Web verranno salvate solo quando l'intero scenario viene salvato.

Vedi anche un esempio di vita reale di come è possibile configurare le fasi di monitoraggio web.

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 tipo di autenticazione HTTP.

Parametri di autenticazione:

Parametro Descrizione
Autenticazione Opzioni di autenticazione.
Nessuna: nessuna autenticazione utilizzata.
Base: viene utilizzata l'autenticazione di base.
NTLM - NTLM (LAN Windows NT Manager) viene utilizzata l'autenticazione.
Kerberos - Viene utilizzata l'autenticazione Kerberos. Vedi anche: Configurazione di Kerberos con Zabbix.
Digest - Viene utilizzata l'autenticazione digest.
Selezionando un metodo di autenticazione verranno forniti due campi aggiuntivi per l'immissione di un utente nome e password.
Le macro utente possono essere utilizzate nei campi utente e password.
SSL verifica peer Selezionare la casella di controllo per verificare il certificato SSL del server Web.
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 server Zabbix o il parametro di configurazione proxy SSLCALocation.
Questo imposta il CURLOPT_SSL_VERIFYPEER opzione cURL.
Host di verifica SSL Selezionare la casella di controllo per verificare che il campo Common Name o il campo Subject Alternate Name del certificato del server Web corrispondano.
Questo imposta il CURLOPT_SSL_VERIFYHOST opzione cURL.
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 chiave SSL. Se la chiave è crittografata, specificare la password nel campo Password chiave SSL. La directory contenente questo file è specificata dal server Zabbix o dal parametro di configurazione proxy SSLCertLocation.
In questo campo è possibile utilizzare le macro HOST.* e le macro utente.
Questo 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 server Zabbix o dal parametro di configurazione proxy SSLKeyLocation.
In questo campo è possibile utilizzare le macro HOST.* e le macro utente.
Questo imposta l'opzione cURL CURLOPT_SSLKEY.
Password chiave SSL Password file chiave privata SSL.
In questo campo è possibile utilizzare macro utente.
Questo imposta il CURLOPT_KEYPASSWD opzione cURL.

::: nota importante [1] Zabbix supporta certificato e chiave privata solo file in formato PEM. Nel caso tu abbia il tuo certificato e privato dati chiave nel file in formato PKCS #12 (solitamente con estensione *.p12 o *.pfx) è possibile generare il file PEM da esso utilizzando quanto segue 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 raccoglie le modifiche ai certificati senza a ricomincia.

Se hai il certificato client e la chiave privata in un unico file basta specificarlo in un campo "file certificato SSL" e lasciare "SSL file chiave" campo vuoto. Il certificato e la chiave devono essere ancora in PEM formato. Combinare certificato e chiave è facile:

cat client.crt client.key > client.pem

Visualizzazione

Per visualizzare gli scenari Web configurati per un host, vai su Monitoraggio → Host, individuare l'host nell'elenco e fare clic sul collegamento ipertestuale Web nell'ultimo colonna. Fare clic sul nome dello scenario per ottenere informazioni dettagliate.

Una panoramica degli scenari web può essere visualizzata anche in Monitoraggio → Dashboard tramite un widget di monitoraggio Web.

I risultati recenti dell'esecuzione dello scenario web sono disponibili in Sezione Monitoraggio → Ultimi dati.

Monitoraggio esteso

A volte è necessario registrare il contenuto della pagina HTML ricevuto. Questo è particolarmente utile se alcuni passaggi dello scenario Web non riescono. Livello di debug 5 (traccia) serve a tale scopo. Questo livello può essere impostato server e proxy file di configurazione o utilizzando un'opzione di controllo del runtime (-R log_level_increase="http poller,N", dove N è il numero di processo). Gli esempi seguenti dimostrano come il monitoraggio esteso può essere avviato a condizione che il livello di debug 4 sia già impostare:

Aumenta il livello di registro di tutti i poller http:
       shell> zabbix_server -R log_level_increase="http poller"
       
       Aumenta il livello di registro del secondo poller http:
       shell> zabbix_server -R log_level_increase="http poller,2"

Se non è richiesto un monitoraggio web esteso, è possibile interromperlo utilizzando il Opzione -R log_level_decrease.