O monitoramento ODBC corresponde ao tipo de item Monitor de banco de dados no Zabbix Frontend.
ODBC é uma API (middleware de linguagem de programação C) para acesso a Sistemas de Gerenciamento de Banco de Dados (SGBD). O conceito ODBC foi desenvolvido pela Microsoft e mais tarde portado para outras plataformas.
O Zabbix pode consultar qualquer banco de dados que seja suportado pelo ODBC. Para isso, o Zabbix não conecta diretamente o banco de dados, mas usa a interface ODBC e drivers configurados no ODBC. Esta função permite monitoramento mais eficiente de diferentes bancos de dados para múltiplos propósitos - por exemplo, verificar filas de banco de dados específicas, estatísticas de uso e assim por diante. O Zabbix suporta unixODBC, que é uma das implementações de API ODBC de código aberto mais comumente usadas.
Consulte também os problemas conhecidos para verificações ODBC.
A forma sugerida de instalação do unixODBC é usar o repositório de pacotes padrão do sistema Linux. Nas distribuições Linux mais populares o unixODBC é incluído no repositório de pacotes por padrão. Se não estiver disponível, ele pode ser obtido na página principal do unixODBC: http://www.unixodbc.org/download.html.
Para instalar o unixODBC nos sistemas baseados em RedHat/Fedora usando o gerenciador de pacotes yum:
Para instalar em sistemas baseados em SUSE usando o gerenciador de pacotes zypper:
O pacote unixODBC-devel é necessário para compilar o Zabbix com suporte a unixODBC.
Um driver de banco de dados unixODBC deve ser instalado para o banco de dados que será monitorado. O unixODBC tem uma lista de bancos de dados e drivers suportados em: http://www.unixodbc.org/drivers.html. Em algumas distribuições Linux os drivers de banco de dados estão inclusos nos repositórios de pacotes.
Instalando driver de banco de dados MySQL nos sistemas baseados em RedHat/Fedora usando o gerenciador de pacotes yum:
Instalando driver de banco de dados MySQL nos sistemas baseados em SUSE usando o gerenciador de pacotes zypper:
A configuração do ODBC é feita pela edição dos arquivos odbcinst.ini e odbc.ini. Para verificar a localização do arquivo, digite:
O odbcinst.ini é usado para listar os drivers de banco de dados ODBC instalados:
Detalhes dos parâmetros:
Atributo | Descrição |
---|---|
mysql | Nome do driver de banco de dados. |
Description | Descrição do driver de banco de dados. |
Driver | Localização da biblioteca do driver de banco de dados. |
O odbc.ini é usado para definir as fontes de dados (bancos de dados que serão consultados):
[test]
Description = MySQL test database
Driver = mysql
Server = 127.0.0.1
User = root
Password =
Port = 3306
Database = zabbix
Detalhes dos parâmetros:
Atributo | Descrição |
---|---|
test | Nome da fonte de dados (DSN). |
Description | Descrição da fonte de dados. |
Driver | Nome do driver de banco de dados - como definido em odbcinst.ini |
Server | Endereço IP/nome DNS do servidor de banco de dados. |
User | Usuário para conexão no banco de dados. |
Password | Senha para o usuário acima. |
Port | Porta de conexão ao banco de dados. |
Database | Nome do banco de dados. |
Para verificar se a conexão ODBC está funcionando corretamente, uma conexão ao banco de dados deve ser testada. Isto pode ser feito com o utilitário isql (incluso no pacote unixODBC):
shell> isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
Para habilitar o suporte a ODBC, o Zabbix deve ser compilado com a seguinte opção:
Veja mais sobre instalação do Zabbix a partir do código fonte.
Configure um item de monitoramento de banco de dados.
Todos os campos obrigatórios estão marcados com um asterisco vermelho.
Especificamente para itens de monitoramento de banco de dados você deve informar:
Tipo | Selecione Monitor de banco de dados aqui. |
Chave | Informe uma de duas chaves de item suportadas: db.odbc.select[<descrição curta única>,<dsn>,<string de conexão>] - este item é desenhado para retornar apenas um valor, p.e. a primeira coluna da primeira linha do resultado de uma consulta SQL. Se uma consulta retornar mais do que uma coluna, apenas a primeira coluna é lida. Se uma consulta retornar mais de uma linha, apenas a primeira linha é lida. db.odbc.get[<descrição curta única>,<dsn>,<string de conexão>] - este item é capaz de retornar múltiplas linhas/colunas em formato JSON. Assim ele pode ser usado como um item principal que coleta todos os dados em uma chamada de sistema, enquanto o pré-processamento JSONPath pode ser usado em itens dependentes para extrair valores individuais. Para mais informações, veja um exemplo de formato retornado, usado em descoberta de baixo-nível. Este item é suportado desde o Zabbix 4.4. A descrição única servirá para identificar o item em gatilhos, etc. Apesar de dsn e string de conexão serem parâmetros opcionais, ao menos um deles deve estar presente. Se ambos (nome da fonte de dados - DSN e string de conexão) forem definidos, o DSN será ignorado.O nome da fonte de dados, se usado, deve ser configurado como especificado em odbc.ini. A string de conexão pode conter argumentos específicos de driver. Exemplo (conexão para driver MySQL ODBC 5): => db.odbc.get[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"] |
Nome de usuário | Informe o nome do usuário do banco de dados Este parâmetro é opcional se um usuário tiver sido especificado no odbc.ini. Se é usada string de conexão, e Nome de usuário não estiver vazio, ele é adicionado à string de conexão como UID=<user> |
Senha | Informe a senha para o usuário acima Este parâmetro é opcional se a senha estiver definida em odbc.ini. Se é usada string de conexão, e o campo Senha não estiver vazio, ela é adicionada à string de conexão como PWD=<password> . |
Consulta SQL | Informe a consulta SQL (query). Note que com o item db.odbc.select[] a consulta deve retornar apenas um valor. |
Tipo de informação | É importante saber que tipo de informação será retornado pela consulta, de modo que seja selecionado corretamente aqui. Com um tipo de informação incorreto o item se tornará não suportado. |
select ...
. A sintaxe de consulta dependerá do SGBD que a processará. A sintaxe de requisição para uma 'stored procedure' deve ser iniciada com a palavra-chave call
.Mensagens de erro ODBC são estruturadas em campos para prover informação detalhada. Por exemplo:
Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
└───────────┬───────────┘ └────┬────┘ └──┬──┘└┬┘└─────────────────────────────┬─────────────────────────────────────┘
│ │ │ └─ Código de erro nativo └─ Mensagem de erro nativa
│ │ └─ SQLState
└─ Mensagem Zabbix └─ Código de retorno ODBC
Note que o comprimento da mensagem de erro é limitado a 2048 bytes, então a mensagem pode ser truncada. Se houver mais de um registro de diagnóstico ODBC o Zabbix tenta concatená-los (separados com |
) tanto quanto o limite de comprimento permitir.