Zabbix – Monitorando Oracle com Pyora

E então chegou a hora de cair em cima do Oracle, pesquisa aqui, testa, pesquisa ali, e pá, encontrei o projeto do "Danilo Chilene (Bicofino) GITHUB WEBSITE" que realmente esta fantástico inclusive possuí LLD nas tablespaces, e é um Brasileiro opaa fala minha língua (kkkk), ai um SALVE aos Entusiastas Open Source que contribuem com projetos como este.

1 - Entendimento

O projeto do "Danilo Chilene" é um super script em Python que utiliza o cx_Oracle para comunicação no Oracle e então coleta das informações. A forma de coleta no Zabbix pode ser utilizada como ExternalCheck ou PassiveCheck/ActiveCheck ai depende da sua visão e de seu ambiente, mas se você me pergunta como eu uso? No meu ambiente tenho de tudo RedHat/CentOS/Oracle da versão 4 até o 7, ai onde que pega? as versões obsoletas que depois de escovar e garimpar o cx_Oracle não sobe nem com reza, então nesses casos extremos eu vou via ExternalCheck (Graças a Deus são poucos), e nos hosts que subo as dependências bonitinho vou via ActiveCheck (vamos liberar o server pow, joga serviço pro host).

2 - Funcionamento

Funcionamento é simples, basta chamar o script junto com os parâmetros, abaixo o help do comando e as sintaxes:

Um exemplo para checagem da versão do Oracle, uma dica explore todos argumentos:

3 - Dependências

Na documentação do projeto informa o "cx_Oracle" e o pacote "python-argparse", abaixo listo os pacotes que subo pra poder utilizar:

oracle-instantclient12.1-devel-12.1.0.2.0-1, oracle-instantclient12.1-sqlplus-12.1.0.2.0-1, oracle-instantclient12.1-devel-12.1.0.2.0-1, gcc, python-pip, python-devel, python-devel, python-argparse, cx_Oracle

O "oracle-instantclient" nas versões atuais vou direto no 12, pois tenho o cx_Oracle pelo "python-pip" na ultima versão que roda no oracle-instantclient12, caso não consiga o pacote do cx_Oracle pelo "python-pip" provavelmente terá que recorrer ao repo abaixo que possui em diversas versões do Python e Oracle, então se atente a isto versão do Python a ser utilizada, versão do OracleInstantClient e versão do cx_Oracle.

Repo cx_Oracle Old Version: https://sourceforge.net/projects/cx-oracle/files/

Repo cx_Oracle 5.2.1: https://pypi.python.org/pypi/cx_Oracle/5.2.1

4 - Instalação

Sanar as dependências e acertar uma biblioteca do Oracle, depois disso chame o script "./pyora.py" se o resultado sair o help significa que as dependências estão ok:

É possível validar se esta ok as dependências do Python conforme abaixo, se não retornar nenhum erro é =Sucesso, a ultima que importei não existe e retornou o erro para exemplo:

Criar usuário e setar permissão para consulta no Oracle:

5 - Zabbix

No Zabbix utilizando como ExternalCheck temos que jogar o "pyora.py" no diretorio parametrizado "ExternalScripts" no seu .conf do Server, e criar as chaves no modelo abaixo:

chave_externalE se utilizado como Active/PassiveCheck utilizamos UserParameter, abaixo a chave:

chave_active6 - Bônus

O cx_Oracle é possível testar a comunicação com o Oracle utilizando um script simples em Python, abaixo um modelo caso seja necessário: