Monitorando Banco de Dados do Zabbix

No artigo de hoje vamos falar sobre como monitorar o banco de dados do Zabbix através do Zabbix Server utilizando UserParameter.

A Zabbix SIA disponibiliza o template para monitoramento de MySQL e MariaDB no link: https://github.com/zabbix/zabbix/tree/release/4.4/templates/db/mysql_agent

 

1) Copie o arquivo template_db_mysql.conf para o diretório /etc/zabbix/zabbix_agentd.d

#template_db_mysql.conf created by Zabbix for "Template DB MySQL" and Zabbix 4.2
#For OS Linux: You need create .my.cnf in zabbix-agent home directory (/var/lib/zabbix by default) 
#For OS Windows: You need add PATH to mysql and mysqladmin and create my.cnf in %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf https://dev.mysql.com/doc/refman/5.7/en/option-files.html
#The file must have three strings:
#[client]
#user=zbx_monitor
#password=<password>
#
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

 

2) Reinicie o serviço do Zabbix Agent

service zabbix-agent restart

 

3) Acesso o bash com usuário Zabbix

su zabbix -s /bin/bash

 

4) Teste um item do UserParameter

zabbix_agentd -t mysql.ping[localhost,3306]
mysql.ping[localhost,3306]                    [t|mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)']

Você vai se deparar com um erro de acesso negado para o usuário root.

Isso acontece por que não informamos as credenciais de acesso no UserParameter e também não temos o arquivo .my.cnf criado no diretório $HOME do usuário Zabbix.

Vamos resolver isso.

 

5) Crie um usuário no banco de dados para o monitoramento

É altamente recomendado criar um usuário dedicado ao monitoramento, acesso o banco de dados com usuário root e insira o comando.

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

 

6) Criar diretório home do usuário zabbix

mkdir -p /var/lib/zabbix

 

7) Altera a permissão para o usuário Zabbix

cd /var/lib
chown zabbix. -R zabbix/

 

8) Crie o arquivo .my.cnf no diretório /var/lib/zabbix

vim /var/lib/zabbix/.my.cnf
[client]
user=zbx_monitor
password="<sua_senha>"

 

9) Reinicie o serviço do Zabbix Agent

service zabbix-agent restart

 

10) Teste novamente o UserParameter com usuário Zabbix

su zabbix -s /bin/bash

zabbix_agentd -t mysql.ping[localhost,3306]
mysql.ping[localhost,3306]                    [t|mysqld is alive]

Pronto, o ambiente está preparado para monitorar o MySQL com UserParameter.

Basta importar o template, criar um host e associar ao template importado.

Espero que tenham gostado e até o próximo artigo.