6 de mai. de 2020

Monitoramento do SGBD MySQL com parâmetros de usuário

Olá, meu caro! 

Algumas vezes você pode precisar executar uma verificação que não faça parte do kit de testes nativos do Zabbix. Nestes casos os parâmetros de usuário poderão estender as funcionalidades da solução para novos testes desenvolvidos por você. Neste cenário iremos utilizar duas instâncias de VM's provisionadas na Google Cloud Plataform.

Instâncias de VM no GCP

Após monitoramento concluído, coleta dos dados do zabbix com Grafana
Após monitoramento concluído, gráfico provisionado no zabbix server
Após monitoramento concluído, gráfico provisionado no zabbix server


Vamos por etapas:
  1. Criar usuário no banco
  2. Conceder acesso as Databases para o usuário criado
  3. Criar arquivo de configuração com acessos ao banco .my.cnf
  4. Criar arquivo com os parâmetros extras userparameters_mysql.conf
  5. Configurar o zabbix_agentd.conf e reiniciar o serviço do agente zabbix


Criar usuário no banco

Vamos criar um usuário para acesso ao nosso banco de dados, este usuário será utilizado apenas para monitoramento, este usuário não terá permissão para acesso remoto ao banco.

Usuário: monitoradb
Password: RK83iLt6 (Gerador de password)

CREATE USER 'monitoradb'@'localhost' IDENTIFIED BY 'password';

Conceder acesso a Databases para o usuário criado

GRANT USAGE ON *.* TO monitdb@localhost IDENTIFIED BY 'RK83iLt6' WITH GRANT OPTION;
Ou
GRANT USAGE ON database.* TO monitdb@localhost IDENTIFIED BY 'RK83iLt6' WITH GRANT OPTION;

Criar arquivo de configuração do MySQL para acesso ao banco

Com um editor de preferência, crie um arquivo chamado .my.cnf e cole os parâmetros de usuário e senha utilizados ao criar o usuário:


[isweluiz@mysql zabbix]$ sudo vim /etc/zabbix/.my.cnf
[mysql]
user=monitdb
password=RK83iLt6
[mysqladmin]
user=monitdb
password=RK83iLt6

Criar arquivo com parâmetros extras - userparameters_mysql.conf

Os parâmetros de usuário são executados pelo Zabbix Agent.


[isweluiz@mysql zabbix]$ sudo vim /etc/zabbix/zabbix_agentd.d/userparameters_mysql.conf
# Sintaxe: mysql.status[variavel] - ex.: mysql.status[Slow_queries]
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'

# Sintaxe: mysql.size[<database>,<tabela>,<tipo>]
# Database eh o nome da base de dados. O Padrao eh "all".
# Tabela eh o nome da tabela. O padrao eh "all". Se a tabela for especificada, o database eh obrigatorio.
# Tipo pode ser "data", "index", "free" ou "both". Both eh a soma de "data" e "index". O padrao eh "both"
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo " and table_name=\"$2\"");" | HOME=/etc/zabbix mysql -N' 

UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V6

Configurar o zabbix_agentd.conf e reiniciar o serviço do agente zabbix

Acesse o arquivo de configuração do agente zabbix e procure por Include e modifique-o para:

[isweluiz@mysql zabbix]$ sudo vim /etc/zabbix/zabbix_agentd.conf

Include=/etc/zabbix/zabbix_agentd.d/*.conf

Reiniciando o serviço  do agente zabbix

[isweluiz@mysql zabbix_agentd.d]$ sudo systemctl restart zabbix-agent


Realizando testes com o zabbix_get

Você pode realizar testes com o zabbix_get para obter os valores passados nos parâmetros. Então para validar você precisar acessar o zabbix server e apos o parâmetro -s descriminar o ip de comunicação entre as instâncias.

# zabbix_get -s 127.0.0.1 -k mysql.status[Com_insert]
# zabbix_get -s 127.0.0.1 -k mysql.version
# zabbix_get -s 127.0.0.1 -k mysql.ping
# zabbix_get -s 127.0.0.1 -k mysql.size
# zabbix_get -s 127.0.0.1 -k mysql.size[zabbix]
# zabbix_get -s 127.0.0.1 -k mysql.size[zabbix,hosts]
# zabbix_get -s 127.0.0.1 -k mysql.size[zabbix,history,index]
# zabbix_get -s 127.0.0.1 -k mysql.size[zabbix,history,data]
# zabbix_get -s 127.0.0.1 -k mysql.size[zabbix,,data]

Exemplo:




Após todas as etapas concluídas podemos adicionar o template "DB MySQL" ao nosso host e verificar se os itens foram criados. 

Zabbix web, adicionando template do mysql ao host

Navegamos até o host, vamos até os itens e pesquisamos pela aplicação "mysql".
O resultado é como na imagem abaixo:

Itens zabbix

Dados recentes de coleta do host monitorado


Todos os comandos utilizados podem ser verificados no meu github. Até a próxima.



Leitura recomendada

Nenhum comentário:

Postar um comentário