Se encuentra viendo la documentación de la versión en desarrollo, puede estar incompleta.
Esta página fue traducida automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

14 Monitorización ODBC

Descripción general

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.

Instalación de unixODBC

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

El 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:

--with-unixodbc[=ARG] # Usar el controlador ODBC con el paquete unixODBC.

Instalación de los controladores unixODBC

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.

MySQL

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

Para 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.

PostgreSQL

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 psqlODBC

Para instalar el controlador de base de datos sin un gestor de paquetes, consulte la documentación de PostgreSQL.

Oracle

Para instalar el controlador de base de datos unixODBC, consulte la documentación de Oracle.

MSSQL

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 libtdsodbc0

Para instalar el controlador de base de datos sin un gestor de paquetes, consulte la guía de usuario de FreeTDS.

Configuración de unixODBC

Para configurar unixODBC, debe editar los archivos odbcinst.ini y odbc.ini. Puede verificar la ubicación de estos archivos ejecutando el siguiente comando:

odbcinst -j

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/ODBCDataSources
odbcinst.ini

El archivo odbcinst.ini enumera los controladores de base de datos ODBC instalados. Si falta odbcinst.ini, es necesario crearlo manualmente.

[TEST_MYSQL]
       Description=ODBC para MySQL
       Driver=/usr/lib/libmyodbc5.so
       FileUsage=1
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.
odbc.ini

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.
Probando la conexión ODBC

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

Configuración de la métrica en el frontend de Zabbix

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

  • Las métricas de monitorización de bases de datos dejarán de estar soportadas si no se inician procesos odbc poller en la configuración del servidor o proxy. Para activar los ODBC pollers, establezca el parámetro 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.
  • El valor del parámetro Timeout en el formulario de configuración de la métrica se utiliza como tiempo de espera de inicio de sesión ODBC y como tiempo de espera de ejecución de la consulta. Tenga en cuenta que estas configuraciones de tiempo de espera pueden ser ignoradas si el controlador ODBC instalado no las soporta.
  • El comando SQL debe devolver un conjunto de resultados como cualquier consulta que utilice la sentencia 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.

Detalles de la clave de la métrica

Los parámetros sin corchetes angulares son obligatorios. Los parámetros marcados con corchetes angulares < > son opcionales.

db.odbc.select[<descripción corta única>,<dsn>,<cadena de conexión>]


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:

  • descripción corta única: una descripción corta única para identificar la métrica (para usar en disparadores, etc.);
  • dsn: el nombre de la fuente de datos (como se especifica en odbc.ini);
  • cadena de conexión: la cadena de conexión (puede contener argumentos específicos del controlador).

Comentarios:

  • Aunque 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.
  • 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[<descripción corta única>,<dsn>,<cadena de conexión>]


Transforma el resultado de la consulta SQL en un array JSON.
Valor de retorno: objeto JSON.

Parámetros:

  • descripción corta única: una descripción corta única para identificar la métrica (para usar en disparadores, etc.);
  • dsn: el nombre de la fuente de datos (como se especifica en odbc.ini);
  • cadena de conexión: la cadena de conexión (puede contener argumentos específicos del driver).

Comentarios:

  • Aunque 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.
  • Se pueden devolver varias filas/columnas en formato JSON. Esta métrica puede usarse como una métrica maestra que recopila todos los datos en una sola llamada al sistema, mientras que el preprocesamiento JSONPath puede usarse en métricas dependientes para extraer valores individuales. Para más información, consulte un ejemplo del formato devuelto, utilizado en el descubrimiento de bajo nivel.

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"]
db.odbc.discovery[<descripción corta única>,<dsn>,<cadena de conexión>]


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:

  • descripción corta única: una descripción corta única para identificar la métrica (para su uso en disparadores, etc.);
  • dsn: el nombre de la fuente de datos (tal como se especifica en odbc.ini);
  • cadena de conexión: la cadena de conexión (puede contener argumentos específicos del driver).

Comentarios:

  • Aunque 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.

Mensajes de error

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 nativo

Tenga 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.