La monitorización ODBC corresponde al tipo de métrica Database monitor en el frontend de Zabbix.
ODBC es una API de middleware en lenguaje de programación C para acceder a sistemas de gestión de bases de datos (DBMS). El concepto ODBC fue desarrollado por Microsoft y posteriormente portado a otras plataformas.
Zabbix puede consultar cualquier base de datos que sea compatible con ODBC. Para ello, Zabbix no se conecta directamente a las bases de datos, sino que utiliza la interfaz ODBC y los controladores configurados en ODBC. Esto permite una monitorización más eficiente de diferentes bases de datos para múltiples propósitos (por ejemplo, comprobar colas específicas de bases de datos, estadísticas de uso, etc.).
Zabbix es compatible con unixODBC, que es una de las implementaciones de API ODBC de código abierto más utilizadas.
Consulte también: problemas conocidos para comprobaciones ODBC.
La forma recomendada de instalar unixODBC es utilizar los repositorios de paquetes predeterminados del sistema operativo Linux. En las distribuciones de Linux más populares, unixODBC está incluido en el repositorio de paquetes por defecto. Si los paquetes no están disponibles, los archivos fuente pueden obtenerse en la página principal de unixODBC: http://www.unixodbc.org/download.html.
Para instalar unixODBC, utilice el gestor de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apt install unixodbc unixodbc-dev
# Para sistemas basados en RedHat/Fedora:
dnf install unixODBC unixODBC-devel
# Para sistemas basados en SUSE:
zypper in unixODBC-develEl paquete unixodbc-dev o unixODBC-devel es necesario para compilar Zabbix con soporte para unixODBC. Para habilitar el soporte ODBC, Zabbix debe compilarse con la siguiente opción de configuración:
El controlador de base de datos unixODBC debe instalarse para la base de datos que se va a monitorizar. Para obtener una lista de las bases de datos y controladores compatibles, consulte la página principal de unixODBC: http://www.unixodbc.org/drivers.html.
En algunas distribuciones de Linux, los controladores de base de datos están incluidos en los repositorios de paquetes.
Para instalar el controlador de base de datos MySQL unixODBC, utilice el gestor de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apt install odbc-mariadb
# Para sistemas basados en RedHat/Fedora:
dnf install mariadb-connector-odbc
# Para sistemas basados en SUSE:
zypper install mariadb-connector-odbcPara instalar el controlador de base de datos sin un gestor de paquetes, consulte la documentación de MySQL para mysql-connector-odbc, o la documentación de MariaDB para mariadb-connector-odbc.
Para instalar el controlador de base de datos unixODBC de PostgreSQL, utilice el gestor de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apt install odbc-postgresql
# Para sistemas basados en RedHat/Fedora:
dnf install postgresql-odbc
# Para sistemas basados en SUSE:
zypper install psqlODBCPara instalar el controlador de base de datos sin un gestor de paquetes, consulte la documentación de PostgreSQL.
Para instalar el controlador de base de datos unixODBC, consulte la documentación de Oracle.
Para instalar el controlador de base de datos MSSQL unixODBC en sistemas Ubuntu/Debian, utilice el gestor de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apt install tdsodbc
# Para sistemas basados en RedHat/Fedora (paquetes EPEL: https://docs.fedoraproject.org/en-US/epel/):
dnf install epel-release
dnf install freetds
# Para sistemas basados en SUSE:
zypper install libtdsodbc0Para instalar el controlador de base de datos sin un gestor de paquetes, consulte la guía de usuario de FreeTDS.
Para configurar unixODBC, debe editar los archivos odbcinst.ini y odbc.ini. Puede verificar la ubicación de estos archivos ejecutando el siguiente comando:
El resultado del comando debería contener información similar a la siguiente:
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSourcesEl archivo odbcinst.ini enumera los controladores de base de datos ODBC instalados. Si falta odbcinst.ini, es necesario crearlo manualmente.
| Parámetro | Descripción |
|---|---|
| TEST_MYSQL | Nombre del controlador de base de datos. |
| Description | Descripción del controlador de base de datos. |
| Driver | Ubicación de la biblioteca del controlador de base de datos. |
| FileUsage | Determina si el controlador de base de datos admite la conexión a un servidor de base de datos sin soporte para acceder a archivos locales (0); admite la lectura de datos desde archivos (1); admite la escritura de datos en archivos (2). |
| Threading | Nivel de serialización de hilos. Compatible con PostgreSQL. Desde la 1.6, si el gestor de controladores se compila con soporte para hilos, puede agregar otra entrada de controlador. |
El archivo odbc.ini se utiliza para configurar fuentes de datos. Tenga en cuenta que la lista de parámetros admitidos depende del controlador de base de datos (por ejemplo, las bases de datos Oracle pueden usar ServerName en lugar de Server, etc.).
[TEST_MYSQL]
Description=Base de datos de prueba MySQL
Driver=mysql
Server=127.0.0.1
User=root
Password=
Port=3306
Socket=
Database=zabbix| Parámetro | Descripción |
|---|---|
| TEST_MYSQL | Nombre de la fuente de datos (DSN). |
| Description | Descripción de la fuente de datos. |
| Driver | Nombre del controlador de base de datos (como se especifica en odbcinst.ini). |
| Server | IP/DNS del servidor de base de datos. |
| User | Usuario de la base de datos para la conexión. |
| Password | Contraseña del usuario de la base de datos. |
| Port | Puerto de conexión a la base de datos. |
| Socket | Socket de conexión a la base de datos. |
| Database | Nombre de la base de datos. |
Para otras posibles opciones de parámetros de configuración, consulte la documentación de MySQL.
El archivo odbc.ini para PostgreSQL puede contener parámetros adicionales:
[TEST_PSQL]
Description=Base de datos de prueba de PostgreSQL
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 | Descripción |
|---|---|
| ReadOnly | Especifica si la conexión a la base de datos permite solo operaciones de lectura (consultas SELECT) y restringe las modificaciones (sentencias INSERT, UPDATE y DELETE); útil para escenarios donde los datos deben permanecer sin cambios. |
| Protocol | Versión del protocolo backend de PostgreSQL (se ignora al usar conexiones SSL). |
| ShowOidColumn | Especifica si se debe incluir el Object ID (OID) en SQLColumns. |
| FakeOidIndex | Especifica si se debe crear un índice único falso en OID. |
| RowVersioning | Especifica si se debe permitir que las aplicaciones detecten si los datos han sido modificados por otros usuarios mientras intenta actualizar una fila. Tenga en cuenta que este parámetro puede acelerar el proceso de actualización, ya que, para actualizar una fila, no es necesario especificar cada columna individual en la cláusula WHERE. |
| ShowSystemTables | Especifica si el controlador de base de datos debe tratar las tablas del sistema como tablas normales en SQLTables; útil para la accesibilidad, permitiendo la visibilidad en las tablas del sistema. |
| Fetch | Especifica si el controlador debe usar automáticamente declare cursor/fetch para manejar sentencias SELECT y mantener una caché de 100 filas. |
| BoolsAsChar | Controla el mapeo de tipos Booleanos. Si se establece en "Yes", los Booleanos se mapean a SQL_CHAR; de lo contrario, se mapean a SQL_BIT. |
| SSLmode | Especifica el modo SSL para la conexión. |
| ConnSettings | Configuraciones adicionales enviadas al backend en la conexión. |
Para comprobar si la conexión ODBC funciona correctamente, puede utilizar la utilidad isql (incluida en el paquete unixODBC):
isql test
+---------------------------------------+
| ¡Conectado! |
| |
| sentencia-sql |
| help [nombretabla] |
| quit |
| |
+---------------------------------------+Configure una métrica de monitorización de base de datos.

