El monitoreo ODBC corresponde al tipo de métrica Monitor de base de datos en la Interfaz 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 (SGBD). El concepto ODBC fue desarrollado por Microsoft y luego portado a otras plataformas.
Zabbix puede consultar cualquier base de datos compatible con ODBC. Para hacer eso, Zabbix no se conecta directamente a las bases de datos, sino que utiliza la interfaz ODBC y controladores configurados en ODBC. Esta función permite un monitoreo más eficiente de diferentes bases de datos para múltiples propósitos - para, por ejemplo, comprobar colas de bases de datos específicas, estadísticas de uso, etc. Zabbix soporta UnixODBC, que es una de las implementaciones de los sistemas abiertos de API ODBC de origen más utilizados..
Ver también los problemas conocidos para las comprobaciones ODBC.
La forma sugerida de instalar UnixODBC es utilizar los repositorios de paquetes predeterminados del sistema operativo Linux. En las distribuciones de Linux más populares se incluye unixODBC en el repositorio de paquetes de forma predeterminada. Si no está disponible, se puede obtener en la página de inicio de unixODBC: http://www.unixodbc.org/download.html.
Instalación de unixODBC en sistemas Ubuntu/Debian usando el administrador de paquetes apt:
Instalación de unixODBC en sistemas basados en RedHat/Fedora usando el gestor de paquetes dnf:
Instalación de unixODBC en sistemas basados en SUSE usando el gestor de paquetes zypper:
El paquete unixODBC-devel es necesario para compilar Zabbix con soporte UnixODBC.
Se debe instalar un controlador de base de datos UnixODBC para la base de datos, que será monitoreada. unixODBC tiene una lista de bases de datos compatibles y controladores: http://www.unixodbc.org/drivers.html. En algunas distribuciones Linux, los controladores de bases de datos se incluyen en los repositorios de paquetes.
Instalación del controlador de base de datos MySQL en sistemas Ubuntu/Debian usando el administrador de paquetes apt:
Instalación del controlador de base de datos MySQL en sistemas basados en RedHat/Fedora usando el gestor de paquetes dnf:
Instalación del controlador de base de datos MySQL en sistemas basados en SUSE utilizando el gestor de paquetes zypper:
La configuración de ODBC se realiza editando los archivos odbcinst.ini y odbc.ini. Para verificar la ubicación del archivo de configuración, escriba:
odbcinst.ini se utiliza para listar los controladores ODBC de bases de datos instalados:
Detalles de parámetros:
Atributo | Descripción |
---|---|
mysql | Nombre del controlador de la base de datos. |
Description | Descripción del controlador de la base de datos. |
Driver | Localización de la biblioteca del controlador de la base de datos. |
odbc.ini se utiliza para definir las fuentes 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 de fuente de datos (DSN). |
Description | Descripción de la fuente de datos. |
Driver | Nombre del controlador de la base de datos: como se especifica en odbcinst.ini |
Server | IP/DNS del servidor de base de datos. |
User | Usuario de base de datos para conexión. |
Password | Contraseña de usuario de la base de datos. |
Port | Puerto de conexión de base de datos. |
Database | Nombre de la base de datos. |
Para verificar si la conexión ODBC funciona correctamente, se debe comprobar la conexión a la base de datos. Eso puede hacerse con la utilidad isql (incluida en el paquete unixODBC):
isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
Para habilitar la compatibilidad con ODBC, Zabbix debe compilarse con los siguientes parámetros:
Vea más sobre la instalación de Zabbix desde el código fuente.
Configurar una métrica para el monitoreo de base de datos.
Todos los campos de entrada obligatorios están marcados con un asterisco rojo.
Específicamente para las métricas de monitoreo de la base de datos debe ingresar:
Tipo | Seleccione aquí Monitor de base de datos . |
Clave | Ingrese una de las dos claves de elementos admitidos: db.odbc.select[<unique short description>,<dsn>,<connection string>] - este elemento está diseñado para devolver un valor, es decir, la primera columna de la primera fila del resultado de la consulta SQL. Si una consulta devuelve más de una columna, solo se lee la primera columna. Si una consulta devuelve más de una línea, solo se lee la primera línea. db.odbc.get[<unique short description>,<dsn>,<connection string>] - esta métrica es capaz de devolver múltiples filas/columnas en formato JSON. Por lo tanto, puede usarse como una métrica maestra que recopila todos los datos en una llamada al sistema, mientras que el preprocesamiento JSONPath puede usarse en métricas dependientes para extraer valores individuales. Para obtener más información, consulte un ejemplo del formato devuelto, utilizado en el descubrimiento de bajo nivel. Este elemento es compatible desde Zabbix 4.4. La descripción única servirá para identificar la métrica en iniciadores, etc. Aunque dsn y connection string son parámetros opcionales, al menos uno de ellos debe estar presente. Si se definen tanto el nombre de la fuente de datos (DSN) como la cadena de conexión, se ignorará el DSN.El nombre de la fuente de datos, si se utiliza, debe configurarse como se especifica en odbc.ini. La cadena de conexión puede contener un controlador -argumentos específicos. Ejemplo (conexión para el controlador ODBC 5 de MySQL): => db.odbc.get[Ejemplo de MySQL,,"Driver=/usr/local/lib/libmyodbc5a.so; Base de datos=maestro;Servidor=127.0.0.1;Puerto=3306"] |
Nombre de usuario | Ingrese el nombre de usuario de la base de datos Este parámetro es opcional si se especifica el usuario en odbc.ini. Si se utiliza una cadena de conexión y el campo Nombre de usuario no está vacío, se agrega a la cadena de conexión como UID=<usuario> |
Contraseña | Ingrese la contraseña del usuario de la base de datos Este parámetro es opcional si la contraseña se especifica en odbc.ini. Si se utiliza una cadena de conexión y el campo Contraseña no está vacío, se agrega a la conexión cadena como PWD=<contraseña> .Si una contraseña contiene punto y coma, debe estar entre llaves, por ejemplo: Contraseña: {P?;)*palabra} (si es real la contraseña es P?;)*word ) La contraseña se agregará a la cadena de conexión después del nombre de usuario como: UID=<nombre de usuario>;PWD={P?;)*word} Para probar la cadena resultante, ejecute: isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}' |
Consulta SQL | Ingrese la consulta SQL. Tenga en cuenta que con la métrica db.odbc.select[] la consulta debe devolver un solo valor. |
Tipo de información | Es importante saber qué tipo de información devolverá la consulta, para que aquí se seleccione correctamente. Con un tipo de información incorrecto, el elemento dejará de ser compatible. |
SELECT...
. La sintaxis de la consulta dependerá del RDBMS que la procese. La sintaxis de solicitud a un procedimiento de almacenamiento debe comenzar con la palabra clave "CALL".Los mensajes de error ODBC están estructurados en campos para proporcionar información detallada. Por ejemplo:
No se puede ejecutar la consulta ODBC: [SQL_ERROR]:[42601][7][ERROR: error de sintaxis en o cerca de ";"; Error al ejecutar la consulta]
└───────────┬───────────┘ └────┬────┘ └──┬ ──┘└┬┘└─── ──────────────────────────┬────────────── ───────── ──────────────┘
│ │ │ └─ Código de error nativo └─ Mensaje de error nativo
│ │ └─ EstadoSQL
└─ Mensaje de Zabbix └─ Código de retorno ODBC
Tenga en cuenta que la longitud del mensaje de error está limitada a 2048 bytes, por lo que el mensaje se puede truncar. Si hay más de un registro de diagnóstico ODBC Zabbix intenta concatenarlos (separados con |
) hasta donde le permita el límite de longitud.