Uma das funções que o Zabbix possuí e o ODBC Monitoring que como o próprio nome diz é extrair informações de um banco de dados via ODBC. Bora fazer funcionar com MariaDB e Oracle.
Zabbix
Primeiramente devemos preparar o ambiente para suportar conexões ODBC, abaixo os pacotes:
1 2 3 4 5 |
[root@zabbix ~]# yum -y install unixodbc unixodbc-dev [root@zabbix ~]# odbcinst --help unixODBC 2.3.1 [root@zabbix ~]# isql --help unixODBC 2.3.1 |
Descrição da chave no Zabbix:
db.odbc.select[<unique short description>,<dsn>]
db.odbc.select[descricao_item,nome_setado_no_odbc_ini]
MariaDB|MySQL
Para rolar o ODBC em MariaDB|MySQL devemos instalar o conector para ele:
1 |
[root@zabbix ~]# yum -y install mysql-connector-odbc |
Após instalação temos o arquivo de configuração "/etc/odbcinst.ini" ele possuí as configurações de bibliotecas para os drivers ODBCs, no caso o MariaDB|MySQL ele já cria sozinho essas entradas, portanto confirme no final do arquivos e temos o comando "odbcinst" que mostra os arquivos de configuração:
1 2 3 4 5 6 7 8 9 |
[root@zabbix ~]# odbcinst -j unixODBC 2.3.1 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 |
1 2 3 4 5 6 7 8 9 10 11 |
[root@zabbix ~]# cat /etc/odbcinst.ini # Driver from the mysql-connector-odbc package # Setup from the unixODBC package [MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc5.so Setup = /usr/lib/libodbcmyS.so Driver64 = /usr/lib64/libmyodbc5.so Setup64 = /usr/lib64/libodbcmyS.so FileUsage = 1 |
O outro arquivo importante é o "/etc/odbc.ini" pois nele configuramos qual o banco de dados que iremos consultar e qual o driver que será utilizado, e o Zabbix utiliza este arquivo para efetuar seu trabalho, então se atente a ele, vamos criar o "zabbixserver" com as informações para conexão ao banco de dados do nosso Servidor Zabbix:
1 2 3 4 5 6 7 8 9 |
[root@zabbix ~]# vi /etc/odbc.ini [zabbixserver] Description = MySql Driver = mysql Server = 127.0.0.1 User = zabbix Password = 123@123 Database = zabbix |
E para o teste utilizamos o "isql" chamando o "zabbixserver" que foi o nome setado dentro dos colchetes acima, e já pra começar a fixar este nome é o setado no campo "<dsn>" dentro da chave do item no Zabbix:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@zabbix ~]# isql -v zabbixserver +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> SELECT VERSION(); +---------------+ | VERSION() | +---------------+ | 5.5.50-MariaDB| +---------------+ SQLRowCount returns 1 1 rows fetched SQL> |
E abaixo um item criado em nosso Zabbix:
Oracle
Para o Oracle funcionar precisamos instalar o ODBC para ele e efetuar algumas configurações para carregar as variáveis, e configurar o tnsnames.ora conforme seu banco de dados:
1 2 3 4 5 6 7 8 |
[root@zabbix ~]# wget http://download.oracle.com/otn/linux/instantclient/121020/oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm [root@zabbix ~]# rpm -ivh oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm [root@zabbix ~]# ll /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1 [root@zabbix ~]# export ORACLE_HOME=/usr/lib/oracle/12.1/client64 [root@zabbix ~]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib [root@zabbix ~]# mkdir /etc/zabbix/odbc [root@zabbix ~]# vim /etc/zabbix/odbc/tnsnames.ora [root@zabbix ~]# export TNS_ADMIN=/etc/zabbix/odbc |
Criarmos a entrada para o driver em "/etc/odbcinst.ini", se atente que o Oracle dentro dos colchetes é o apontamento do driver:
1 2 3 4 5 6 7 |
[root@zabbix ~]# vi /etc/odbcinst.ini [Oracle] Description = Oracle ODBC Driver = /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1 FileUsage = 1 Driver Logging = 7 |
E agora criamos as configurações com nosso banco de dados Oracle, lembrando que ele busca no TNS_ADMIN que possui o "tnsnames":
1 2 3 4 5 6 7 8 |
[root@zabbix ~]# vi /etc/odbc.ini [odbcoracle] Description = Oracle Driver = Oracle ServerName = ERP UserID = UZABBIX Password = UZABBIX |
Efetuando o teste:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@zabbix ~]# isql odbcoracle +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select banner from v$version where rownum=1; +---------------------------------------------------------------------------------+ | BANNER | +---------------------------------------------------------------------------------+ | Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production | +---------------------------------------------------------------------------------+ SQLRowCount returns -1 1 rows fetched SQL> |
Um detalhe importante do ODBC Oracle que para o Servidor Zabbix consiga rodar ele e carregar as variáveis necessárias que efetuamos o export precisamos carrega-la no próprio serviço, abaixo para sabermos qual é o arquivo correto a setar essas variáveis e adicionando nele:
1 2 |
[root@zabbix ~]# grep EnvironmentFile /usr/lib/systemd/system/zabbix-server.service EnvironmentFile=-/etc/sysconfig/zabbix-server |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@zabbix ~]# vi /etc/sysconfig/zabbix-server ORACLE_HOME=/usr/lib/oracle/12.1/client64 LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib TNS_ADMIN=/etc/zabbix/odbc export ORACLE_HOME export LD_LIBRARY_PATH export TNS_ADMIN [root@zabbix ~]# systemctl restart zabbix-server [root@zabbix ~]# strings -a /proc/PID_PROCESSO_ZABBIX_SERVER/environ LANG=pt_BR.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin CONFFILE=/etc/zabbix/zabbix_server.conf ORACLE_HOME=/usr/lib/oracle/12.1/client64 LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib TNS_ADMIN=/etc/zabbix/odbc |
Criando o item no Zabbix: