Configurando DBforBIX no Zabbix

By | 28 de agosto de 2012

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