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:
To install the MySQL unixODBC database driver, use the package manager for the system of your choice:
# For Ubuntu/Debian systems:
apt install odbc-mariadb
# For RedHat/Fedora-based systems:
dnf install mysql-connector-odbc
# For SUSE-based systems:
zypper install MyODBC-unixODBC
To install the database driver without a package manager, refer to MySQL documentation.
To install the PostgreSQL unixODBC database driver for RedHat/Fedora-based systems, use the dnf
package manager:
For other systems, please refer to PostgreSQL documentation.
To install the unixODBC database driver, please refer to Oracle documentation.
To install the MSSQL unixODBC database driver for RedHat/Fedora-based systems, use the dnf
package manager:
For other systems, please refer to FreeTDS user guide.
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 |
| |
+---------------------------------------+
The odbcinst.ini
file lists the installed ODBC database drivers. If odbcinst.ini
is missing, it is necessary to create it manually.
Parameter | Description |
---|---|
TEST_MYSQL | Database driver name. |
Description | Database driver description. |
Driver | Database driver library location. |
FileUsage | Determines whether the database driver supports connecting to a database server without the support for accessing local files (0); supports reading data from files (1); supports writing data to files (2). |
Threading | Thread serialization level. Supported for PostgreSQL. Since 1.6, if the driver manager is built with thread support, you may add another driver entry. |
The odbc.ini
file is used to configure data sources.
[TEST_MYSQL]
Description=MySQL Test Database
Driver=mysql
Server=127.0.0.1
User=root
Password=
Port=3306
Socket=
Database=zabbix
Parameter | Description |
---|---|
TEST_MYSQL | Data source name (DSN). |
Description | Data source description. |
Driver | Database driver name (as specified in odbcinst.ini ). |
Server | Database server IP/DNS. |
User | Database user for connection. |
Password | Database user password. |
Port | Database connection port. |
Socket | Database connection socket. |
Database | Database name. |
For other possible configuration parameter options, see MySQL documentation.
The odbc.ini
file for PostgreSQL may contain additional parameters:
[TEST_PSQL]
Description=PostgreSQL Test Database
Driver=postgresql
Username=zbx_test
Password=zabbix
Servername=127.0.0.1
Database=zabbix
Port=5432
ReadOnly=No
Protocol=7.4+
ShowOidColumn=No
FakeOidIndex=No
RowVersioning=No
ShowSystemTables=No
Fetch=Yes
BoolsAsChar=Yes
SSLmode=Require
ConnSettings=
Parameter | Description |
---|---|
ReadOnly | Specifies whether the database connection allows only read operations (SELECT queries) and restricts modifications (INSERT , UPDATE , and DELETE statements); useful for scenarios where data should remain unchanged. |
Protocol | PostgreSQL backend protocol version (ignored when using SSL connections). |
ShowOidColumn | Specifies whether to include Object ID (OID) in SQLColumns. |
FakeOidIndex | Specifies whether to create a fake unique index on OID. |
RowVersioning | Specifies whether to enable applications to detect if data has been modified by other users while you are attempting to update a row. Note that this parameter can speed up the update process, since, to update a row, every single column does not need to be specified in the WHERE clause. |
ShowSystemTables | Specifies whether the database driver should treat system tables as regular tables in SQLTables; useful for accessibility, allowing visibility into system tables. |
Fetch | Specifies whether the driver should automatically use declare cursor/fetch to handle SELECT statements and maintain a cache of 100 rows. |
BoolsAsChar | Controls the mapping of Boolean types. If set to "Yes", Bools are mapped to SQL_CHAR ; otherwise, they are mapped to SQL_BIT . |
SSLmode | Specifies the SSL mode for the connection. |
ConnSettings | Additional settings sent to the backend on connection. |
To test if the ODBC connection is working successfully, you can use the isql
utility (included in the unixODBC
package):
isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
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. |
Parameters without angle brackets are mandatory. Parameters marked with angle brackets < > are optional.
Returns one value, i.e. the first column of the first row of the SQL query result. Return value: depending on the SQL query.
Parameters:
Comments:
dsn
and connection string
are optional parameters, at least one of them must be present. If both data source name (DSN) and connection string are defined, the DSN will be ignored.
Transforms the SQL query result into a JSON array.
Return value: JSON object.
Parameters:
Comments:
dsn
and connection string
are optional parameters, at least one of them must be present. If both data source name (DSN) and connection string are defined, the DSN will be ignored.Example:
db.odbc.get[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"] #connection for MySQL ODBC driver 5
Transforms the SQL query result into a JSON array, used for low-level disovery. The column names from the query result are turned into low-level discovery macro names paired with the discovered field values. These macros can be used in creating item, trigger, etc prototypes.
Return value: JSON object.
Parameters:
Comments:
dsn
and connection string
are optional parameters, at least one of them must be present. If both data source name (DSN) and connection string are defined, the DSN will be ignored.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.