[comment]: # aside:9

[comment]: # ({b9451140-6b0e1e45})
# Monitorare siti web con item del browser

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

[comment]: # ({6f758e8b-8046ed31})
#### Introduzione

Questa pagina illustra i passaggi necessari per avviare il monitoraggio di base dei siti web con gli item del browser.

[comment]: # ({/6f758e8b-8046ed31})

[comment]: # ({204c7929-1c8f337f})
**A chi è destinata questa guida**

Questa guida è pensata per i nuovi utenti di Zabbix e contiene il set minimo di passaggi necessari per abilitare il monitoraggio di base dei siti web con gli item del browser.
Se stai cercando opzioni di personalizzazione avanzate o hai bisogno di una configurazione più complessa, consulta la pagina [Browser items](/manual/config/items/itemtypes/browser) o la sezione [Configuration](/manual/config) del manuale di Zabbix.

[comment]: # ({/204c7929-1c8f337f})

[comment]: # ({7879a4ee-746e75a8})
**Prerequisiti**

Prima di procedere con questa guida, è necessario [scaricare e installare](https://www.zabbix.com/download) Zabbix server e Zabbix frontend seguendo le istruzioni per il proprio sistema operativo.

A seconda del proprio ambiente, alcuni passaggi di questa guida potrebbero differire leggermente.
Questa guida si basa su un ambiente che esegue Ubuntu.

[comment]: # ({/7879a4ee-746e75a8})

[comment]: # ({3498dadf-9003b4f8})
#### Configurare WebDriver

Gli item browser richiedono un framework di automazione (Selenium Server oppure un semplice WebDriver, ad esempio ChromeDriver) come endpoint di test web che controlla e interagisce con un browser, eseguendo comandi di test come fare clic sui pulsanti o inserire testo.
Come esempio, questa guida utilizzerà Selenium Server con Chrome in un container Docker.

Si presume che Docker sia già configurato. Questa guida non copre la configurazione di Docker.
Per le istruzioni di installazione, vedere [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/).

1\. Avviare Selenium Server con Chrome in un container Docker con le seguenti opzioni:

-   **docker run --name browser** - esegue un nuovo container Docker denominato "browser";
-   **-p 4444:4444** - mappa la porta 4444 sulla macchina host alla porta 4444 nel container (questa è la porta usata da Selenium Server per accettare i comandi);
-   **-p 7900:7900** - mappa la porta 7900 sulla macchina host alla porta 7900 nel container (questa è la porta usata dal server Virtual Network Computing (VNC), consentendo di visualizzare l'interfaccia grafica del browser da remoto; richiede un client VNC);
-   **--shm-size="2g"** - assegna 2 GB di memoria condivisa al container (questo è importante per il corretto funzionamento di Chrome, che può richiedere una quantità significativa di memoria condivisa per evitare arresti anomali);
-   **-d** - esegue il container in modalità detached, cioè in background;
-   **selenium/standalone-chrome:latest** - specifica l'immagine Docker da usare; in questo caso, l'ultima versione di [Selenium Server con Chrome](https://hub.docker.com/r/selenium/standalone-chrome).

```bash
docker run --name browser \
-p 4444:4444 \
-p 7900:7900 \
--shm-size="2g" \
-d selenium/standalone-chrome:latest
```

2\. Verificare che il container Docker `browser` sia in esecuzione e accessibile.

-   Recuperare l'indirizzo IP del container (in questo esempio, 192.0.2.1):

```bash
ip addr

# 1: lo: <LOOPBACK,UP,LOWER_UP>
#    ...
# 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...
#    inet 192.0.2.1/16 brd 192.0.255.255 scope global docker0
#    ...
```

-   Testare la connessione al container con [Ncat](https://nmap.org/ncat/):

```bash
nc -zv 192.0.2.1 4444

# Connection to 192.0.2.1 4444 port [tcp/*] succeeded!
```

-   Recuperare il contenuto della pagina web da Selenium Server con [curl](https://curl.se/):

```bash
curl -L 192.0.2.1:4444

# <!DOCTYPE html>
# <html lang="en">
# 
# <head>
#   <meta charset="utf-8"/>
#   <link href="favicon.svg" rel="icon" type="image/svg">
#   <meta content="width=device-width, initial-scale=1" name="viewport"/>
#   <link href="logo192.png" rel="apple-touch-icon"/>
#   <link href="manifest.json" rel="manifest"/>
#   <title>Selenium Grid</title>
# </head>
# 
# <body>
# ...
```

::: noteclassic
Per la risoluzione dei problemi, fare riferimento alla [documentazione di Docker](https://docs.docker.com/engine/).
:::

[comment]: # ({/3498dadf-9003b4f8})

[comment]: # ({538d8706-3e81f645})
#### Configurare Zabbix server

Gli item browser vengono eseguiti ed elaborati dai processi Zabbix *browser poller* che devono essere abilitati regolando il parametro di configurazione del server [StartBrowserPollers](/manual/appendix/config/zabbix_server#startbrowserpollers).
Inoltre, il parametro [WebDriverURL](/manual/appendix/config/zabbix_server#webdriverurl) deve specificare l'endpoint di web testing configurato in precedenza.

Per impostazione predefinita, il parametro StartBrowserPollers è impostato su 1, quindi è necessario specificare solo l'endpoint di web testing.

1\. Aprire il file di configurazione di Zabbix server.

```bash
vi /etc/zabbix/zabbix_server.conf
```

2\. Individuare e impostare il parametro [WebDriverURL](/manual/appendix/config/zabbix_server#webdriverurl) nel file di configurazione di Zabbix server:

```ini
### Option: WebDriverURL
#	WebDriver interface HTTP[S] URL. For example http://localhost:4444 used with Selenium WebDriver standalone server.
#
# Mandatory: no
# Default:
# WebDriverURL=

WebDriverURL=192.0.2.1:4444
```

3\. Riavviare Zabbix server.

```bash
systemctl restart zabbix-server
```

[comment]: # ({/538d8706-3e81f645})

[comment]: # ({a0f152f6-48af2e5f})
#### Configurare il frontend di Zabbix

1\. Accedi al frontend di Zabbix.

2\. [Crea un host](/manual/config/hosts/host) nell'interfaccia web di Zabbix:

- Nel campo *Host name*, inserisci un nome host (ad esempio, "git.zabbix.com").
- Nel campo *Templates*, digita o seleziona il template "Website by Browser". Per ulteriori informazioni su questo template, consulta [Website by Browser](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/website_browser?at=refs%2Fheads%2Frelease%2F7.0).
- Nel campo *Host groups*, digita o seleziona un gruppo host (ad esempio, un nuovo gruppo host "Websites").

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

- Nella scheda *Macros*, passa a *Inherited and host macros*, cerca le seguenti macro e fai clic su *Change* accanto al valore della macro per aggiornarlo:
    - {$WEBSITE.DOMAIN} - Nome di dominio (ad esempio, git.zabbix.com/projects/ZBX/repos/zabbix/browse)
    - {$WEBSITE.GET.DATA.INTERVAL} - Intervallo di aggiornamento dei dati dell'item (ad esempio, 15m)

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

3\. Fai clic sul pulsante *Add* per creare l'host. Questo host rappresenterà il sito web che desideri monitorare.

[comment]: # ({/a0f152f6-48af2e5f})

[comment]: # ({b5c590c2-f8dfb64b})
#### Visualizzare le metriche raccolte

Congratulazioni! A questo punto, Zabbix sta già monitorando il sito web che hai specificato.

Per visualizzare le metriche raccolte, vai alla sezione di menu [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) e fai clic su *Dashboards* accanto all'host.

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

Questa azione ti porterà alla dashboard dell'host (configurata a livello di template) con le metriche più importanti raccolte dal sito web.

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

[comment]: # ({/b5c590c2-f8dfb64b})

[comment]: # ({eca01285-e3d26cda})
#### Configurare gli avvisi di problema

Zabbix può notificarti un problema nella tua infrastruttura usando vari metodi.
Questa guida fornisce i passaggi di configurazione di base per inviare avvisi via email.

1\. Vai a [*Impostazioni utente → Profilo*](/manual/web_interface/user_profile), passa alla scheda *Media* e [aggiungi il tuo indirizzo email](/manual/quickstart/basic_config/login#adding-user).

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

2\. Segui la guida per [Ricevere una notifica di problema](/manual/quickstart/basic_config/notification).

La prossima volta che Zabbix rileverà un problema, dovresti ricevere un avviso via email.

[comment]: # ({/eca01285-e3d26cda})

[comment]: # ({06163b26-77577f84})
#### Test della configurazione

Per testare la configurazione, possiamo simulare un problema reale aggiornando la configurazione dell'host nel frontend di Zabbix.

1\. Apri la configurazione dell'host del tuo sito web in Zabbix.

2\. Passa alla scheda *Macros* e seleziona *Inherited and host macros*.

3\. Fai clic su *Change* accanto, ad esempio, al valore della macro {$WEBSITE.DOMAIN} [configurato in precedenza](#configure-zabbix-frontend) e imposta un nome di dominio errato (ad esempio, /git.zabbix.com/projects/ZBX/repos/zabbix/browse).

4\. Fai clic su *Update* per aggiornare la configurazione dell'host.

5\. Dopo qualche istante, Zabbix rileverà il problema "Failed to get JSON of the requested website", perché non sarà in grado di connettersi al sito web specificato.
Il problema apparirà in [*Monitoring → Problems*](/manual/web_interface/frontend_sections/monitoring/problems).

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

Se gli alert sono [configurati](#set-up-problem-alerts), riceverai anche la notifica del problema.

6\. Riporta il valore della macro al valore precedente per risolvere il problema e continuare a monitorare il sito web.

[comment]: # ({/06163b26-77577f84})

[comment]: # ({13c610d2-cfdcb2f0})
#### Vedi anche

- [Creazione di un item](/manual/config/items/item) - come iniziare a monitorare metriche aggiuntive.
- [Escalation dei problemi](/manual/config/notifications/action/escalations) - come creare scenari di avviso multi-step
  (ad esempio, inviare prima un messaggio all'amministratore di sistema, poi, se un problema non viene risolto entro 45 minuti, inviare un messaggio al responsabile del data center).
- [Item del browser](/manual/config/items/itemtypes/browser) - come configurare gli item del browser.
- template [Website by Browser](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/website_browser?at=refs%2Fheads%2Frelease%2F7.0) - informazioni aggiuntive sul template *Website by Browser*.

[comment]: # ({/13c610d2-cfdcb2f0})
