15 Monitoreo ODBC

Visión General

El monioreo ODBC se realiza a través del ítem de tipo Database monitor en el Zabbix frontend.

ODBC es un programa escrito en 'C' que actúa como una API para comunicarse con los distintos DBMS (database management systems).

Zabbix puede consultar bases de datos a través de ODBC. Para esto es necesario configurar el driver para conectarse a las distintas bases de datos y realizar consultas para monitorear, por ejemplo, colas, estadísticas etc. Zabbix es compatible con unixODBC, una de las implementaciones ODBC API open source mas utilizadas.

Instalando unixODBC

Sugerimos utilizar los repositorios de paquetes que provee el SO Linux. En las distribuciones Linux mas populares unixODBC esta incluido en los repositorios configurados por defecto. De no ser así, se puede bajar de la página de ODBC: http://www.unixodbc.org/download.html.

Instalando unixODBC en systemas RedHat/Fedora usando yum:

shell> yum -y install unixODBC unixODBC-devel

Instalando unixODBC en SUSE usando zypper:

# zypper in unixODBC-devel

El paquete unixODBC-devel es necesario cuando se desea compilar Zabbix con soporte unixODBC.

Instalando drivers unixODBC

Para cada DBMS que se desea monitorear, debe instalarse un driver. unixODBC tienen una lista de drivers soportados: http://www.unixodbc.org/drivers.html. En algunas distribuciones Linux, algunos drivers están incluidos en los repositorios por defecto.

Instalando el driver MySQL en RedHat/Fedora usando yum:

shell> yum install mysql-connector-odbc

Instalando el driver MySQL en SUSE usando zypper:

zypper in MyODBC-unixODBC

Configurando unixODBC

La configuración de ODBC se hace editando los archivos odbcinst.ini y odbc.ini. Para verificar la configuración:

shell> odbcinst -j

odbcinst.ini es usado para listar los drivers ODBC:

[mysql]
       Description = ODBC for MySQL
       Driver      = /usr/lib/libmyodbc5.so

Detalles de los parámetros:

Atributo Descripción
mysql Nombre del driver.
Description Descripción del driver.
Driver Librería del driver.

odbc.ini es usado para definir los orígenes de datos:

[test]
       Description = MySQL test database
       Driver      = mysql
       Server      = 127.0.0.1
       User        = root
       Password    =
       Port        = 3306
       Database    = zabbix

Detalles de los parámetros:

Atributo Descripción
test Nombre del data source (DSN).
Description Descripción del data source.
Driver Nombre del driver- como está especificado en el archivo odbcinst.ini
Server IP/DNS del servidor de base de datos.
User Usuario para conectarse a la base de datos.
Password Clave del usuario para conectarse a la base de datos.
Port Puerto para conectarse a la base de datos.
Database Nombre de la base de datos.

Para verificar si la conexión ODBC esta funcionando, utilizamos el comando isql (incluido en el paquete unixODBC):

shell> isql test
       +---------------------------------------+
       | Connected!                            |
       |                                       |
       | sql-statement                         |
       | help [tablename]                      |
       | quit                                  |
       |                                       |
       +---------------------------------------+
       SQL>

Compilando Zabbix con soporte ODBC

Para habilitar el soporte ODBC, Zabbix debe ser compilado con las siguientes banderas:

  --with-unixodbc[=ARG]   use odbc driver against unixODBC package

Vea mas sobre la instalación Zabbix en codigo fuente.

Configuración de los ítems en el frontend de Zabbix

Configurar el item para el monitoreo ODBC.

Todos los campos obligatorios están marcados con un asterisco rojo.

Específicamente para los ítems de monitoreo de bases de datos, se deben ingresar:

Type Seleccionar Database monitor.
Key Ingrese db.odbc.select[descripción_única,Nombre_data_source]
La key es para identificar al ítem en las fórmulas de los triggers etc.
El nombre del origen de datos (source name - DSN) es el especificado en odbc.ini.
User name Nombre del usuario para conectarse a la base de datos, es opcional si está especificado en el odbc.ini
Password Password del usuario para conectarse a la base de datos, es opcional si está especificado en el odbc.ini
SQL query La consulta SQL
Type of information Es importante saber el tipo de información que la consulta va a retornar, para seleccionar correctamente el valor en este campo. Si no es el tipo correcto, el ítem se vuelve unsupported.

Importante

  • Zabbix no limita el tiempo de ejecución de la consulta. Es responsabilidad del usuario suministrar consultas que se ejecuten en un timpo rasonable
  • El parámetro Timeout es usado para el timeout del login ODBC ( dependiendo en el driver ODBC drivers el login timeout puede ser ignorado).
  • La consulta debe retornar un único valor.
  • Si la consulta retorna mas de una columna, solo se lee la primer columna.
  • Si la consulta retorna mas de una linea, solo se lee la primera.
  • La consulta debe comenzar con select.
  • La consulta no debe tener saltos de línea.
  • Vea también problemas conocidos para los chequeos ODBC.

Mensajes de error

Los mensajes de error están estructurados de la siguiente manera:

Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
       └───────────┬───────────┘  └────┬────┘ └──┬──┘└┬┘└─────────────────────────────┬─────────────────────────────────────┘
                   │                   │         │    └─ Codigo de Error Nativo       └─ Mensaje de error nativo
                   │                   │         └─ SQLState
                   └─ Msg de Zabbix    └─ Codigo de retorno ODBC

El largo del mensaje de error está limitado a 2048 bytes, por lo que el mensaje puede ser truncado. Si hay mas de un mensaje de diagnóstico de ODBC, Zabbix trata de concatenarlos, separándolos con un '|' dentro del límite de longitud.