You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

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
MySQL

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 mariadb-connector-odbc
       
       # For SUSE-based systems:
       zypper install mariadb-connector-odbc

To install the database driver without a package manager, please refer to MySQL documentation for mysql-connector-odbc, or MariaDB documentation for mariadb-connector-odbc.

PostgreSQL

To install the PostgreSQL unixODBC database driver, use the package manager for the system of your choice:

# For Ubuntu/Debian systems:
       apt install odbc-postgresql
       
       # For RedHat/Fedora-based systems:
       dnf install postgresql-odbc
       
       # For SUSE-based systems:
       zypper install psqlODBC

To install the database driver without a package manager, please refer to PostgreSQL documentation.

Oracle

To install the unixODBC database driver, please refer to Oracle documentation.

MSSQL

To install the MSSQL unixODBC database driver for Ubuntu/Debian systems, use the package manager for the system of your choice:

# For Ubuntu/Debian systems:
       apt install tdsodbc
       
       # For RedHat/Fedora-based systems (EPEL packages: https://docs.fedoraproject.org/en-US/epel/):
       dnf install epel-release
       dnf install freetds
       
       # For SUSE-based systems:
       zypper install libtdsodbc0

To install the database driver without a package manager, please refer to FreeTDS user guide.

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:

 shell > 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):

shell> isql test
       +---------------------------------------+
       | Connected!                            |
       |                                       |
       | sql-statement                         |
       | help [tablename]                      |
       | quit                                  |
       |                                       |
       +---------------------------------------+
       SQL>
odbcinst.ini

The odbcinst.ini file lists the installed ODBC database drivers. If odbcinst.ini is missing, it is necessary to create it manually.

[TEST_MYSQL]
       Description=ODBC for MySQL
       Driver=/usr/lib/libmyodbc5.so
       FileUsage=1
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.
odbc.ini

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.
Testing ODBC 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                                  |
       |                                       |
       +---------------------------------------+

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.

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 el mot de pas s'especifica a odbc.ini.
Si s'empra la cadena de connexió i el camp Mot de pas no és pas buit, s'adjunta a la cadena de connexió com a PWD= <mot de pas>.
Si un mot de pas conté un punt i coma, s'ha d'adjuntar entre claus, per exemple:
Mot de pas: {P?;)*paraula} (si el mot de pas real és P?;)*word)
< br> El mot de pas s'afegirà a la cadena de connexió després del nom d'usuari com aquesta:
UID=<user>;PWD={P?;) *word}
< br> Per provar la cadena resultant, executeu:
isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;) *paraula}'
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 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 clau call.

Item key details

Parameters without angle brackets are mandatory. Parameters marked with angle brackets < > are optional.

db.odbc.select[<unique short description>,<dsn>,<connection string>]


Returns one value, that is, the first column of the first row of the SQL query result.
Return value: Depending on the SQL query.

Parameters:

  • unique short description - a unique short description to identify the item (for use in triggers, etc.);
  • dsn - the data source name (as specified in odbc.ini);
  • connection string - the connection string (may contain driver-specific arguments).

Comments:

  • Although dsn and connection string are optional parameters, at least one of them is required; if both are defined, dsn will be ignored.
  • 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>]


Transforms the SQL query result into a JSON array.
Return value: JSON object.

Parameters:

  • unique short description - a unique short description to identify the item (for use in triggers, etc.);
  • dsn - the data source name (as specified in odbc.ini);
  • connection string - the connection string (may contain driver-specific arguments).

Comments:

  • Although dsn and connection string are optional parameters, at least one of them is required; if both are defined, dsn will be ignored.
  • Multiple rows/columns in JSON format may be returned. This item 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.

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"]
db.odbc.discovery[<unique short description>,<dsn>,<connection string>]


Transforms the SQL query result into a JSON array, used for low-level discovery. 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:

  • unique short description - a unique short description to identify the item (for use in triggers, etc.);
  • dsn - the data source name (as specified in odbc.ini);
  • connection string - the connection string (may contain driver-specific arguments).

Comments:

  • Although dsn and connection string are optional parameters, at least one of them is required; if both are defined, dsn will be ignored.

Missatges d'error

Els missatges d'error ODBC s'estructuren en camps per proporcionar informació detallada. Per exemple:

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

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.