[comment]: # aside:5

[comment]: # ({13a65fe6-b4128477})
# Monitorare MySQL con Zabbix agent 2

[comment]: # ({/13a65fe6-b4128477})

[comment]: # ({ad3dab41-2185307b})
#### Introduzione

Questa pagina illustra i passaggi necessari per avviare il monitoraggio di base di un server MySQL.

Per monitorare un server MySQL, esistono diversi approcci: Zabbix agent, Zabbix agent 2 oppure lo standard Open Database Connectivity (ODBC).
L'attenzione principale di questa guida è rivolta al monitoraggio di un server MySQL con Zabbix agent 2, che è l'approccio **consigliato** grazie alla sua configurazione semplice e uniforme in diversi scenari.
Tuttavia, questa pagina fornisce anche istruzioni per gli [altri approcci](#other-approaches-to-monitor-mysql), quindi sentiti libero di scegliere quello più adatto alle tue esigenze.

[comment]: # ({/ad3dab41-2185307b})

[comment]: # ({0cf7feb5-831aae47})
**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 di un server MySQL.
Se stai cercando opzioni di personalizzazione avanzate o hai bisogno di una configurazione più complessa, consulta la sezione [Configuration](/manual/config) del manuale di Zabbix.

[comment]: # ({/0cf7feb5-831aae47})

[comment]: # ({519621df-2fd1df9d})
**Prerequisiti**

Prima di procedere con questa guida, è necessario [scaricare e installare](https://www.zabbix.com/download) Zabbix server, Zabbix frontend e Zabbix agent 2 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 in esecuzione su Ubuntu.

[comment]: # ({/519621df-2fd1df9d})

[comment]: # ({8ae78277-ae0ef261})
#### Creare un utente MySQL

Per monitorare un server MySQL, Zabbix richiede l'accesso a esso e ai suoi processi.
La tua installazione di MySQL dispone già di un utente con il livello di accesso richiesto (l'utente "zabbix" creato durante l'installazione di Zabbix),
tuttavia, questo utente ha più privilegi del necessario per un semplice monitoraggio (privilegi per DROP dei database, DELETE delle voci dalle tabelle, ecc.).
Pertanto, è necessario creare un utente MySQL con il solo scopo di monitorare il server MySQL.

1\. Connettiti al client MySQL, crea un utente "zbx_monitor" (sostituisci *<password>* per l'utente "zbx_monitor" con una password a tua scelta),
e [GRANT](https://dev.mysql.com/doc/refman/8.0/en/grant.html) i privilegi necessari all'utente:

    mysql -u root -p
    # Enter password:

    mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
    mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
    mysql> quit;

Una volta creato l'utente, puoi passare al passaggio successivo.

[comment]: # ({/8ae78277-ae0ef261})

[comment]: # ({7d9d17aa-e6607c21})
#### Configurare il frontend di Zabbix

1\. Accedere al frontend di Zabbix.

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

-   Nel campo *Host name*, inserire un nome host (ad esempio, "MySQL server").
-   Nel campo *Templates*, digitare o selezionare il template "MySQL by Zabbix agent 2" che verrà [collegato](/manual/config/templates/linking) all'host.
-   Nel campo *Host groups*, digitare o selezionare un gruppo host (ad esempio, "Databases").
-   Nel campo *Interfaces*, aggiungere un'interfaccia di tipo "Agent" e specificare l'indirizzo IP del server MySQL.
    Questa guida utilizza "127.0.0.1" (localhost) per monitorare un server MySQL installato sulla stessa macchina di Zabbix server e Zabbix agent 2.

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

-   Nella scheda *Macros*, passare a *Inherited and host macros*, cercare le seguenti macro e fare clic su *Change* accanto al valore della macro per aggiornarlo:
    -   {$MYSQL.DSN} - impostare l'origine dati del server MySQL (la [stringa di connessione di una sessione denominata](/manual/appendix/config/zabbix_agent2_plugins/mysql_plugin#parameters) dal file di configurazione del plugin MySQL di Zabbix agent 2).
        Questa guida utilizza l'origine dati predefinita "tcp://localhost:3306" per monitorare un server MySQL installato sulla stessa macchina di Zabbix server e Zabbix agent 2.
    -   {$MYSQL.PASSWORD} - impostare la password del precedente [utente MySQL creato](#create-mysql-user) "zbx_monitor".
    -   {$MYSQL.USER} - impostare il nome del precedente [utente MySQL creato](#create-mysql-user) "zbx_monitor".

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

3\. Fare clic su *Add* per aggiungere l'host. Questo host rappresenterà il server MySQL.

[comment]: # ({/7d9d17aa-e6607c21})

[comment]: # ({bdcc4c70-339fa505})
#### Visualizzare le metriche raccolte

Congratulazioni! A questo punto, Zabbix sta già monitorando il tuo server MySQL.

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/mysql_hosts.png){width="600"}

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

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

In alternativa, dalla sezione di menu [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts), puoi fare clic su [*Latest data*](/manual/web_interface/frontend_sections/monitoring/latest_data) per visualizzare in un elenco tutte le metriche raccolte più recenti.
Nota che l'item *MySQL: Calculated value of innodb_log_file_size* è previsto che non abbia dati, poiché il valore verrà calcolato dai dati dell'ultima ora.

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

[comment]: # ({/bdcc4c70-339fa505})

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

Zabbix può notificarti un problema nella tua infrastruttura usando diversi metodi.
Questa guida fornisce i passaggi di configurazione di base per l'invio di 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-91c440fc})

[comment]: # ({77c86049-3e5fc0d5})
#### Testare la configurazione

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

1\. Apri la configurazione dell'host del tuo server MySQL 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 {$MYSQL.USER} [configurato in precedenza](#configure-zabbix-frontend) e imposta un nome utente MySQL diverso.

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

5\. Dopo qualche istante, Zabbix rileverà il problema "MySQL: Service is down", perché non sarà in grado di connettersi al server MySQL.
Il problema apparirà in [*Monitoring → Problems*](/manual/web_interface/frontend_sections/monitoring/problems).

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

Se gli avvisi 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 server MySQL.

[comment]: # ({/77c86049-3e5fc0d5})

[comment]: # ({599a98b0-69f193e9})
#### Altri approcci per monitorare MySQL

Invece di monitorare un server MySQL con Zabbix agent 2, puoi anche usare Zabbix agent o lo standard Open Database Connectivity (ODBC).
Sebbene sia consigliato usare Zabbix agent 2, potrebbero esserci alcune configurazioni che non supportano Zabbix agent 2 o che richiedono un approccio personalizzato.

La differenza principale tra Zabbix agent e ODBC riguarda il metodo di raccolta dei dati: Zabbix agent viene installato direttamente sul server MySQL e raccoglie i dati usando le funzionalità integrate,
mentre ODBC si basa su un driver ODBC per stabilire una connessione al server MySQL e recuperare i dati tramite query SQL.

Anche se molti passaggi di configurazione sono simili al monitoraggio di un server MySQL con Zabbix agent 2, ci sono alcune differenze significative: devi configurare Zabbix agent o ODBC per poter monitorare un server MySQL.
Le istruzioni seguenti ti guidano attraverso queste **differenze**.

[comment]: # ({/599a98b0-69f193e9})

[comment]: # ({c3f2cc9e-c7da6279})
##### Monitorare MySQL con Zabbix agent

Per monitorare un server MySQL con Zabbix agent, è necessario [scaricare e installare](https://www.zabbix.com/download) Zabbix server, Zabbix frontend e Zabbix agent seguendo le istruzioni per il proprio sistema operativo.

Dopo aver installato correttamente i componenti Zabbix richiesti, è necessario creare un utente MySQL come descritto nella sezione [*Creare un utente MySQL*](#create-mysql-user).

Dopo aver creato l'utente MySQL, è necessario configurare Zabbix agent in modo che possa stabilire una connessione con il server MySQL e monitorarlo.
Questo include la configurazione di più [parametri utente](/manual/config/items/userparameters) per eseguire controlli personalizzati di agent,
oltre a fornire a Zabbix agent le credenziali necessarie per connettersi al server MySQL come utente "zbx_monitor" [creato in precedenza](#create-mysql-user).

[comment]: # ({/c3f2cc9e-c7da6279})

[comment]: # ({71f0c028-81cd968b})
**Configurare Zabbix agent**

1\. Vai alla directory delle configurazioni aggiuntive di Zabbix agent.

    cd /usr/local/etc/zabbix/zabbix_agentd.d

::: noteimportant
La directory delle configurazioni aggiuntive di Zabbix agent dovrebbe trovarsi nella stessa directory del file di configurazione di Zabbix agent (*zabbix_agentd.conf*).
A seconda del sistema operativo e dell'installazione di Zabbix, questa directory può avere una posizione diversa da quella indicata in questa guida.
Per le posizioni predefinite, controlla il parametro [`Include`](/manual/appendix/config/zabbix_agentd#include) nel file di configurazione di Zabbix agent.
:::

Invece di definire nel file di configurazione di Zabbix agent tutti i parametri utente necessari per il monitoraggio del server MySQL,
questi parametri verranno definiti in un file separato nella directory delle configurazioni aggiuntive.

2\. Crea un file *template_db_mysql.conf* nella directory delle configurazioni aggiuntive di Zabbix agent.

    vi template_db_mysql.conf

3\. Copia il contenuto del file [*template_db_mysql.conf*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_mysql.conf) (situato nel repository di Zabbix) nel file *template_db_mysql.conf* che hai creato, quindi salva.

4\. Riavvia Zabbix agent per aggiornare la configurazione.

    systemctl restart zabbix-agent

Una volta configurati i parametri utente di Zabbix agent, puoi passare alla configurazione delle credenziali che consentiranno a Zabbix agent di accedere al server MySQL.

[comment]: # ({/71f0c028-81cd968b})

[comment]: # ({49d8d7e7-98d0d0b4})
5\. Passare alla directory home dell'agent Zabbix (se non esiste nel sistema, è necessario crearla; predefinita: */var/lib/zabbix*).

    cd /var/lib/zabbix

6\. Creare un file *.my.cnf* nella directory home dell'agent Zabbix.

    vi .my.cnf

7\. Copiare il seguente contenuto nel file *.my.cnf* (sostituire *<password>* con la password dell'utente "zbx_monitor").

    [client]
    user='zbx_monitor'
    password='<password>'

[comment]: # ({/49d8d7e7-98d0d0b4})

[comment]: # ({e1d7b01f-3d796e6b})
**Configura il frontend di Zabbix e verifica la configurazione**

Per configurare il frontend di Zabbix, segui le istruzioni nella sezione [*Configura il frontend di Zabbix*](#configure-zabbix-frontend) con le seguenti modifiche:

-   Nel campo *Templates*, digita o seleziona il template "MySQL by Zabbix agent" che verrà [collegato](/manual/config/templates/linking) all'host.
-   La configurazione di *Macros* non è necessaria.

Una volta configurato il frontend di Zabbix, puoi [visualizzare le metriche raccolte](#view-collected-metrics) e [configurare gli avvisi sui problemi](#set-up-problem-alerts).

Per testare la configurazione, segui le istruzioni nella sezione [*Test your configuration*](#test-your-configuration) con le seguenti modifiche:

-   Nella sezione *Inherited and host macros* della configurazione dell'host del server MySQL, fai clic su *Change* accanto al valore della macro {$MYSQL.PORT} e imposta una porta diversa (ad esempio, "6033").

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

[comment]: # ({/e1d7b01f-3d796e6b})

[comment]: # ({b2aad39e-876f1a94})
##### Monitorare MySQL con ODBC

Per monitorare un server MySQL con ODBC, è necessario [scaricare e installare](https://www.zabbix.com/download) Zabbix server e Zabbix frontend.

Una volta installati correttamente i componenti Zabbix richiesti, è necessario creare un utente MySQL come descritto nella sezione [*Create MySQL user*](#create-mysql-user).

Dopo aver creato l'utente MySQL, è necessario configurare ODBC.
Questo include l'installazione di una delle implementazioni open source dell'API ODBC più comunemente utilizzate - [unixODBC](https://www.unixodbc.org/) - e di un driver unixODBC, oltre alla modifica del file di configurazione del driver ODBC.

[comment]: # ({/b2aad39e-876f1a94})

[comment]: # ({7530ff59-445fc52a})
**Configurare ODBC**

1\. Installare unixODBC. Il modo consigliato per installare unixODBC è usare i repository di pacchetti predefiniti del sistema operativo Linux.

    apt install unixodbc

2\. Installare il driver database unixODBC di MariaDB. Anche se si dispone di un database MySQL, il driver unixODBC di MariaDB viene usato per motivi di compatibilità.

    apt install odbc-mariadb

3\. Verificare la posizione dei file di configurazione ODBC *odbcinst.ini* e *odbc.ini*.

    odbcinst -j

Il risultato dell'esecuzione di questo comando dovrebbe essere simile al seguente.

    unixODBC 2.3.9
    DRIVERS............: /etc/odbcinst.ini
    SYSTEM DATA SOURCES: /etc/odbc.ini
    FILE DATA SOURCES..: /etc/ODBCDataSources
    ...

4\. Per configurare il driver ODBC per il monitoraggio di un database MySQL, è necessario il nome del driver, che si trova nel file *odbcinst.ini*.
Nell'esempio seguente del file *odbcinst.ini*, il nome del driver è "MariaDB Unicode".

    [MariaDB Unicode]
    Driver=libmaodbc.so
    Description=MariaDB Connector/ODBC(Unicode)
    Threading=0
    UsageCount=1

5\. Copiare il seguente contenuto nel file *odbc.ini* (sostituire *<password>* con la password dell'utente "zbx_monitor").
Questa guida usa "127.0.0.1" (localhost) come indirizzo del server MySQL per monitorare un server MySQL installato sulla stessa macchina del driver ODBC.
Notare il nome della sorgente dati (DSN) "test", che sarà necessario quando si [configura il frontend di Zabbix](#configure-zabbix-frontend).

    [test]
    Driver=MariaDB Unicode
    Server=127.0.0.1
    User=zbx_monitor
    Password=<password>
    Port=3306
    Database=zabbix

[comment]: # ({/7530ff59-445fc52a})

[comment]: # ({f773e20d-062f32d6})
**Configura il frontend di Zabbix e testa la tua configurazione**

Per configurare il frontend di Zabbix, segui le istruzioni nella sezione [*Configura il frontend di Zabbix*](#configure-zabbix-frontend) con le seguenti modifiche:

-   Nel campo *Templates*, digita o seleziona il template "MySQL by ODBC" che verrà [collegato](/manual/config/templates/linking) all'host.
-   La configurazione delle *Interfaces* non è richiesta.
-   Il valore della macro {$MYSQL.DSN} nella sezione *Inherited and host macros* della configurazione dell'host del server MySQL deve essere impostato sul nome DSN del file *odbc.ini*.

Una volta configurato il frontend di Zabbix, puoi [visualizzare le metriche raccolte](#view-collected-metrics), [configurare gli avvisi sui problemi](#set-up-problem-alerts) e [testare la tua configurazione](#test-your-configuration).

[comment]: # ({/f773e20d-062f32d6})

[comment]: # ({c2903286-123e0265})
#### 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 es., 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).
-   [Monitoraggio ODBC](/manual/config/items/itemtypes/odbc_checks) - come configurare ODBC su altre distribuzioni Linux e come iniziare a monitorare metriche aggiuntive relative ai database con ODBC.
-   Template [*MySQL by Zabbix agent*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent) - informazioni aggiuntive sul template *MySQL by Zabbix agent*.
-   Template [*MySQL by Zabbix agent 2*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2) - informazioni aggiuntive sul template *MySQL by Zabbix agent 2*.
-   Template [*MySQL by ODBC*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_odbc) - informazioni aggiuntive sul template *MySQL by ODBC*.

[comment]: # ({/c2903286-123e0265})
