La monitorización de ODBC se corresponde con el tipo de elemento Monitor de base de datos en el Zabbix frontend.
ODBC es una API de software intermedio en lenguaje C para acceder a sistemas de gestión de bases de datos (DBMS). El concepto ODBC fue desarrollado por Microsoft y posteriormente fue portado a otras plataformas.
Zabbix puede consultar cualquier base de datos soportada por ODBC. Para ello, Zabbix no se conecta directamente a las bases de datos, sino que utiliza la interfaz y los controladores establecidos en ODBC. Esta función permite una supervisión más eficiente de las 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 soporta unixODBC, que es una de las implementaciones de la API ODBC de código abierto más utilizadas.
Ver también la sección problemas conocidos para las comprobaciones de cheques ODBC.
La forma sugerida de instalar unixODBC es utilizar los repositorios de paquetes por defecto del sistema operativo Linux. En las distribuciones más populares de Linux, unixODBC está incluido por defecto en el repositorio de paquetes. Si no está disponible, puede obtenerse en la página web de unixODBC:
http://www.unixodbc.org/download.html.
Instalar unixODBC en sistemas basados en RedHat/Fedora utilizando el yum gestor de paquetes:
· shell> yum -y install unixODBC unixODBC-devel
Instalación de unixODBC en sistemas basados en SUSE utilizando el gestor de paquetes zypper manager:
· # zypper in unixODBC-devel
El paquete unixODBC-devel es necesario para compilar Zabbix con soporte para unixODBC.
Debe instalarse un controlador de base de datos unixODBC para la base de datos que será monitoreada. unixODBC tiene una lista de bases de datos soportadas y controladores: http://www.unixodbc.org/drivers.html.
En algunas distribuciones de Linux los controladores de bases de datos están incluidos en los repositorios de paquetes. Instalar el driver de la base de datos MySQL en sistemas basados en RedHat/Fedora usando el gestor de paquetes yum:
· shell> yum install mysql-connector-odbc
Instalación del controlador de la base de datos MySQL en sistemas basados en SUSE utilizando el gestor de paquetes zypper zypper* gestor de paquetes:
· zypper in MyODBC-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:
· shell> odbcinst -j
odbcinst.ini se utiliza para listar los controladores de bases de datos ODBC instalados:
· [mysql] · Description = ODBC for MySQL · Driver · = /usr/lib/libmyodbc5.so
Detalles de parámetros:
Atributo | Descripción |
---|---|
mysql | Nombre driver de la base de datos. |
Description | Descripción driver de la base de datos. |
Driver | Localización de la biblioteca del driver 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 |
---|---|
*Nombre de la fuente de datos (DSN). | |
*Descripción de la fuente de datos | |
Driver | Nombre del controlador de la base de datos - como se especifica en odbcinst.ini |
Servidor: IP/DNS del servidor de la base de datos. | |
*Usuario de la base de datos para la conexión | |
*Contraseña del usuario de la base de datos | |
*Puerto de conexión de la base de datos | |
Base de datos: Nombre de la base de datos. |
Para verificar si la conexión ODBC funciona correctamente, debe probarse una conexión a la base de datos. Eso puede hacerse con la utilidad isql (incluida en el paquete unixODBC):
· shell> isql test · +---------------------------------------+ · | Connected! · | · | · | · | sql-statement · | · | help [tablename] · | · | quit · | · | · | · +---------------------------------------+ · SQL>
Para habilitar el soporte de ODBC, Zabbix debe ser compilado con la siguiente bandera:
· --with-unixodbc[=ARG] · use odbc driver against unixODBC package
Ver más sobre la instalación de Zabbix desde el código fuente
Configure a database monitoring item.
All mandatory input fields are marked with a red asterisk.
Specifically for database monitoring items you must enter:
Type | Select Database monitor here. |
Key | Enter one of the two supported item keys: db.odbc.select[<unique short description>,<dsn>,<connection string>] - this item is designed to return one value, i.e. the first column of the first row of the SQL query result. If a query returns more than one column, only the first column is read. If a query returns more than one line, only the first line is read. db.odbc.get[<unique short description>,<dsn>,<connection string>] - this item is capable of returning multiple rows/columns in JSON format. Thus it may be used as a master item that collects all data in one system call, while JSONPath preprocessing may be used in dependent items to extract individual values. For more information, see an example of the returned format, used in low-level discovery. This item is supported since Zabbix 4.4. The unique description will serve to identify the item in triggers, etc. Although dsn and connection string are optional parameters, at least one of them should be present. If both data source name (DSN) and connection string are defined, the DSN will be ignored.The data source name, if used, must be set as specified in odbc.ini. The connection string may contain driver-specific arguments. Example (connection for MySQL ODBC driver 5): => db.odbc.get[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"] |
User name | Enter the database user name This parameter is optional if user is specified in odbc.ini. If connection string is used, and User name field is not empty, it is appended to the connection string as UID=<user> |
Password | Enter the database user password This parameter is optional if password is specified in odbc.ini. If connection string is used, and Password field is not empty, it is appended to the connection string as PWD=<password> . |
SQL query | Enter the SQL query. Note that with the db.odbc.select[] item the query must return one value only. |
Type of information | It is important to know what type of information will be returned by the query, so that it is selected correctly here. With an incorrect type of information the item will turn unsupported. |
select ...
. The query syntax will depend on the RDBMS which will process them. The syntax of request to a storage procedure must be started with call
keyword.ODBC error messages are structured into fields to provide detailed information. For example:
Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
└───────────┬───────────┘ └────┬────┘ └──┬──┘└┬┘└─────────────────────────────┬─────────────────────────────────────┘
│ │ │ └─ Native error code └─ Native error message
│ │ └─ SQLState
└─ Zabbix message └─ ODBC return code
Note that the error message length is limited to 2048 bytes, so the message can be truncated. If there is more than one ODBC diagnostic record Zabbix tries to concatenate them (separated with |
) as far as the length limit allows.