[comment]: # translation:outdated

[comment]: # ({a313f054-b4128477})
# 4 Monitorar o MySQL com o Zabbix agent 2

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

[comment]: # ({ad3dab41-2185307b})
#### Introdução

Esta página orienta você nas etapas necessárias para iniciar o monitoramento básico de um servidor MySQL.

Para monitorar um servidor MySQL, existem várias abordagens: agent Zabbix, agent Zabbix 2 ou o padrão Open Database Connectivity (ODBC).
O foco principal deste guia é o monitoramento de um servidor MySQL com o agent Zabbix 2, que é a abordagem **recomendada** devido à sua configuração simplificada em diferentes ambientes.
No entanto, esta página também oferece instruções para as [outras abordagens](#other-approaches-to-monitor-mysql), portanto, sinta-se à vontade para escolher a que melhor se adapta às suas necessidades.

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

[comment]: # ({0cf7feb5-831aae47})
**Para quem é este guia**

Este guia foi desenvolvido para novos usuários do Zabbix e contém o conjunto mínimo de etapas necessárias para habilitar o monitoramento básico de um servidor MySQL.
Se você procura opções de personalização avançadas ou precisa de uma configuração mais avançada, consulte a seção [Configuração](/manual/config) do manual do Zabbix.

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

[comment]: # ({519621df-2fd1df9d})
**Pré-requisitos**

Antes de prosseguir com este guia, você precisa [baixar e instalar](https://www.zabbix.com/download) o Zabbix server, o Zabbix frontend e o Zabbix agent 2 de acordo com as instruções para o seu sistema operacional.

Dependendo do seu ambiente, alguns passos deste guia podem ser ligeiramente diferentes.
Este guia é baseado em um ambiente rodando Ubuntu.

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

[comment]: # ({8ae78277-ae0ef261})
#### Criar usuário MySQL

Para monitorar um servidor MySQL, o Zabbix requer acesso a ele e seus processos.
Sua instalação do MySQL já possui um usuário com o nível de acesso necessário (o usuário "zabbix" que foi criado ao instalar o Zabbix),
no entanto, esse usuário possui mais privilégios do que o necessário para um monitoramento simples (privilégios para DROP de bancos de dados, DELETE de entradas de tabelas, etc.).
Portanto, um usuário MySQL para o propósito de *apenas* monitorar o servidor MySQL precisa ser criado.

1\. Conecte-se ao cliente MySQL, crie um usuário "zbx_monitor" (substitua *<password>* para o usuário "zbx_monitor" por uma senha de sua escolha),
e [GRANT](https://dev.mysql.com/doc/refman/8.0/en/grant.html) os privilégios necessários ao usuário:

    mysql -u root -p
    # Digite a senha:

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

Depois que o usuário for criado, você pode passar para a próxima etapa.

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

[comment]: # ({19ca60f6-e6607c21})
#### Configure o frontend do Zabbix

1\. Faça login no frontend do Zabbix.

2\. [Crie um host](/manual/config/hosts/host) na interface web do Zabbix:

-   No campo *Host name*, informe um nome de host (por exemplo, "MySQL server").
-   No campo *Templates*, digite ou selecione o template "MySQL by Zabbix agent 2" que será [vinculado](/manual/config/templates/linking) ao host.
-   No campo *Host groups*, digite ou selecione um grupo de hosts (por exemplo, "Databases").
-   No campo *Interfaces*, adicione uma interface do tipo "Agent" e especifique o endereço IP do seu servidor MySQL.
    Este guia usa "127.0.0.1" (localhost) para monitorar um servidor MySQL instalado na mesma máquina que o server Zabbix e o agent Zabbix 2.

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

-   Na aba *Macros*, alterne para *Inherited and host macros*, procure as seguintes macros e clique em *Change* ao lado do valor da macro para atualizá-lo:
    -   {$MYSQL.DSN} - defina a fonte de dados do server MySQL (a [string de conexão de uma sessão nomeada](/manual/concepts/agent2/agent2_params_plugin/mysql_plugin#parameters) do arquivo de configuração do plugin MySQL do Zabbix agent 2).
        Este guia usa a fonte de dados padrão "tcp://localhost:3306" para monitorar um servidor MySQL instalado na mesma máquina que o server Zabbix e o agent Zabbix 2.
    -   {$MYSQL.PASSWORD} - defina a senha do usuário MySQL [criado anteriormente](#create-mysql-user) "zbx_monitor".
    -   {$MYSQL.USER} - defina o nome do usuário MySQL [criado anteriormente](#create-mysql-user) "zbx_monitor".

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

3\. Clique em *Add* para adicionar o host. Este host representará o seu servidor MySQL.

[comment]: # ({/19ca60f6-e6607c21})

[comment]: # ({4a48827a-339fa505})
#### Ver métricas coletadas

Parabéns! Neste ponto, o Zabbix já está monitorando seu servidor MySQL.

Para ver as métricas coletadas, navegue até a seção de menu [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts) e clique em *Dashboards* ao lado do host.

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

Essa ação levará você ao dashboard do host (configurado no nível do template) com as métricas mais importantes coletadas do servidor MySQL.

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

Como alternativa, na seção de menu [*Monitoring → Hosts*](/manual/web_interface/frontend_sections/monitoring/hosts), você pode clicar em [*Latest data*](/manual/web_interface/frontend_sections/monitoring/latest_data) para ver todas as métricas coletadas mais recentes em uma lista.
Observe que o item *MySQL: Calculated value of innodb_log_file_size* deve ficar sem dados, pois o valor será calculado com base nos dados da última hora.

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

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

[comment]: # ({12e704dc-91c440fc})
#### Configure alertas de problema

O Zabbix pode notificá-lo sobre um problema em sua infraestrutura usando uma variedade de métodos.
Este guia fornece etapas básicas de configuração para o envio de alertas por e-mail.

1\. Navegue até [*Configurações do usuário → Perfil*](/manual/web_interface/user_profile), alterne para a guia *Mídia* e [adicione seu e-mail](/manual/installation/quick_guides/basic_config/login#adding-user).

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

2\. Siga o guia para [Receber uma notificação de problema](/manual/installation/quick_guides/basic_config/notification).

Da próxima vez que o Zabbix detectar um problema, você deverá receber um alerta por e-mail.

[comment]: # ({/12e704dc-91c440fc})

[comment]: # ({29aeaf6c-3e5fc0d5})
#### Teste sua configuração

Para testar sua configuração, podemos simular um problema real atualizando a configuração do host no frontend do Zabbix.

1\. Abra a configuração do host do seu servidor MySQL no Zabbix.

2\. Acesse a aba *Macros* e selecione *Inherited and host macros*.

3\. Clique em *Change* ao lado, por exemplo, do valor da macro {$MYSQL.USER} [configurado anteriormente](#configure-zabbix-frontend) e defina um nome de usuário MySQL diferente.

4\. Clique em *Update* para atualizar a configuração do host.

5\. Em alguns instantes, o Zabbix detectará o problema "MySQL: Service is down", porque não conseguirá se conectar ao servidor MySQL.
O problema aparecerá em [*Monitoring → Problems*](/manual/web_interface/frontend_sections/monitoring/problems).

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

Se os alertas estiverem [configurados](#set-up-problem-alerts), você também receberá a notificação do problema.

6\. Altere o valor da macro de volta para o valor anterior para resolver o problema e continuar monitorando o servidor MySQL.

[comment]: # ({/29aeaf6c-3e5fc0d5})

[comment]: # ({599a98b0-69f193e9})
#### Outras abordagens para monitorar o MySQL

Em vez de monitorar um servidor MySQL com o Zabbix agent 2, você também pode usar o Zabbix agent ou o padrão Open Database Connectivity (ODBC).
Embora o uso do Zabbix agent 2 seja recomendado, pode haver algumas configurações que não suportam o Zabbix agent 2 ou exigem uma abordagem personalizada.

A principal diferença entre o Zabbix agent e o ODBC está no método de coleta de dados - o Zabbix agent é instalado diretamente no servidor MySQL e coleta dados usando sua funcionalidade interna,
enquanto o ODBC depende de um driver ODBC para estabelecer uma conexão com o servidor MySQL e recuperar dados usando consultas SQL.

Embora muitas das etapas de configuração sejam semelhantes ao monitoramento de um servidor MySQL com o Zabbix agent 2, existem algumas diferenças significativas - você precisa configurar o Zabbix agent ou o ODBC para poder monitorar um servidor MySQL.
As instruções a seguir orientam você por essas **diferenças**.

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

[comment]: # ({c3f2cc9e-c7da6279})
##### Monitorar o MySQL com o Zabbix agent

Para monitorar um servidor MySQL com o Zabbix agent, você precisa [baixar e instalar](https://www.zabbix.com/download) o Zabbix server, o Zabbix frontend e o Zabbix agent de acordo com as instruções para o seu sistema operacional.

Depois de instalar com sucesso os componentes necessários do Zabbix, você precisa criar um usuário MySQL conforme descrito na seção [*Criar usuário MySQL*](#create-mysql-user).

Após criar o usuário MySQL, você precisa configurar o Zabbix agent para que ele possa estabelecer uma conexão com o servidor MySQL e monitorá-lo.
Isso inclui configurar vários [parâmetros de usuário](/manual/config/items/userparameters) para executar verificações personalizadas do agent,
bem como fornecer ao Zabbix agent as credenciais necessárias para conectar-se ao servidor MySQL como o usuário "zbx_monitor" [criado anteriormente](#create-mysql-user).

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

[comment]: # ({9ca73806-81cd968b})
**Configure Zabbix agent**

1\. Navegue até o diretório de configurações adicionais do Zabbix agent.

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

::: noteimportant
O diretório de configurações adicionais do Zabbix agent deve estar localizado no mesmo diretório do arquivo de configuração do seu Zabbix agent (*zabbix_agentd.conf*).
Dependendo do seu sistema operacional e da instalação do Zabbix, esse diretório pode ter um local diferente do especificado neste guia.
Para os locais padrão, verifique o parâmetro [`Include`](/manual/concepts/agent/agentd_params#include) no arquivo de configuração do Zabbix agent.
:::

Em vez de definir todos os user parameters necessários para monitorar o servidor MySQL no arquivo de configuração do Zabbix agent,
esses parâmetros serão definidos em um arquivo separado no diretório de configurações adicionais.

2\. Crie um arquivo *template_db_mysql.conf* no diretório de configurações adicionais do Zabbix agent.

    vi template_db_mysql.conf

3\. Copie o conteúdo do arquivo [*template_db_mysql.conf*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent/template_db_mysql.conf) (localizado no repositório do Zabbix) para o arquivo *template_db_mysql.conf* que você criou e salve.

4\. Reinicie o Zabbix agent para atualizar sua configuração.

    systemctl restart zabbix-agent

Depois de configurar os user parameters do Zabbix agent, você pode prosseguir para configurar as credenciais que permitirão ao Zabbix agent acessar o servidor MySQL.

[comment]: # ({/9ca73806-81cd968b})

[comment]: # ({49d8d7e7-98d0d0b4})
5\. Navegue até o diretório inicial do agent Zabbix (se não existir em seu sistema, você precisa criá-lo; padrão: */var/lib/zabbix*).

    cd /var/lib/zabbix

6\. Crie um arquivo *.my.cnf* no diretório inicial do agent Zabbix.

    vi .my.cnf

7\. Copie o seguinte conteúdo para o arquivo *.my.cnf* (substitua *<password>* pela senha do usuário "zbx_monitor").

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

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

[comment]: # ({c6aea30a-3d796e6b})
**Configure o frontend do Zabbix e teste sua configuração**

Para configurar o frontend do Zabbix, siga as instruções na seção [*Configure Zabbix frontend*](#configure-zabbix-frontend) com os seguintes ajustes:

-   No campo *Templates*, digite ou selecione o template "MySQL by Zabbix agent" que será [vinculado](/manual/config/templates/linking) ao host.
-   Não é necessário configurar *Macros*.

Depois de configurar o frontend do Zabbix, você pode [ver as métricas coletadas](#view-collected-metrics) e [configurar alertas de problema](#set-up-problem-alerts).

Para testar sua configuração, siga as instruções na seção [*Test your configuration*](#test-your-configuration) com os seguintes ajustes:

-   Na seção *Inherited and host macros* da configuração do host do servidor MySQL, clique em *Change* ao lado do valor da macro {$MYSQL.PORT} e defina uma porta diferente (por exemplo, "6033").

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

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

[comment]: # ({b2aad39e-876f1a94})
##### Monitorar o MySQL com ODBC

Para monitorar um servidor MySQL com ODBC, você precisa [baixar e instalar](https://www.zabbix.com/download) o Zabbix server e o Zabbix frontend.

Depois de instalar com sucesso os componentes necessários do Zabbix, você precisa criar um usuário MySQL conforme descrito na seção [*Criar usuário MySQL*](#create-mysql-user).

Após criar o usuário MySQL, é necessário configurar o ODBC.
Isso inclui instalar uma das implementações de API ODBC de código aberto mais utilizadas - [unixODBC](https://www.unixodbc.org/) - e um driver unixODBC, além de editar o arquivo de configuração do driver ODBC.

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

[comment]: # ({f1ebeea4-445fc52a})
**Configurar ODBC**

1\. Instale o unixODBC. A maneira recomendada de instalar o unixODBC é usar os repositórios de pacotes padrão do sistema operacional Linux.

    apt install unixodbc

2\. Instale o driver de banco de dados unixODBC do MariaDB. Embora você tenha um banco de dados MySQL, o driver unixODBC do MariaDB é usado por questões de compatibilidade.

    apt install odbc-mariadb

3\. Verifique a localização dos arquivos de configuração do ODBC *odbcinst.ini* e *odbc.ini*.

    odbcinst -j

O resultado da execução deste comando deve ser semelhante ao seguinte.

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

4\. Para configurar o driver ODBC para monitorar um banco de dados MySQL, você precisa do nome do driver, que está localizado no arquivo *odbcinst.ini*.
No exemplo a seguir do arquivo *odbcinst.ini*, o nome do driver é "MariaDB Unicode".

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

5\. Copie o seguinte conteúdo para o arquivo *odbc.ini* (substitua *<password>* pela senha do usuário "zbx_monitor").
Este guia usa "127.0.0.1" (localhost) como o endereço do servidor MySQL para monitorar um servidor MySQL que está instalado na mesma máquina que o driver ODBC.
Observe o nome da fonte de dados (DSN) "test", que será necessário ao [configurar o frontend do Zabbix](#configure-zabbix-frontend).

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

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

[comment]: # ({f773e20d-062f32d6})
**Configure o frontend do Zabbix e teste sua configuração**

Para configurar o frontend do Zabbix, siga as instruções na seção [*Configure o frontend do Zabbix*](#configure-zabbix-frontend) com os seguintes ajustes:

-   No campo *Templates*, digite ou selecione o template "MySQL by ODBC" que será [vinculado](/manual/config/templates/linking) ao host.
-   Não é necessário configurar *Interfaces*.
-   O valor da macro {$MYSQL.DSN} na seção *Macros herdadas e do host* da configuração do host do servidor MySQL deve ser definido para o nome do DSN do arquivo *odbc.ini*.

Depois de configurar o frontend do Zabbix, você pode [visualizar as métricas coletadas](#view-collected-metrics), [configurar alertas de problemas](#set-up-problem-alerts) e [testar sua configuração](#test-your-configuration).

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

[comment]: # ({c2903286-123e0265})
#### Veja também

-   [Criando um item](/manual/config/items/item) - como começar a monitorar métricas adicionais.
-   [Escalonamentos de problemas](/manual/config/notifications/action/escalations) - como criar cenários de alerta em várias etapas
    (por exemplo, primeiro enviar mensagem para o administrador do sistema, depois, se um problema não for resolvido em 45 minutos, enviar mensagem para o gerente do data center).
-   [Monitoramento ODBC](/manual/config/items/itemtypes/odbc_checks) - como configurar ODBC em outras distribuições Linux e como começar a monitorar métricas adicionais relacionadas ao banco de dados com ODBC.
-   Template [*MySQL por Zabbix agent*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent) - informações adicionais sobre o template *MySQL por Zabbix agent*.
-   Template [*MySQL por Zabbix agent 2*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_agent2) - informações adicionais sobre o template *MySQL por Zabbix agent 2*.
-   Template [*MySQL por ODBC*](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mysql_odbc) - informações adicionais sobre o template *MySQL por ODBC*.

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