This is a translation of the original English documentation page. Help us make it better.

14 Surveillance ODBC

Aperçu

La surveillance ODBC correspond au type d'élément surveillance de base de donées dans l'interface Zabbix.

ODBC est une API intermédiaire en langage de programmation C permettant d'accéder aux systèmes de gestion de base de données (SGBD). Le concept ODBC a été développé par Microsoft et plus tard porté sur d'autres plates-formes.

Zabbix peut interroger n'importe quelle base de données prise en charge par ODBC. Pour ce faire, Zabbix ne se connecte pas directement aux bases de données, mais utilise l'interface ODBC et les pilotes configurés dans ODBC. Cette fonction permet une surveillance plus efficace de différentes bases de données à des fins multiples - par exemple, la vérification de files d'attente de bases de données spécifiques, les statistiques d'utilisation, etc. Zabbix prend en charge unixODBC, qui est l'une des implémentations d'API ODBC open source les plus couramment utilisées.

Consultez également les problèmes connus pour les vérifications ODBC.

Installation d'unixODBC

La méthode suggérée pour installer unixODBC consiste à utiliser les référentiels de packages par défaut du système d'exploitation Linux. Dans les distributions Linux les plus populaires, unixODBC est inclus par défaut dans le référentiel de packages. S'il n'est pas disponible, il peut être obtenu sur la page d'accueil unixODBC : http://www.unixodbc.org/download.html.

Installation d'unixODBC sur des systèmes basés sur RedHat/Fedora à l'aide du gestionnaire de packages yum :

shell> dnf -y install unixODBC unixODBC-devel

Installation d'unixODBC sur des systèmes basés sur SUSE à l'aide du gestionnaire de packages zypper :

# zypper in unixODBC-devel

Le package unixODBC-devel est nécessaire pour compiler Zabbix avec le support unixODBC.

Installation des pilotes unixODBC

Un pilote de base de données unixODBC doit être installé pour la base de données, qui sera surveillée. unixODBC a une liste de bases de données et de pilotes pris en charge : http://www.unixodbc.org/drivers.html. Dans certaines distributions Linux, les pilotes de base de données sont inclus dans les référentiels de packages. Installer le pilote de base de données MySQL sur les systèmes basés sur RedHat/Fedora à l'aide du gestionnaire de packages yum :

shell> dnf install mysql-connector-odbc

Installer le pilote de base de données MySQL sur les systèmes basés sur SUSE à l'aide du gestionnaire de packages zypper :

zypper in MyODBC-unixODBC

Configuration d'unixODBC

La configuration ODBC s'effectue en éditant les fichiers odbcinst.ini et odbc.ini. Pour vérifier l'emplacement du fichier de configuration, tapez :

shell> odbcinst -j

odbcinst.ini est utilisé pour répertorier les pilotes de base de données ODBC installés :

[mysql]
       Description = ODBC for MySQL
       Driver      = /usr/lib/libmyodbc5.so

Détails des paramètres :

Attribut Description
mysql Nom du pilote de la base de données.
Description Description du pilote de base de données.
Driver Emplacement de la bibliothèque de pilotes de la base de données.

odbc.ini est utilisé pour définir les sources de données :

[test]
       Description = MySQL test database
       Driver      = mysql
       Server      = 127.0.0.1
       User        = root
       Password    =
       Port        = 3306
       Database    = zabbix

Détails des paramètres :

Attribut Description
test Nom de la source de données (DSN).
Description Description de la source de données.
Driver Nom du pilote de la base de données - comme spécifié dans odbcinst.ini
Server IP/DNS du serveur de base de données.
User Utilisateur de la base de données pour la connexion.
Password Mot de passe de l'utilisateur de la base de données.
Port Port de connexion à la base de données.
Database Nom de la base de données.

Pour vérifier si la connexion ODBC fonctionne correctement, une connexion à la base de données doit être testée. Cela peut être fait avec l'utilitaire isql (inclus dans le package unixODBC) :

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

Compiler Zabbix avec le support ODBC

Pour activer le support ODBC, Zabbix doit être compilé avec le flag suivant :

  --with-unixodbc[=ARG]   utiliser le pilote odbc au lieu du package unixODBC

En savoir plus sur l'installation de Zabbix à partir du code source.

Configuration des éléments dans l'interface Zabbix

Configurez un élément de surveillance de base de données.

Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.

Spécifiquement pour les éléments de surveillance de la base de données, vous devez saisir :

