El monioreo ODBC se realiza a través del ítem de tipo Database monitor en el Zabbix frontend.
ODBC es un programa escrito en 'C' que actúa como una API para comunicarse con los distintos DBMS (database management systems).
Zabbix puede consultar bases de datos a través de ODBC. Para esto es necesario configurar el driver para conectarse a las distintas bases de datos y realizar consultas para monitorear, por ejemplo, colas, estadísticas etc. Zabbix es compatible con unixODBC, una de las implementaciones ODBC API open source mas utilizadas.
Sugerimos utilizar los repositorios de paquetes que provee el SO Linux. En las distribuciones Linux mas populares unixODBC esta incluido en los repositorios configurados por defecto. De no ser así, se puede bajar de la página de ODBC: http://www.unixodbc.org/download.html.
Instalando unixODBC en systemas RedHat/Fedora usando yum:
Instalando unixODBC en SUSE usando zypper:
El paquete unixODBC-devel es necesario cuando se desea compilar Zabbix con soporte unixODBC.
Para cada DBMS que se desea monitorear, debe instalarse un driver. unixODBC tienen una lista de drivers soportados: http://www.unixodbc.org/drivers.html. En algunas distribuciones Linux, algunos drivers están incluidos en los repositorios por defecto.
Instalando el driver MySQL en RedHat/Fedora usando yum:
Instalando el driver MySQL en SUSE usando zypper:
La configuración de ODBC se hace editando los archivos odbcinst.ini y odbc.ini. Para verificar la configuración:
odbcinst.ini es usado para listar los drivers ODBC:
Detalles de los parámetros:
Atributo | Descripción |
---|---|
mysql | Nombre del driver. |
Description | Descripción del driver. |
Driver | Librería del driver. |
odbc.ini es usado para definir los orígenes 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 del data source (DSN). |
Description | Descripción del data source. |
Driver | Nombre del driver- como está especificado en el archivo odbcinst.ini |
Server | IP/DNS del servidor de base de datos. |
User | Usuario para conectarse a la base de datos. |
Password | Clave del usuario para conectarse a la base de datos. |
Port | Puerto para conectarse a la base de datos. |
Database | Nombre de la base de datos. |
Para verificar si la conexión ODBC esta funcionando, utilizamos el comando isql (incluido en el paquete unixODBC):
shell> isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
Para habilitar el soporte ODBC, Zabbix debe ser compilado con las siguientes banderas:
Vea mas sobre la instalación Zabbix en codigo fuente.
Configurar el item para el monitoreo ODBC.
Todos los campos obligatorios están marcados con un asterisco rojo.
Específicamente para los ítems de monitoreo de bases de datos, se deben ingresar:
Type | Seleccionar Database monitor. |
Key | Ingrese db.odbc.select[descripción_única,Nombre_data_source] La key es para identificar al ítem en las fórmulas de los triggers etc. El nombre del origen de datos (source name - DSN) es el especificado en odbc.ini. |
User name | Nombre del usuario para conectarse a la base de datos, es opcional si está especificado en el odbc.ini |
Password | Password del usuario para conectarse a la base de datos, es opcional si está especificado en el odbc.ini |
SQL query | La consulta SQL |
Type of information | Es importante saber el tipo de información que la consulta va a retornar, para seleccionar correctamente el valor en este campo. Si no es el tipo correcto, el ítem se vuelve unsupported. |
select
.Los mensajes de error están estructurados de la siguiente manera:
Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
└───────────┬───────────┘ └────┬────┘ └──┬──┘└┬┘└─────────────────────────────┬─────────────────────────────────────┘
│ │ │ └─ Codigo de Error Nativo └─ Mensaje de error nativo
│ │ └─ SQLState
└─ Msg de Zabbix └─ Codigo de retorno ODBC
El largo del mensaje de error está limitado a 2048 bytes, por lo que el mensaje puede ser truncado. Si hay mas de un mensaje de diagnóstico de ODBC, Zabbix trata de concatenarlos, separándolos con un '|' dentro del límite de longitud.