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.
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 :
Installation d'unixODBC sur des systèmes basés sur SUSE à l'aide du gestionnaire de packages zypper :
Le package unixODBC-devel est nécessaire pour compiler Zabbix avec le support 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 :
Installer le pilote de base de données MySQL sur les systèmes basés sur SUSE à l'aide du gestionnaire de packages zypper :
La configuration ODBC s'effectue en éditant les fichiers odbcinst.ini et odbc.ini. Pour vérifier l'emplacement du fichier de configuration, tapez :
odbcinst.ini est utilisé pour répertorier les pilotes de base de données ODBC installés :
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>
Pour activer le support ODBC, Zabbix doit être compilé avec le flag suivant :
En savoir plus sur l'installation de Zabbix à partir du code source.
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. |
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
.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.