14 Monitoratge ODBC
Vista general
El monitoratge ODBC correspon al tipus d'element monitoratge de la base de dades a la interfície Zabbix.
ODBC és una API intermediària en llenguatge de programació C, que permet accedir als sistemes de gestió de base de dades (SGBD). El concepte ODBC s'ha desenvolupat per Microsoft i més tard s'ha estès a altres plataformes.
Zabbix pot interrogar qualsevol base de dades admesa per ODBC. Per fer-ho, Zabbix no connecta pas directament a la base de dades, sinó que empra la interfície ODBC i els controladors configurats dins ODBC. Aquesta funció permet un monitoratge més eficient de diferents bases de dades amb múltiples finalitats - per exemple, la verificació de cues de base de dades específiques, les estadístiques d'ús, etc... Zabbix admet unixODBC, que és una de les implementacions d'API ODBC de programari lliure més emprada.
Consulteu també els problemes coneguts per les verificacions ODBC.
Instal·lació de unixODBC
Es suggereix instal·lar unixODBC amb el paquet dels repositoris de Linux, per defecte. Les distribucions més populars de Linux inclouen al repositori els paquets de unixODBC per defecte. Si no és disponible, es pot obtindre al lloc web de unixODBC: http://www.unixodbc.org/download.html.
Instal·lació de unixODBC sota sistemes Ubuntu/Debian emprant el gestor de paquets apt:
apt installl unixodbc unixodbc-dev
Instal·lació de unixODBC sota RedHat/Fedora emprant el gestor de paquets dnf:
dnf install unixODBC unixODBC-devel
Instal·lació de unixODBC sota SUSE emprant el gestor de paquets zypper:
zypper in unixODBC-devel
El paquest unixodbc-dev o unixODBC-devel és requisit per compliar Zabbix amb suport unixODBC.
Instal·lar els drivers unixODBC
S'ha d'instal·lar un controlador de base de dades unixODBC per a la base de dades que es controlarà. unixODBC té una llista de bases de dades i controladors compatibles: http://www.unixodbc.org/drivers.html. En algunes distribucions de Linux, els controladors de bases de dades s'inclouen als repositoris de paquets.
Instal·lació del controlador de base de dades MySQL als sistemes basats en Ubuntu/Debian mitjançant el gestor de paquets apt:
apt install odbc-mariadb
Instal·lació del controlador de base de dades MySQL als sistemes basats en RedHat/Fedora mitjançant el gestor de paquets dnf:
dnf install mariadb-connector-odbc
Instal·lació del controlador de base de dades MySQL als sistemes basats en SUSE mitjançant el gestor de paquets zypper:
zypper in mariadb-connector-odbc
Configuració de unixODBC
La configuració d'ODBC es fa editant els fitxers odbcinst.ini i odbc.ini. Per comprovar la ubicació del fitxer de configuració, escriviu:
odbcinst -j
odbcinst.ini s'empra per llistar els controladors de bases de dades ODBC instal·lats:
[mysql]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Detalls dels paràmetres:
| Atribut | Descripció |
|---|---|
| mysql | Nom del controlador de base de dades. |
| Description | Descripció del controlador de la base de dades. |
| Driver | Ubicació de la biblioteca de controladors de base de dades. |
odbc.ini s'empra per definir fonts de dades:
[test]
Description = MySQL test database
Driver = mysql
Server = 127.0.0.1
User = root
Password =
Port = 3306
Database = zabbix
Detalls dels paràmetres:
| Atribut | Descripció |
|---|---|
| test | Nom de la font de dades (DSN). |
| Description | Descripció de la font de dades. |
| Driver | Nom del controlador de base de dades, tal com s'especifica a odbcinst.ini |
| Server | IP/DNS del servidor de base de dades. |
| User | Usuari de la base de dades per la connexió. |
| Password | Mot de pas de l'usuari de la base de dades. |
| Port | Port de connexió a la base de dades. |
| Database | Nom de la base de dades. |
Per comprovar si la connexió ODBC funciona correctament, s'ha de provar una connexió de base de dades. Això es pot fer amb la utilitat isql (inclosa al paquet unixODBC):
isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
Compilar Zabbix amb suport ODBC
Per habilitar el suport ODBC, Zabbix s'ha de compilar amb la marca següent:
--with-unixodbc[=ARG] # Emprar el control·lador ODBCcontra el paquet unixODBC.
Més informació sobre la instal·lació de Zabbix des del codi font.
Configuració dels elements a la interfície Zabbix
Configureu un element de monitoratge de base de dades.

