O monitoramento ODBC corresponde ao tipo de item Database monitor no frontend do Zabbix.
ODBC é uma API middle-ware da linguagem de programação C para acessar sistemas de gerenciamento de banco de dados (DBMS). O conceito ODBC foi desenvolvido pela Microsoft e posteriormente portado para outras plataformas.
O Zabbix pode consultar qualquer banco de dados que seja suportado pelo ODBC. Para isso, o Zabbix não se conecta diretamente aos bancos de dados, mas usa a interface ODBC e os drivers configurados no ODBC. Isso permite um monitoramento mais eficiente de diferentes bancos de dados para múltiplos propósitos (por exemplo, verificar filas específicas do banco de dados, estatísticas de uso, etc.).
O Zabbix suporta unixODBC, que é uma das implementações de API ODBC de código aberto mais utilizadas.
Veja também: problemas conhecidos 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 no repositório de pacotes por padrão. Se os pacotes não estiverem disponíveis, os arquivos-fonte podem ser obtidos na página inicial do unixODBC: http://www.unixodbc.org/download.html.
Para instalar o unixODBC, use o gerenciador de pacotes do sistema de sua escolha:
# Para sistemas Ubuntu/Debian:
apt install unixodbc unixodbc-dev
# Para sistemas baseados em RedHat/Fedora:
dnf install unixODBC unixODBC-devel
# Para sistemas baseados em SUSE:
zypper in unixODBC-develO pacote unixodbc-dev ou unixODBC-devel é necessário para compilar o Zabbix com suporte ao unixODBC. Para habilitar o suporte ODBC, o Zabbix deve ser compilado com a seguinte opção de configuração:
O driver de banco de dados unixODBC deve ser instalado para o banco de dados que será monitorado. Para uma lista de bancos de dados e drivers suportados, consulte a página inicial do unixODBC: 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.
Para instalar o driver de banco de dados MySQL unixODBC, use o gerenciador de pacotes para o sistema de sua escolha:
# Para sistemas Ubuntu/Debian:
apt install odbc-mariadb
# Para sistemas baseados em RedHat/Fedora:
dnf install mariadb-connector-odbc
# Para sistemas baseados em SUSE:
zypper install mariadb-connector-odbcPara instalar o driver de banco de dados sem um gerenciador de pacotes, consulte a documentação do MySQL para mysql-connector-odbc, ou a documentação do MariaDB para mariadb-connector-odbc.
Para instalar o driver de banco de dados PostgreSQL unixODBC, use o gerenciador de pacotes para o sistema de sua escolha:
# Para sistemas Ubuntu/Debian:
apt install odbc-postgresql
# Para sistemas baseados em RedHat/Fedora:
dnf install postgresql-odbc
# Para sistemas baseados em SUSE:
zypper install psqlODBCPara instalar o driver de banco de dados sem um gerenciador de pacotes, consulte a documentação do PostgreSQL.
Para instalar o driver de banco de dados unixODBC, consulte a documentação da Oracle.
Para instalar o driver de banco de dados MSSQL unixODBC em sistemas Ubuntu/Debian, use o gerenciador de pacotes de sua escolha:
# Para sistemas Ubuntu/Debian:
apt install tdsodbc
# Para sistemas baseados em RedHat/Fedora (pacotes EPEL: https://docs.fedoraproject.org/en-US/epel/):
dnf install epel-release
dnf install freetds
# Para sistemas baseados em SUSE:
zypper install libtdsodbc0Para instalar o driver de banco de dados sem um gerenciador de pacotes, consulte o Guia do usuário FreeTDS.
Para configurar o unixODBC, você deve editar os arquivos odbcinst.ini e odbc.ini. Você pode verificar a localização desses arquivos executando o seguinte comando:
O resultado do comando deve conter informações semelhantes ao seguinte:
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSourcesO arquivo odbcinst.ini lista os drivers de banco de dados ODBC instalados. Se odbcinst.ini estiver ausente, é necessário criá-lo manualmente.
| Parâmetro | Descrição |
|---|---|
| TEST_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. |
| FileUsage | Determina se o driver do banco de dados suporta conexão a um servidor de banco de dados sem suporte para acesso a arquivos locais (0); suporta leitura de dados de arquivos (1); suporta gravação de dados em arquivos (2). |
| Threading | Nível de serialização de threads. Suportado para PostgreSQL. Desde a 1.6, se o gerenciador de drivers for compilado com suporte a threads, você pode adicionar outra entrada de driver. |
O arquivo odbc.ini é usado para configurar fontes de dados. Observe que a lista de parâmetros suportados depende do driver do banco de dados (por exemplo, bancos de dados Oracle podem usar ServerName em vez de Server, etc.).
[TEST_MYSQL]
Description=MySQL Test Database
Driver=mysql
Server=127.0.0.1
User=root
Password=
Port=3306
Socket=
Database=zabbix| Parâmetro | Descrição |
|---|---|
| TEST_MYSQL | Nome da fonte de dados (DSN). |
| Description | Descrição da fonte de dados. |
| Driver | Nome do driver do banco de dados (conforme especificado em 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 do banco de dados. |
| Socket | Socket de conexão do banco de dados. |
| Database | Nome do banco de dados. |
Para outras opções possíveis de parâmetros de configuração, consulte a documentação do MySQL.
O arquivo odbc.ini para PostgreSQL pode conter parâmetros adicionais:
[TEST_PSQL]
Description=PostgreSQL Test Database
Driver=postgresql
Username=zbx_test
Password=zabbix
Servername=127.0.0.1
Database=zabbix
Port=5432
ReadOnly=No
Protocol=8.0+
ShowOidColumn=No
FakeOidIndex=No
RowVersioning=No
ShowSystemTables=No
Fetch=Yes
BoolsAsChar=Yes
SSLmode=Require
ConnSettings=| Parâmetro | Descrição |
|---|---|
| ReadOnly | Especifica se a conexão com o banco de dados permite apenas operações de leitura (consultas SELECT) e restringe modificações (comandos INSERT, UPDATE e DELETE); útil para cenários em que os dados devem permanecer inalterados. |
| Protocol | Versão do protocolo backend do PostgreSQL (ignorado ao usar conexões SSL). |
| ShowOidColumn | Especifica se deve incluir o Object ID (OID) em SQLColumns. |
| FakeOidIndex | Especifica se deve criar um índice único falso no OID. |
| RowVersioning | Especifica se deve permitir que aplicativos detectem se os dados foram modificados por outros usuários enquanto você está tentando atualizar uma linha. Observe que este parâmetro pode acelerar o processo de atualização, pois, para atualizar uma linha, não é necessário especificar todas as colunas na cláusula WHERE. |
| ShowSystemTables | Especifica se o driver do banco de dados deve tratar tabelas de sistema como tabelas regulares em SQLTables; útil para acessibilidade, permitindo visibilidade nas tabelas de sistema. |
| Fetch | Especifica se o driver deve usar automaticamente declare cursor/fetch para lidar com instruções SELECT e manter um cache de 100 linhas. |
| BoolsAsChar | Controla o mapeamento de tipos Booleanos. Se definido como "Yes", Bools são mapeados para SQL_CHAR; caso contrário, são mapeados para SQL_BIT. |
| SSLmode | Especifica o modo SSL para a conexão. |
| ConnSettings | Configurações adicionais enviadas para o backend na conexão. |
Para testar se a conexão ODBC está funcionando corretamente, você pode usar o utilitário isql (incluído no pacote unixODBC):
isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+Configure um item de Monitoramento de banco de dados.

Todos os campos obrigatórios estão marcados com um asterisco vermelho.
Para itens de monitoramento de banco de dados, você deve especificar:
| Tipo | Selecione "Monitoramento de banco de dados" aqui. |
| Chave | Insira uma das chaves de item suportadas: db.odbc.select[] - este item retorna um valor (a primeira coluna da primeira linha do resultado da consulta SQL); db.odbc.get[] - este item retorna várias linhas/colunas em formato JSON; db.odbc.discovery[] - este item retorna dados de descoberta de baixo nível. |
| Nome de usuário | Insira o nome de usuário do banco de dados (até 255 caracteres). Este parâmetro é opcional se o nome de usuário do banco de dados for especificado no arquivo odbc.ini.Se uma string de conexão for usada e o campo Nome de usuário não estiver vazio, ele será adicionado à string de conexão como UID=<user>. |
| Senha | Insira a senha do usuário do banco de dados (até 255 caracteres). Este parâmetro é opcional se a senha for especificada no arquivo odbc.ini.Se uma string de conexão for usada e o campo Senha não estiver vazio, ela será adicionada à string de conexão como PWD=<password>.Caracteres especiais são suportados neste campo. A senha será adicionada à string de conexão após o nome de usuário como, por exemplo, 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. Observe que com db.odbc.select[], a consulta deve retornar apenas um valor. |
| Tipo de informação | Selecione aqui o tipo de informação que será retornado pela consulta. Se o tipo de informação for selecionado incorretamente, o item se tornará não suportado. |
Notas importantes
StartODBCPollers no arquivo de configuração do Zabbix server ou, para verificações realizadas pelo proxy, no arquivo de configuração do Zabbix proxy.select. A sintaxe da consulta dependerá do SGBD que irá processá-la. A sintaxe da requisição para uma procedure de armazenamento deve ser iniciada com a palavra-chave call.Parâmetros sem colchetes angulares são obrigatórios. Parâmetros marcados com colchetes angulares < > são opcionais.
Retorna um valor, ou seja, a primeira coluna da primeira linha do resultado da consulta SQL.
Valor de retorno: Dependendo da consulta SQL.
Parâmetros:
odbc.ini);Comentários:
dsn e string de conexão sejam parâmetros opcionais, pelo menos um deles é obrigatório; se ambos forem definidos, dsn será ignorado.
Transforma o resultado da consulta SQL em um array JSON.
Valor de retorno: objeto JSON.
Parâmetros:
odbc.ini);Comentários:
dsn e string de conexão sejam parâmetros opcionais, pelo menos um deles é obrigatório; se ambos forem definidos, dsn será ignorado.Exemplo:
# Conexão para o driver MySQL ODBC 5:
db.odbc.get[Exemplo MySQL,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"]
Transforma o resultado da consulta SQL em um array JSON, usado para descoberta de baixo nível. Os nomes das colunas do resultado da consulta são transformados em nomes de macros de descoberta de baixo nível emparelhados com os valores dos campos descobertos. Essas macros podem ser usadas na criação de protótipos de item, trigger, etc.
Valor de retorno: objeto JSON.
Parâmetros:
odbc.ini);Comentários:
dsn e string de conexão sejam parâmetros opcionais, pelo menos um deles é obrigatório; se ambos forem definidos, dsn será ignorado.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, portanto, a mensagem pode ser truncada. Se houver mais de um registro de diagnóstico ODBC, o Zabbix tenta concatená-los (separados por |) até o limite de comprimento permitir.