Type Sélectionnez Surveillance de base de données ici.
Clé Saisissez l'une des deux clés d'élément prises en charge :
db.odbc.select[<unique short description>,<dsn>,<connection string>] - cet élément est conçu pour renvoyer une valeur, c'est-à-dire la première colonne de la première ligne du résultat de la requête SQL. Si une requête renvoie plusieurs colonnes, seule la première colonne est lue. Si une requête renvoie plusieurs lignes, seule la première ligne est lue.
db.odbc.get[<unique short description>,<dsn>,<connection string>] - cet élément est capable de renvoyer plusieurs lignes/colonnes au format JSON. Ainsi, il peut être utilisé comme élément principal qui collecte toutes les données en un seul appel système, tandis que le prétraitement JSONPath peut être utilisé dans des éléments dépendants pour extraire des valeurs individuelles. Pour plus d'informations, consultez un exemple du format renvoyé, utilisé dans la découverte de bas niveau. Cet élément est pris en charge depuis Zabbix 4.4.
La description unique servira à identifier l'élément dans les déclencheurs, etc.
Bien que dsn et connection string soient des paramètres facultatifs, au moins l'un d'entre eux doit être présent. Si le nom de la source de données (DSN) et la chaîne de connexion sont définis, le DSN sera ignoré.
Le nom de la source de données, s'il est utilisé, doit être défini comme spécifié dans odbc.ini.
La chaîne de connexion peut contenir les arguments spécifiques du driver.

Exemple (connexion pour MySQL ODBC driver 5) :
=> db.odbc.get[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"]
Nom d'utilisateur Entrez le nom d'utilisateur de la base de données
Ce paramètre est facultatif si l'utilisateur est spécifié dans odbc.ini.
Si la chaîne de connexion est utilisée et que le champ Nom d'utilisateur n'est pas vide, il est ajouté à la chaîne de connexion en tant que UID =<utilisateur>
Mot de passe Entrez le mot de passe de l'utilisateur de la base de données
Ce paramètre est facultatif si le mot de passe est spécifié dans odbc.ini.
Si la chaîne de connexion est utilisée et que le champ Mot de passe n'est pas vide, il est ajouté à la chaîne de connexion sous la forme PWD= <mot de passe>.
Si un mot de passe contient un point-virgule, il doit être entouré d'accolades, par exemple :
Mot de passe : {P?;)*word} (si le mot de passe réel est P?;)*word)

Le mot de passe sera ajouté à la chaîne de connexion après le nom d'utilisateur comme ceci :
UID=<utilisateur>;PWD={P?;)*word}
< br> Pour tester la chaîne résultante, exécutez :
isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}'
Requête SQL Saisissez la requête SQL.
Notez qu'avec l'élément db.odbc.select[], la requête ne doit renvoyer qu'une seule valeur.
Type d'information Il est important de savoir quel type d'information sera retourné par la requête, afin qu'elle soit correctement sélectionnée ici. Avec un Type d'information incorrect, l'élément deviendra non pris en charge.

Remarques importantes

  • Les éléments de surveillance de la base de données ne seront plus pris en charge si aucun processus odbc poller n'est démarré dans la configuration du serveur ou du proxy. Pour activer les pollers ODBC, définissez le paramètre StartODBCPollers dans le fichier de configuration serveur Zabbix ou, pour les vérifications effectuées par proxy, dans le fichier de configuration proxy Zabbix.
  • Zabbix ne limite pas le temps d'exécution des requêtes. Il appartient à l'utilisateur de choisir des requêtes pouvant être exécutées dans un délai raisonnable.
  • La valeur du paramètre Timeout du serveur Zabbix est utilisée comme délai de connexion ODBC (notez que selon les pilotes ODBC, le paramètre de délai de connexion peut être ignoré).
  • La commande SQL doit retourner un jeu de résultats comme n'importe quelle requête avec select .... La syntaxe des requêtes dépendra du SGBDR qui les traitera. La syntaxe de requête à une procédure de stockage doit être démarrée avec le mot-clé call.

Messages d'erreur

Les messages d'erreur ODBC sont structurés en champs pour fournir des informations détaillées. Par 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

Notez que la longueur du message d'erreur est limitée à 2048 octets, le message peut donc être tronqué. S'il existe plusieurs enregistrements de diagnostic ODBC, Zabbix essaie de les concaténer (séparés par |) dans la mesure où la limite de longueur le permet.