Tots els camps d'entrada obligatoris són marcats amb un asterisc vermell.
Específicament per als elements de monitoratge de bases de dades, heu d'introduir:
| Tipus | Trieu Monitoratge de bases de dades aquí. |
| Clau | Introduïu una de les dues claus d'element admeses: db.odbc.select[<descripció curta única>,<dsn>,<cadena de connexió>] - aquest element és dissenyat per retornar un valor, és a dir, la primera columna de la primera filera del resultat de la consulta SQL. Si una consulta retorna diverses columnes, només es llegeix la primera columna. Si una consulta retorna diverses fileres, només es llegeix la primera filera. db.odbc.get[<descripció curta única>,<dsn>,<cadena de connexió>] - aquest element és capaç de retornar diverses fileres/columnes en format JSON. Així, es pot emprar com a element principal que recull totes les dades en una única crida al sistema, mentre que el preprocessament JSONPath es pot emprar en elements dependents per extreure valors individuals. Per obtindre més informació, consulteu un exemple del format retornat emprat a la descoberta de baix nivell. Aquest element és compatible des de Zabbix 4.4. La descripció única s'emprarà per identificar l'element a triggers, etc. Tot i que "dsn" i "cadena de connexió" són paràmetres opcionals, almenys un d'ells ha d'ésser present. Si s'estableixen el nom de la font de dades (DSN) i la cadena de connexió, el DSN s'ignorarà. El nom de la font de dades, si s'empra, s'ha d'establir tal com s'especifica a odbc.ini . La cadena de connexió pot contindre un controlador amb arguments específics. db.odbc.discovery[<descripció curta única>,<dsn>,<cadena de connexió>] - aquest element retorna informació de la descoberta de baix nivell. Exemple (connexió per al controlador ODBC MySQL 5): => db.odbc.get[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"] |
| Nom d'usuari | Introduïu el nom d'usuari de la base de dades Aquest paràmetre és opcional si l'usuari s'especifica a odbc.ini. Si s'empra la cadena de connexió i el camp Nom d'usuari no és pas buit, s'afegeix al cadena de connexió com a UID=<usuari> |
| Mot de pas | Introduïu el mot de pas de l'usuari de la base de dades Aquest paràmetre és opcional si s'especifica el mot de pas a odbc.ini. Si s'empra la cadena de connexió i el camp Mot de pas no és pas buit, s'adjunta a la connexió cadena com a PWD=<mot_de_pas>.Des de Zabbix 6.0.34, s'admeten caràcters especials en aquest camp. Abans de Zabbix 6.0.34, si el mot de pas conté un punt i coma, s'hauria d'embolcallar entre claudàtors; per exemple, {P?;)*word}. Després de la 6.0.34, en aquest cas encara s'admet l'embolcall del mot de pas, però no és obligatori. El mot de pas s'adjuntarà a la cadena de connexió després del nom d'usuari com a UID=<nom d'usuari>;PWD={P?;)*paraula}. Per provar la cadena resultant, podeu executar l'ordre següent:isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}' |
| Consulta SQL | Introduïu la consulta SQL. Tingueu en compte que amb l'element db.odbc.select[], la consulta només ha de retornar un valor. |
| Tipus d'informació | És important sapiguer quin tipus d'informació retornarà la consulta, perquè aquí estigui correctament seleccionada. Amb un Tipus d'informació incorrecte, l'element no s'admetrà pas. |
Notes importants
- Els elements de monitoratge de la base de dades no seran compatibles si no s'inicia cap procés odbc poller a la configuració del servidor o del proxy. Per habilitar els enquestadors ODBC, configureu el paràmetre StartODBCPollers al fitxer de configuració del servidor Zabbix o, per a comprovacions de proxy, al [proxy](/ manual/appendix/config/zabbix_proxy) Zabbix.
- Zabbix no limita el temps d'execució de consultes. Correspon a l'usuari triar les consultes que es puguin executar en un temps raonable.
- El valor del paràmetre Timeout del servidor Zabbix s'empra com a temps d'espera de connexió ODBC (tingueu en compte que el paràmetre de temps d'espera de connexió dels controladors ODBC es pot ignorar).
- L'ordre SQL ha de retornar un conjunt de resultats com qualsevol consulta amb
select .... La sintaxi de les peticions dependrà de l'RDBMS, que les processarà. La sintaxi de consulta d'un procediment d'emmagatzematge s'ha d'iniciar amb la paraula claucall.
Missatges d'error
Els missatges d'error ODBC s'estructuren en camps per proporcionar informació detallada. Per exemple, un missatge d'error pot tindre aquesta apareça:
Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
- "
Cannot execute ODBC query" - Missatge de Zabbix - "
[SQL_ERROR]" - Codi de retorn ODBC - "
[42601]" - SQLState - "
[7]" - Codi d'error nadiu - "
[ERROR: syntax error at or near ";"; Error while executing the query]" - Missatge d'error nadiu
Veieu que la longitud del missatge d'error és limitada a 2048 octets, de manera que el missatge es pot truncar. Si hi ha diversos registres de diagnòstic ODBC, Zabbix prova de concatenar-los (separats per |) sempre que el límit de longitud ho permeti.