Todos los campos obligatorios están marcados con un asterisco rojo.
Para las métricas de monitorización de base de datos, debe especificar:
| Tipo | Seleccione "Monitorización de base de datos" aquí. |
| Clave | Introduzca una de las claves de métrica soportadas: db.odbc.select[] - esta métrica devuelve un valor (la primera columna de la primera fila del resultado de la consulta SQL); db.odbc.get[] - esta métrica devuelve varias filas/columnas en formato JSON; db.odbc.discovery[] - esta métrica devuelve datos de bajo nivel de descubrimiento. |
| Nombre de usuario | Introduzca el nombre de usuario de la base de datos (hasta 255 caracteres). Este parámetro es opcional si el nombre de usuario de la base de datos se especifica en el archivo odbc.ini.Si se utiliza una cadena de conexión y el campo Nombre de usuario no está vacío, entonces se añade a la cadena de conexión como UID=<usuario>. |
| Contraseña | Introduzca la contraseña del usuario de la base de datos (hasta 255 caracteres). Este parámetro es opcional si la contraseña se especifica en el archivo odbc.ini.Si se utiliza una cadena de conexión y el campo Contraseña no está vacío, entonces se añade a la cadena de conexión como PWD=<contraseña>.Se admiten caracteres especiales en este campo. La contraseña se añadirá a la cadena de conexión después del nombre de usuario como, por ejemplo, UID=<usuario>;PWD=P?;)*word.Para probar la cadena resultante, puede ejecutar el siguiente comando: isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD=P?;)*word' |
| Consulta SQL | Introduzca la consulta SQL. Tenga en cuenta que con db.odbc.select[], la consulta debe devolver solo un valor. |
| Tipo de información | Seleccione aquí el tipo de información que devolverá la consulta. Si el tipo de información se selecciona incorrectamente, la métrica quedará como no soportada. |
Notas importantes
StartODBCPollers en el archivo de configuración de Zabbix server o, para comprobaciones realizadas por el proxy, en el archivo de configuración de Zabbix proxy.select. La sintaxis de la consulta dependerá del SGBDR que las procese. La sintaxis de la petición a un procedimiento almacenado debe comenzar con la palabra clave call.Los parámetros sin corchetes angulares son obligatorios. Los parámetros marcados con corchetes angulares < > son opcionales.
Devuelve un valor, es decir, la primera columna de la primera fila del resultado de la consulta SQL.
Valor devuelto: Dependiendo de la consulta SQL.
Parámetros:
odbc.ini);Comentarios:
dsn y cadena de conexión son parámetros opcionales, se requiere al menos uno de ellos; si ambos están definidos, se ignorará dsn.
Transforma el resultado de la consulta SQL en un array JSON.
Valor de retorno: objeto JSON.
Parámetros:
odbc.ini);Comentarios:
dsn y cadena de conexión son parámetros opcionales, se requiere al menos uno de ellos; si ambos están definidos, se ignorará dsn.Ejemplo:
# Conexión para el driver MySQL ODBC 5:
db.odbc.get[Ejemplo MySQL,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"]
Transforma el resultado de la consulta SQL en un array JSON, utilizado para el descubrimiento de bajo nivel. Los nombres de las columnas del resultado de la consulta se convierten en nombres de macros de descubrimiento de bajo nivel emparejados con los valores de los campos descubiertos. Estas macros pueden utilizarse para crear prototipos de métricas, disparadores, etc.
Valor de retorno: objeto JSON.
Parámetros:
odbc.ini);Comentarios:
dsn y cadena de conexión son parámetros opcionales, se requiere al menos uno de ellos; si ambos están definidos, se ignorará dsn.Los mensajes de error de ODBC están estructurados en campos para proporcionar información detallada. Por ejemplo, un mensaje de error podría verse así:
No se puede ejecutar la consulta ODBC: [SQL_ERROR]:[42601][7][ERROR: error de sintaxis en o cerca de ";"; Error al ejecutar la consulta]No se puede ejecutar la consulta ODBC" - Mensaje de Zabbix[SQL_ERROR]" - Código de retorno de ODBC[42601]" - SQLState[7]" - Código de error nativo[ERROR: error de sintaxis en o cerca de ";"; Error al ejecutar la consulta]" - Mensaje de error nativoTenga en cuenta que la longitud del mensaje de error está limitada a 2048 bytes, por lo que el mensaje puede ser truncado. Si hay más de un registro de diagnóstico ODBC, Zabbix intenta concatenarlos (separados con |) hasta donde lo permita el límite de longitud.