Nesse tutorial vou abordar a instalação e configuração do DBforBIX, uma excelente ferramenta de coleta de dados de Banco de Dados para o Zabbix. Ela suporta vários banco de dados, como MySQL, PostgreSQL, Oracle, entre outros.
O DBforBIX age como um “intermediário” entre o servidor Zabbix e o banco de dados, fazendo a coleta dos dados no banco de dados e as enviando ao servidor Zabbix. Veja ilustração abaixo:
*Ilustração reproduzida a partir da documentação oficial do DBforBIX
Pré-requisitos:
- Centos 5x ou 6x (outras distro também são suportadas)
- Java SE 1.6
- Zabbix 1.8x ou posterior (funciona bem no Zabbix 2.0 🙂 )
Para que o DBforBIX funcione, é necessário que a máquina de instalação tenha acesso ao banco de dados que será monitorado. Outra alternativa, até mais segura, é fazer uma instalação stand-alone, ou seja, cada banco de dados ter o DBforBIX instalado no próprio host. Porém, além de isso gerar uma demanda maior de tempo de trabalho e complicar um pouco o gerenciamento, nem sempre isso é possível.
No meu caso (que é o exemplo usado neste tutorial) fiz a instalação no Zabbix Server e criei uma VPN para cada host que possuí um banco a ser monitorado; isso porquê tenho vários hosts que conecto por meio da Internet, assim evito trafegar dados de forma “aberta”.
Instalação
Faça o download em http://www.smartmarmot.com/?s2member_file_download=dbforbix-0.6.zip e descompacte o arquivo em /opt/dbforbix
Cria uma entrada no init.d:
# cd /opt/dbforbix
# cp init.d/dbforbix /etc/init.d/
Deixa arquivos executáveis:
# chmod +x /etc/init.d/dbforbiix
# chmod +x run.sh
Habilita inicio automático
# chkconfig –add dbforbix
# chkconfig dbforbix on
Configuração
Toda a configuração do dbforbix fica em /opt/dbforbix/conf/config.props. Vamos utilizar o arquivo de exemplo para fazermos a configuração incial:
# cd /opt/dbforbix
# cp conf/config.props.sample conf/config.props
Nessa instalação, usarei os seguintes dados como exemplo:
IP do Servidor Zabbix: 10.1.1.1
IP do banco Mysql que irei monitorar: 10.1.1.20
IP do banco PostgreSQL que irei monitorar: 10.1.1.30
Nome da base Mysql: my-db-mysql
Nome da base PostgreSQL: my-db-pgsql
Nome do host Mysql cadastrado no Zabbix=DB-Mysql
Nome do host PostgreSQL cadastrado no Zabbix=DB-Pgsql
É recomendável que o DBforBIX utilize um usuário específico para esse fim. Abaixo crio o usuário zabbix_monitor no Mysql e PostgreSQL.
# Mysql
mysql> CREATE USER ‘zabbix’@’%’ identified by ‘minhasenha’;
mysql> GRANT SELECT, SHOW VIEW ON *.* TO ‘zabbix’@’%’;
# PostgreSQL
postgres# CREATE USER zabbix_monitor WITH PASSWORD ‘minhasenha’;
postgres# GRANT SELECT ON pg_stat_activity to zabbix_monitor;
postgres# GRANT SELECT ON pg_stat_activity to zabbix_monitor;
postgres# GRANT SELECT ON pg_database to zabbix_monitor;
postgres# GRANT SELECT ON pg_authid to zabbix_monitor;
postgres# GRANT SELECT ON pg_stat_bgwriter to zabbix_monitor;
postgres# GRANT SELECT ON pg_locks to zabbix_monitor;
postgres# GRANT SELECT ON pg_stat_database to zabbix_monitor;
Para outros banco de dados, você pode consultar a documentação oficial.
Vamos configurar agora o dbforbix:
# vim conf/config.props.sample
#Lista de servidores Zabbix
ZabbixServerList=ZabbixServer
#Parâmetros dos servidor Zabbix
ZabbixServer.Address=10.1.1.1
ZabbixServer.Port=10051
#PidFile
DBforBIX.PidFile=./logs/dbforbix.pid
#Tempo de atualização dos itens
DBforBIX.Sleep=30
#Número de Thread’s (máximo)
DBforBIX.MaxThreadNumber=100
#Lista de databases. É importante observar que esse é o nome do host cadastrado no Zabbix Server.
DatabaseList=DB-Mysql,DB-Pgsql
#Altere as opções abaixo apenas se tiver necessidade:
DatabaseList.MaxActive=10
DatabaseList.MaxWait=100
DatabaseList.MaxIdle=1
#Dados do banco Mysql
DB-Mysql.Url=jdbc:mysql://10.1.1.20:3306/my-db-mysql
DB-Mysql.User=zabbix_monitor
DB-Mysql.Password=minhasenha
DB-Mysql.DatabaseType=mysql
DB-Mysql.QueryListFile=./conf/mysqlquery.props
#Dados do banco PostgreSQL
DB-Pgsql.Url=jdbc:postgresql://10.1.1.30:5432/my-db-pgsql
DB-Pgsql.User=zabbix_monitor
DB-Pgsql.Password=minhasenha
DB-Pgsql.DatabaseType=pgsql
DB-Pgsql.QueryListFile=./conf/pgsqlquery.props
Agora precisamos configurar as query’s de consulta ao banco. Nesse caso, irei utilizar as que vem no exemplo, que já possuem bastante informações.
# mv conf/mysqlquery.props.sample conf/mysqlquery.props
# mv conf/pgsqlquery.props.sample conf/pgsqlquery.props
O DBforBIX está configurado, basta apenas inicia-lo. Vamos configurar agora o Zabbix Server. Faça o upload dos templates, que estão dentro da pasta Templates que vem no arquivo do DBforBIX.
Clique em Configuration-Template
Depois clique em Import
Selecione o template, e clique em Import
Caso a importação tenha exito, mostrará a mensagem conforme tela abaixo:
Importe todos os templates que irá utilizar, e pronto! Agora basta adicionar o template no host configurado e iniciar o DBforBIX, com o comando abaixo:
# service dbforbix start
OU
# /opt/dbforbix/run.sh
Referencia