El monitoreo ODBC corresponde al tipo de elemento 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 (DBMS). El concepto ODBC fue desarrollado por Microsoft y luego trasladado a otras plataformas.
Zabbix puede consultar cualquier base de datos 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 un monitoreo más eficiente de diferentes bases de datos para múltiples propósitos (por ejemplo, verificar colas de bases de datos específicas, 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.
::: nota importante Consulte también: problemas conocidos para verificaciones de 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, unixODBC se incluye en el repositorio de paquetes de forma predeterminada. Si los paquetes no están disponibles, los archivos fuente se pueden obtener en la página de inicio de unixODBC: http://www.unixodbc.org/download.html.
Para instalar unixODBC, use el administrador de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apto para instalar unixodbc unixodbc-dev
# Para sistemas basados en RedHat/Fedora:
dnf instala unixODBC unixODBC-devel
# Para sistemas basados en SUSE:
zypper en unixODBC-devel
::: nota importante El paquete unixodbc-dev
o unixODBC-devel
es necesario para compilar Zabbix con soporte para unixODBC. Para habilitar la compatibilidad con ODBC, Zabbix debe compilarse con la siguiente opción de configuración:
:::
Se debe instalar el controlador de base de datos UnixODBC para la base de datos que se monitoreará. Para obtener una lista de bases de datos y controladores compatibles, consulte la página de inicio de unixODBC: http://www.unixodbc.org/drivers.html.
::: nota clásica En algunas distribuciones de Linux, los controladores de bases de datos se incluyen en los repositorios de paquetes. :::
Para instalar el controlador de base de datos MySQL unixODBC, use el administrador de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apto para instalar odbc-mariadb
# Para sistemas basados en RedHat/Fedora:
dnf instala mariadb-conector-odbc
# Para sistemas basados en SUSE:
zypper instala mariadb-conector-odbc
Para instalar el controlador de la base de datos sin un administrador 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, use el administrador de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apto para instalar odbc-postgresql
# Para sistemas basados en RedHat/Fedora:
instalar dnf postgresql-odbc
# Para sistemas basados en SUSE:
instalación zypper psqlODBC
Para instalar el controlador de la base de datos sin un administrador de paquetes, consulte la [documentación de PostgreSQL] (https://www.postgresql.org/download/linux/).
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 para sistemas Ubuntu/Debian, use el administrador de paquetes para el sistema de su elección:
# Para sistemas Ubuntu/Debian:
apto para instalar tdsodbc
# Para sistemas basados en RedHat/Fedora (paquetes EPEL: https://docs.fedoraproject.org/en-US/epel/):
dnf instala epel-liberación
dnf instala freetds
# Para sistemas basados en SUSE:
instalación zypper libtdsodbc0
Para instalar el controlador de la base de datos sin un administrador de paquetes, consulte la [guía del usuario de FreeTDS] (http://www.freetds.org/userguide/).
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 debe contener información similar a la siguiente:
unixODBC 2.3.9
CONTROLADORES............: /etc/odbcinst.ini
FUENTES DE DATOS DEL SISTEMA: /etc/odbc.ini
FUENTES DE DATOS DEL ARCHIVO...: /etc/ODBCDataSources
El 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 la base de datos. |
Descripción | Descripción del controlador de la base de datos. |
Controlador | Ubicación de la biblioteca del controlador de la base de datos. |
FileUsage | Determina si el controlador de la 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 de archivos (1); admite la escritura de datos en archivos (2). |
Threading | Nivel de serialización del hilo. Compatible con PostgreSQL. Desde 1.6, si el administrador de controladores está creado con soporte para subprocesos, puede agregar otra entrada de controlador. |
El archivo odbc.ini
se utiliza para configurar fuentes de datos.
[TEST_MYSQL]
Descripción=Base de datos de prueba MySQL
Controlador=mysql
Servidor=127.0.0.1
Usuario=raíz
Contraseña=
Puerto=3306
Zócalo=
Base de datos=zabbix
Parámetro | Descripción |
---|---|
TEST_MYSQL | Nombre de la fuente de datos (DSN). |
Descripción | Descripción de la fuente de datos. |
Controlador | Nombre del controlador de la base de datos (como se especifica en odbcinst.ini ). |
Servidor | IP/DNS del servidor de base de datos. |
Usuario | Usuario de base de datos para la conexión. |
Contraseña | Contraseña de usuario de la base de datos. |
Puerto | Puerto de conexión de base de datos. |
Socket | Tocket de conexión a base de datos. |
Base de datos | Nombre de la base de datos. |
Para conocer 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]
Descripción=Base de datos de prueba PostgreSQL
Controlador=postgresql
Nombre de usuario = zbx_test
Contraseña=zabbix
Nombre del servidor = 127.0.0.1
Base de datos=zabbix
Puerto=5432
Sólo lectura=No
Protocolo=7,4+
MostrarOidColumn=No
FakeOidIndex=No
Versionado de fila=No
MostrarTablasSistema=No
Recuperar=Sí
BoolsAsChar=Sí
Modo SSL=Requerir
Configuración de conexión=
Parámetro | Descripción |
---|---|
ReadOnly | Especifica si la conexión de la base de datos permite sólo operaciones de lectura (consultas SELECT ) y restringe modificaciones (declaraciones INSERT , UPDATE y DELETE ); útil para escenarios donde los datos deben permanecer sin cambios. |
Protocolo | Versión del protocolo backend PostgreSQL (ignorado cuando se utilizan conexiones SSL). |
ShowOidColumn | Especifica si se incluye el ID de objeto (OID) en SQLColumns. |
FakeOidIndex | Especifica si se crea un índice único falso en OID. |
RowVersioning | Especifica si se debe permitir que las aplicaciones detecten si otros usuarios han modificado los datos 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 en la cláusula WHERE . |
ShowSystemTables | Especifica si el controlador de la base de datos debe tratar las tablas del sistema como tablas normales en SQLTables; útil para la accesibilidad, permitiendo visibilidad de las tablas del sistema. |
Fetch | Especifica si el controlador debe usar automáticamente declarar cursor/fetch para manejar declaraciones SELECT y mantener un caché de 100 filas. |
BoolsAsChar | Controla la asignación de tipos booleanos. Si se establece en "Sí", los bools se asignan a SQL_CHAR ; de lo contrario, se asignan a SQL_BIT . |
SSLmode | Especifica el modo SSL para la conexión. |
ConnSettings | Configuraciones adicionales enviadas al backend al conectarse. |
Para probar si la conexión ODBC funciona correctamente, puede utilizar la utilidad isql
(incluida en el paquete unixODBC
):
prueba isql
+------------------------------------------------+
| ¡Conectado! |
| |
| declaración-sql |
| ayuda [nombre de tabla] |
| dejar |
| |
+------------------------------------------------+
Configurar una métrica de monitoreo de base de datos.
Todos los campos de entrada obligatorios están marcados con un asterisco rojo.
Para las métricas de monitoreo de base de datos, debe especificar:
Tipo | Seleccione "Monitor de base de datos" aquí. |
Clave | Ingrese una de las claves de métrica admitidas: 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 detección de bajo nivel. |
Nombre de usuario | Ingrese 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, se agrega a la cadena de conexión como UID=<user> . |
Contraseña | Ingrese 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, se agrega a la cadena de conexión como PWD=<contraseña> .Desde Zabbix 7.0.3, se admiten caracteres especiales en este campo. Antes de Zabbix 7.0.3, si la contraseña contenía un punto y coma, debía estar entre llaves, por ejemplo, {P?;)*palabra} . Después de 7.0.3, aún se admite incluir la contraseña en este caso, pero no es obligatorio. La contraseña se agregará a la cadena de conexión después del nombre de usuario como UID=<nombre de usuario>;PWD={P?;)*palabra} . 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 | Ingrese 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 dejará de ser compatible. |
Los parámetros sin paréntesis 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 de retorno: Dependiendo de la consulta SQL.
Parámetros:
odbc.ini
);Comentarios:
dsn
y connection string
son parámetros opcionales, al menos uno de ellos es obligatorio; si ambos están definidos, se ignorará dsn
.
Transforma el resultado de la consulta SQL en una matriz JSON.
Valor de retorno: objeto JSON.
Parámetros:
odbc.ini
);Comentarios:
dsn
y connection string
son parámetros opcionales, al menos uno de ellos es obligatorio; si ambos están definidos, se ignorará dsn
.Ejemplo:
# Conexión para el controlador ODBC 5 de MySQL:
db.odbc.get[ejemplo de MySQL, "Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"]
Transforma el resultado de la consulta SQL en una matriz JSON, utilizada para 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 se pueden utilizar para crear prototipos de elementos, activadores, etc.
Valor de retorno: objeto JSON.
Parámetros:
odbc.ini
);Comentarios:
dsn
y connection string
son parámetros opcionales, al menos uno de ellos es obligatorio; si ambos están definidos, se ignorará dsn
.Notas importantes
StartODBCPollers
en el archivo de configuración de Zabbix servidor o, para comprobaciones realizadas por proxy, en Zabbix proxy archivo de configuración.select
. La sintaxis de la consulta dependerá del RDBMS que las procesará. La sintaxis de solicitud de un procedimiento de almacenamiento debe iniciarse con la palabra clave "call".Los mensajes de error de ODBC se estructuran 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 se puede truncar. 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.