O monitoramento ODBC corresponde ao item de tipo Database monitor no frontend do Zabbix.
ODBC é uma API intermediária de programação em linguagem C para acessar sistemas de gerenciamento de banco de dados (DBMS). O conceito de ODBC foi desenvolvido pela Microsoft e posteriormente portado para outras plataformas.
O Zabbix pode consultar qualquer banco de dados compatível com ODBC. Para isso, o Zabbix não se conecta diretamente aos bancos de dados, mas usa a interface e os drivers ODBC configurados no sistema. Essa função permite um monitoramento mais eficiente de diferentes bancos de dados para diversos propósitos — por exemplo, verificar filas específicas do banco de dados, 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.
Veja também os problemas conhecidos known issues para verificações ODBC.
A maneira recomendada de instalar o unixODBC é usar os repositórios de pacotes padrão do sistema operacional Linux. Nas distribuições Linux mais populares, o unixODBC está incluído por padrão no repositório de pacotes. Se não estiver disponível, pode ser obtido na página oficial do unixODBC: http://www.unixodbc.org/download.html.
Instalando unixODBC em sistemas Ubuntu/Debian usando o gerenciador de pacotes apt:
Instalando unixODBC em sistemas baseados no RedHat/Fedora usando o gerenciador de pacotes dnf:
Instalando unixODBC em sistemas baseados no SUSE usando o gerenciador de pacotes zypper:
O pacote unixodbc-dev ou unixODBC-devel é necessário para compilar o Zabbix com suporte ao unixODBC.
Um driver de banco de dados unixODBC deve ser instalado para o banco de dados que será monitorado. O unixODBC possui uma lista de bancos de dados e drivers suportados: http://www.unixodbc.org/drivers.html. Em algumas distribuições Linux, os drivers de banco de dados estão incluídos nos repositórios de pacotes.
Instalando o driver de banco de dados MySQL em sistemas Ubuntu/Debian usando o gerenciador de pacotes apt:
Instalando o driver de banco de dados MySQL em sistemas baseados no RedHat/Fedora usando o gerenciador de pacotes dnf:
Instalando o driver de banco de dados MySQL em sistemas baseados no SUSE usando o gerenciador de pacotes zypper:
A configuração do ODBC é feita editando os arquivos odbcinst.ini e odbc.ini. Para verificar a localização dos arquivos de configuração, digite:
odbcinst.ini é usado para listar os drivers de banco de dados ODBC instalados:
Detalhes dos parâmetros:
Atributo | Descrição |
---|---|
mysql | Nome do driver do banco de dados. |
Description | Descrição do driver do banco de dados. |
Driver | Localização da biblioteca do driver do banco de dados. |
odbc.ini é usado para definir fontes de dados:
[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 do banco de dados - conforme especificado no odbcinst.ini |
Server | IP/DNS do servidor de banco de dados. |
User | Usuário do banco de dados para conexão. |
Password | Senha do usuário do banco de dados. |
Port | Porta de conexão com o banco de dados. |
Database | Nome do banco de dados. |
Para verificar se a conexão ODBC está funcionando corretamente, deve-se testar uma conexão com o banco de dados. Isso pode ser feito com a utilidade isql (incluída no pacote unixODBC):
isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
Para habilitar o suporte a ODBC, o Zabbix deve ser compilado com a seguinte flag:
Para saber mais sobre a instalação do Zabbix, consulte source code.
Configure um monitoramento de banco de dados item.
Todos os campos obrigatórios são marcados com um asterisco vermelho.
Especificamente para itens de monitoramento de banco de dados, você deve inserir:
Tipo | Selecione Monitor de banco de dados aqui. |
Chave | Insira uma das duas chaves de item suportadas: db.odbc.select[<unique short description>,<dsn>,<connection string>] - este item foi projetado para retornar um valor, ou seja, a primeira coluna da primeira linha do resultado da consulta SQL. Se a consulta retornar mais de uma linha, apenas a primeira linha será lida. db.odbc.get[<unique short description>,<dsn>,<connection string>] - Assim, pode ser usado como um item mestre que coleta todos os dados em uma chamada do sistema, enquanto o pré-processamento JSONPath pode ser usado em itens dependentes para extrair valores individuais. Para mais informações, veja um exemplo example do 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 triggers, etc. Embora dsn e connection string sejam parâmetros opcionais, pelo menos um deles deve estar presente. Se o nome da fonte de dados (DSN) e a string de conexão forem definidos, o DSN será ignorado.O nome da fonte de dados, se usado, deve ser configurado conforme especificado no odbc.ini. A string de conexão pode conter argumentos específicos do driver. Exemplo (conexão para o driver MySQL ODBC 5): => db.odbc.get[MySQL exemplo,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"] |
Nome do usuário | Insira o nome de usuário do banco de dados Este parâmetro é opcional se o usuário estiver especificado no odbc.ini. Se a string de conexão for usada, e o campo Nome de usuário não estiver vazio, ele será anexado à string de conexão comos UID=<user> |
Senha | Insira a senha do banco de dados Este parâmetro é opcional se a senha estiver especificada no odbc.ini. Se a string de conexão for usada e o campo Senha não estiver vazio, ela será anexada à string de conexão como PWD=<password> .Desde o Zabbix 6.0.34, caracteres especiais são suportados neste campo. Antes do Zabbix 6.0.34, se a senha contivesse um ponto e vírgula, ela deveria ser colocada entre chaves, por exemplo {P?;)*word} . Após o Zabbix 6.0.34, colocar a senha entre chaves neste caso ainda é suportado, mas não é obrigatório. A senha será anexada à string de conexão após o nome de usuário como UID=<username>;PWD={P?;)*word} . Para testar a string resultante, você pode executar o seguinte comando:isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}' |
Consulta SQL | Insira a consulta SQL. 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á retornada pela consulta, para que seja selecionada corretamente aqui. Com um tipo de informação incorreto, o item se tornará não suportado. |
select ...
. A sintaxe da consulta dependerá do SGBD que a processará. A sintaxe de uma solicitação a um procedimento armazenado deve começar com a palavra-chave call
.As mensagens de erro do ODBC são estruturadas em campos para fornecer informações detalhadas. Por exemplo, uma mensagem de erro pode ser assim:
Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
Cannot execute ODBC query
" - Mensagem do Zabbix[SQL_ERROR]
" - Código de retorno do ODBC[42601]
" - SQLState[7]
" - Código de erro nativo[ERROR: syntax error at or near ";"; Error while executing the query]
" - Mensagem de erro nativaObserve 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 por |
), conforme permitido pelo limite de comprimento.