14 Monitorizando ODBC

Descripción general

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.

Instalación de unixODBC

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:

apt install unixodbc unixodbc-dev

Instalación de unixODBC en sistemas basados en RedHat/Fedora usando el gestor de paquetes dnf:

dnf install unixODBC unixODBC-devel

Instalación de unixODBC en sistemas basados en SUSE usando el gestor de paquetes zypper:

zypper in unixODBC-devel

El paquete unixODBC-devel es necesario para compilar Zabbix con soporte UnixODBC.

Instalación de controladores 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:

apt install odbc-mariadb

Instalación del controlador de base de datos MySQL en sistemas basados en RedHat/Fedora usando el gestor de paquetes dnf:

dnf install mariadb-connector-odbc

Instalación del controlador de base de datos MySQL en sistemas basados en SUSE utilizando el gestor de paquetes zypper:

zypper in mariadb-connector-odbc

Configuración de unixODBC

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 -j

odbcinst.ini se utiliza para listar los controladores ODBC de bases de datos instalados:

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

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   |
       |    |
       +---------------------------------------+

Compilando Zabbix con soporte ODBC

Para habilitar la compatibilidad con ODBC, Zabbix debe compilarse con los siguientes parámetros:

  --with-unixodbc[=ARG] # usa el controlador odbc contra el paquete unixODBC.

Vea más sobre la instalación de Zabbix desde el código fuente.

Configuración de elementos en la interfaz de Zabbix

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.

Notas importantes

  • Las métricas de monitoreo de base de datos dejarán de ser compatibles si no se inician procesos odbc poller en la configuración del servidor o proxy. Para activar los sondeadores ODBC, configure el parámetro StartODBCPollers en el archivo de configuración del servidor Zabbix o, para comprobaciones realizadas por proxy, en el archivo de configuración del proxy Zabbix.
  • Zabbix no limita el tiempo de ejecución de la consulta. Depende del usuario elegir consultas que puedan ejecutarse en una cantidad razonable de tiempo.
  • El valor del parámetro Tiempo de espera del servidor Zabbix se utiliza como tiempo de espera de inicio de sesión ODBC (tenga en cuenta que dependiendo de los controladores ODBC, la configuración del tiempo de espera de inicio de sesión puede ser ignorado).
  • El comando SQL debe devolver un conjunto de resultados como cualquier consulta con 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".

Mensajes de error

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.