O ODBC é uma API 'middle-ware' escrita em C para o acesso a sistemas gerenciadores de bancos de dados (DBMS). O conceito do ODBC foi desenvolvido pela Microsoft e portado para outras plataformas.
O Zabbix pode consultar qualquer banco de dados, bastando para isso que exista o suporte através do driver ODBC. É importante ressaltar que o Zabbix não acessa diretamente os SGDBs, todo o acesso é feito através das interfaces e drivers OBDC. Esta funcionalidade permite uma monitoração mais eficiente de bancos de dados para diversos propósitos - por exemplo, verificar filas no banco de dados, estatísticas, quantidade de registros, etc. O Zabbix suporta o unixODBC, que uma das implementações mais comuns da API OBDC.
A forma que sugerimos a instalação do unixODBC é através do gerenciador de pacotes do Linux. A maioria das distribuições Linux tem este pacote em seu repositório padrão. Se ele não estiver disponível em sua distribuição, poderá ser obtido na página do unixODBC: http://www.unixodbc.org/download.html.
Para instalar o unixODBC com o yum (ambientes baseados em RedHat/Centos/Fedora):
Para instalar o unixODBC com o zypper (SUSE):
O pacote 'unixODBC-devel' é necessário para compilar o Zabbix com o suporte ao unixODBC.
Para cada banco de dados, além do unixOBDC, deverá ser instalado o driver apropriado. O unixODBC possui uma lista de bancos de dados e drivers suportados: http://www.unixodbc.org/drivers.html. Em algumas distribuições os drivers OBDC são instalados em conjunto com o unixOBDC. O comando a seguir instala o driver MySQL através do yum:
A mesma instalação pode ser feita em um ambiente SUSE com o comando a seguir:
A configuração do ODBC é feita através dos arquivos odbcinst.ini e odbc.ini. Para verificar a localização dos mesmos pode ser utilizado o comando a seguir:
O arquivo odbcinst.ini é utilizado para listar os drivers OBDC instalados:
Detalhes dos parâmetros:
Atributo | Descrição |
---|---|
mysql | Nome do driver de BD. |
Description | Descrição do driver de BD. |
Driver | Localização do driver de BD. |
O arquivo odbc.ini é utilizado para definir as 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 OBDC, conforme definido no odbcinst.ini |
Server | Endereço/DNS do servidor de BD. |
User | Usuário para conexão. |
Password | Senha de conexão. |
Port | Porta do BD. |
Database | Nome da base de dados. |
Para verificar se a conexão OBDC está funcional, é possível um teste via linha de comando verificando se é possível se conectar ao banco de dados. Isso pode ser feito através do utilitário isql (incluso no pacote unixOBDC):
shell> isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
Para habilitar o suporte ao OBDC, o Zabbix precisa ser compilado com o parâmetro abaixo:
Leia mais sobre a instalação do Zabbix em instalação a partir dos fontes.
Configure um monitoramento de banco de dados item:
Para itens de monitoração de banco de dados, os dados abaixo deve ser fornecidos:
Tipo | Selecione Monitoração de banco de dados. |
Chave | Informe db.odbc.select[identificação única, ao nível de nome da fonte de dados] A identificação única serve para identificar o item em triggers e outros locais. A fonte de dados (DSN) precisa ser definida no arquivo odbc.ini. |
Nome de usuário | Informe o nome de usuário para acesso ao BD (opcional se o usuário já estiver definido em odbc.ini) |
Senha | Informe a senha para o banco de dados (opcional se a senha já for definida em obdc.ini) |
Consulta SQL | Informe a consulta |
Tipo da informação | É muito importante saber qual tipo de informação será retornada pela consulta, pois um tipo incorreto de dados nesta configuração poderá fazer com que o item passe para o estado 'não suportado'. |
select
.Consulte problemas conhecidos para verificações ODBC.
A partir do Zabbix 2.0.8 as mensagens de erro ODBC foram estruturadas em campso para prover maior detalhamento de informações. 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. `- Separador de registros
| | `-SQLState
`- Mensagem Zabbix `- Código de retorno ODBC
Observe que o tamanho da mensagem de erro é limitado a 2048 bytes, se a mensagem for maior ela será truncada. Se existir mais de um diagnóstico OBDC o Zabbix tentará concatenar os valores até o tamanho máximo permitido.