2 Plugins
Aperçu
Les plugins étendent les capacités de supervision de Zabbix agent 2. Écrits dans le langage de programmation Go, ils constituent une alternative aux modules chargeables (écrits en C), ainsi qu’aux autres méthodes d’extension des fonctionnalités de Zabbix.
Ces fonctionnalités sont spécifiques à agent 2 et à ses plugins :
- Intervalles planifiés et flexibles pour les vérifications passives et actives
- Gestion de la file d’attente des tâches en fonction de la planification et de la concurrence des tâches
- Timeouts au niveau du plugin
- Vérification de la compatibilité de Zabbix agent 2 et de ses plugins au démarrage
Toutes les métriques prises en charge par Zabbix agent 2 sont collectées par des plugins. Cette page décrit les principes de configuration des plugins du point de vue de l’utilisateur et répertorie les plugins intégrés et chargeables fournis par Zabbix.
Depuis Zabbix 6.0, il n’est plus nécessaire d’intégrer les plugins dans agent 2. Vous pouvez les ajouter en tant que plugins chargeables, ce qui simplifie ainsi la création de plugins pour de nouvelles métriques. Pour obtenir des instructions sur la création de vos propres plugins, consultez Developer center et Example plugin for Zabbix agent 2.
Configuration des plugins
Cette section présente les principes communs de configuration des plugins ainsi que les bonnes pratiques.
Tous les plugins sont configurés à l’aide du paramètre Plugins.*, qui peut faire partie soit du fichier de configuration de Zabbix agent 2, soit du fichier de configuration propre à un plugin. Si un plugin utilise un fichier de configuration distinct, le chemin vers ce fichier doit être spécifié dans le paramètre Include du fichier de configuration de Zabbix agent 2.
Un paramètre de plugin typique a la structure suivante :
Plugins.<PluginName>.<Parameter>=<Value>
En outre, il existe deux groupes spécifiques de paramètres :
-
Plugins.<PluginName>.Default.<Parameter>=<Value> utilisé pour définir les valeurs de paramètres par défaut.
-
Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> utilisé pour définir des ensembles distincts de paramètres pour différentes cibles de supervision via des sessions nommées.
Tous les noms de paramètres doivent respecter les exigences suivantes :
- il est recommandé de mettre les noms de vos plugins en majuscule initiale
- le paramètre doit commencer par une majuscule
- les caractères spéciaux ne sont pas autorisés
- l’imbrication n’est pas limitée par un niveau maximal
- le nombre de paramètres n’est pas limité
Par exemple, pour effectuer des vérifications actives qui n’ont pas d’intervalle de mise à jour Scheduling immédiatement après le redémarrage de l’agent uniquement pour le plugin Uptime, définissez Plugins.Uptime.System.ForceActiveChecksOnStart=1 dans le fichier de configuration.
De même, pour définir une limite personnalisée pour les vérifications simultanées du plugin CPU, définissez Plugins.CPU.System.Capacity=N dans le fichier de configuration.
Valeurs par défaut
Vous pouvez définir des valeurs par défaut pour les paramètres liés à la connexion (URI, nom d'utilisateur, mot de passe, etc.) dans le fichier de configuration au format suivant :
Plugins.<PluginName>.Default.<Parameter>=<Value>
Par exemple, Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017, etc.
Si aucune valeur n'est fournie pour un tel paramètre dans une clé d'élément ou dans les paramètres de la session nommée, le plugin utilisera la valeur par défaut. Si un paramètre par défaut n'est pas non plus défini, les valeurs codées en dur seront utilisées.
Si une clé d'élément ne comporte aucun paramètre, l'agent Zabbix 2 tentera de collecter la métrique en utilisant les valeurs définies dans la section des paramètres par défaut.
Sessions nommées
Les sessions nommées représentent un niveau supplémentaire de paramètres de plugin et peuvent être utilisées pour spécifier des ensembles distincts de paramètres d'authentification pour chacune des instances surveillées. Chaque paramètre de session nommée doit avoir la structure suivante :
Plugins.<PluginName>.Sessions.<SessionName>.<Parameter>=<Value>
Un nom de session peut être utilisé comme paramètre de clé d'élément connString au lieu de spécifier séparément un URI, un nom d'utilisateur et/ou un mot de passe.
Dans les clés d'élément, le premier paramètre peut être soit un connString, soit un URI. Si le premier paramètre de clé ne correspond à aucun nom de session, il sera traité comme un URI. Notez que la transmission d'identifiants URI intégrés dans la clé d'élément n'est pas prise en charge ; utilisez plutôt des paramètres de session nommée.
La liste des paramètres de session nommée disponibles dépend du plugin.
Il est possible de remplacer les paramètres de session en spécifiant de nouvelles valeurs dans les paramètres de clé d'élément (voir exemple).
Si un paramètre n'est pas défini pour la session nommée, Zabbix agent 2 utilisera la valeur définie dans le paramètre de plugin par défaut.
Priorité des paramètres
Les plugins de Zabbix agent 2 recherchent les valeurs des paramètres liés à la connexion dans l’ordre suivant :

- Le premier paramètre de la clé d’élément est comparé aux noms de session. Si aucune correspondance n’est trouvée, il est traité comme une valeur réelle ; dans ce cas, l’étape 3 sera ignorée. Si une correspondance est trouvée, la valeur du paramètre (généralement un URI) doit être définie dans la session nommée.
- Les autres paramètres seront pris depuis la clé d’élément s’ils sont définis.
- Si un paramètre de clé d’élément (par exemple, le mot de passe) est vide, le plugin recherchera le paramètre correspondant dans la session nommée.
- Si le paramètre de session n’est pas non plus spécifié, la valeur définie dans le paramètre par défaut correspondant sera utilisée.
- Si tout le reste échoue, le plugin utilisera la valeur par défaut codée en dur.
Exemple 1
Surveillance de deux instances « MySQL1 » et « MySQL2 ».
Paramètres de configuration :
Plugins.Mysql.Sessions.MySQL1.Uri=tcp://127.0.0.1:3306
Plugins.Mysql.Sessions.MySQL1.User=mysql1_user
Plugins.Mysql.Sessions.MySQL1.Password=unique_password
Plugins.Mysql.Sessions.MySQL2.Uri=tcp://192.0.2.0:3306
Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
Plugins.Mysql.Sessions.MySQL2.Password=different_password
À la suite de cette configuration, chaque nom de session peut être utilisé comme connString dans une clé d’élément, par exemple mysql.ping[MySQL1] ou mysql.ping[MySQL2].
Exemple 2
Fourniture de certains paramètres dans la clé d’élément.
Paramètres de configuration :
Plugins.PostgreSQL.Sessions.Session1.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Sessions.Session1.User=old_username
Plugins.PostgreSQL.Sessions.Session1.Password=session_password
Clé d’élément : pgsql.ping[session1,new_username,,postgres]
En conséquence de cette configuration, l’agent se connectera à PostgreSQL en utilisant les paramètres suivants :
- URI du paramètre de session :
192.0.2.234:5432 - Nom d’utilisateur provenant de la clé d’élément :
new_username - Mot de passe provenant du paramètre de session (puisqu’il est omis dans la clé d’élément) :
session_password - Nom de la base de données provenant de la clé d’élément :
postgres
Exemple 3
Collecte d'une métrique à l'aide des paramètres de configuration par défaut.
Paramètres de configuration :
Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Default.User=zabbix
Plugins.PostgreSQL.Default.Password=password
Clé d'élément : pgsql.ping[,,,postgres]
Suite à cette configuration, l'agent se connectera à PostgreSQL en utilisant les paramètres suivants :
- URI par défaut :
192.0.2.234:5432 - Nom d'utilisateur par défaut :
zabbix - Mot de passe par défaut :
password - Nom de la base de données provenant de la clé d'élément :
postgres
Connexions
Certains plugins prennent en charge la collecte de métriques à partir de plusieurs instances simultanément. Les instances locales et distantes peuvent toutes deux être surveillées. Les connexions TCP et Unix-socket sont prises en charge.
Il est recommandé de configurer les plugins de manière à maintenir les connexions aux instances ouvertes. Les avantages sont une réduction de la congestion du réseau, de la latence, ainsi que de l’utilisation du processeur et de la mémoire grâce au nombre plus faible de connexions. La bibliothèque cliente s’en charge.
La durée pendant laquelle les connexions inutilisées doivent rester ouvertes peut être définie par le paramètre Plugins.<PluginName>.KeepAlive. Exemple : Plugins.Memcached.KeepAlive
Plugins intégrés
Les plugins intégrés de Zabbix agent 2 sont disponibles immédiatement. Cliquez sur le nom du plugin pour accéder au dépôt du plugin contenant des informations supplémentaires.
| Nom du plugin | Description | Clés d'élément prises en charge | Commentaires |
|---|---|---|---|
| Agent | Métriques de l'agent Zabbix utilisé. | agent.hostname, agent.ping, agent.version | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| CPU | Surveillance du CPU système (nombre de CPU/cœurs CPU, CPU découverts, pourcentage d'utilisation). | system.cpu.discovery, system.cpu.num, system.cpu.util | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| Docker | Surveillance des conteneurs Docker. | docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery, docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping |
Voir aussi : Paramètres de configuration |
| File | Collecte des métriques de fichiers. | vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum, vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time |
Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| Kernel | Surveillance du noyau. | kernel.maxfiles, kernel.maxproc | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| Log | Surveillance des fichiers journaux. | log, log.count, logrt, logrt.count | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. Voir aussi : Paramètres de configuration du plugin (Unix/Windows) |
| Memcached | Surveillance du serveur Memcached. | memcached.ping, memcached.stats | |
| Modbus | Lit les données Modbus. | modbus.get | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| MQTT | Reçoit les valeurs publiées des sujets MQTT. | mqtt.get | Pour configurer une connexion chiffrée au broker MQTT, spécifiez les paramètres TLS dans le fichier de configuration de l'agent en tant que paramètres de session nommée ou paramètres par défaut. Actuellement, les paramètres TLS ne peuvent pas être transmis comme paramètres de clé d'élément. |
| MySQL | Surveillance de MySQL et de ses forks. | mysql.custom.query, mysql.db.discovery, mysql.db.size, mysql.get_status_variables, mysql.ping, mysql.replication.discovery, mysql.replication.get_slave_status, mysql.version |
Pour configurer une connexion chiffrée à la base de données, spécifiez les paramètres TLS dans le fichier de configuration de l'agent en tant que paramètres de session nommée ou paramètres par défaut. Actuellement, les paramètres TLS ne peuvent pas être transmis comme paramètres de clé d'élément. |
| NetIf | Surveillance des interfaces réseau. | net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| Oracle | Surveillance d'Oracle Database. | oracle.diskgroups.stats, oracle.diskgroups.discovery, oracle.archive.info, oracle.archive.discovery, oracle.cdb.info, oracle.custom.query, oracle.datafiles.stats, oracle.db.discovery, oracle.fra.stats, oracle.instance.info, oracle.pdb.info, oracle.pdb.discovery, oracle.pga.stats, oracle.ping, oracle.proc.stats, oracle.redolog.info, oracle.sga.stats, oracle.sessions.stats, oracle.sys.metrics, oracle.sys.params, oracle.ts.stats, oracle.ts.discovery, oracle.user.info, oracle.version |
Installez Oracle Instant Client avant d'utiliser le plugin. |
| Proc | Pourcentage d'utilisation CPU des processus. | proc.cpu.util | La clé prise en charge a les mêmes paramètres que la clé de Zabbix agent. |
| Redis | Surveillance du serveur Redis. | redis.config, redis.info, redis.ping, redis.slowlog.count | Pour configurer une connexion chiffrée à Redis, spécifiez les paramètres TLS dans le fichier de configuration de l'agent en tant que paramètres de session nommée ou paramètres par défaut. Les paramètres TLS ne peuvent pas être transmis comme paramètres de clé d'élément. Notez qu'une configuration TLS incorrecte ou autrement invalide peut empêcher le démarrage de Zabbix agent 2 ; vérifiez donc les fichiers de certificat, les autorisations et les chemins avant d'activer TLS. |
| Smart | Surveillance S.M.A.R.T. | smart.attribute.discovery, smart.disk.discovery, smart.disk.get | La version minimale requise de smartctl est 7.1. Des droits d'accès sudo/root à smartctl sont requis pour l'utilisateur exécutant Zabbix agent 2. Le plugin utilise uniquement les commandes suivantes : /usr/sbin/smartctl -a */usr/sbin/smartctl --scan * /usr/sbin/smartctl -j -V Les clés prises en charge peuvent être utilisées avec Zabbix agent 2 uniquement sous Linux/Windows, à la fois comme vérification passive et active. Voir aussi : Paramètres de configuration |
| SW | Liste des paquets installés. | system.sw.packages, system.sw.packages.get | Les clés prises en charge ont les mêmes paramètres que la clé de Zabbix agent. |
| Swap | Taille de l'espace d'échange en octets/pourcentage. | system.swap.size | La clé prise en charge a les mêmes paramètres que la clé de Zabbix agent. |
| SystemRun | Exécute la commande spécifiée. | system.run | La clé prise en charge a les mêmes paramètres que la clé de Zabbix agent. Voir aussi : Paramètres de configuration du plugin (Unix/Windows) |
| Systemd | Surveillance des services systemd. | systemd.unit.discovery, systemd.unit.get, systemd.unit.info | |
| TCP | Vérification de la disponibilité des connexions TCP. | net.tcp.port | La clé prise en charge a les mêmes paramètres que la clé de Zabbix agent. |
| UDP | Surveillance de la disponibilité et des performances des services UDP. | net.udp.service, net.udp.service.perf | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| Uname | Récupération d'informations sur le système. | system.hostname, system.sw.arch, system.uname | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| Uptime | Collecte des métriques de disponibilité du système. | system.uptime | La clé prise en charge a les mêmes paramètres que la clé de Zabbix agent. |
| VFSDev | Collecte des métriques VFS. | vfs.dev.discovery, vfs.dev.read, vfs.dev.write | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| WebCertificate | Surveillance des certificats TLS/SSL de sites web. | web.certificate.get | |
| WebPage | Surveillance des pages web. | web.page.get, web.page.perf, web.page.regexp | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| ZabbixAsync | Collecte asynchrone des métriques. | net.tcp.listen, net.udp.listen, sensor, system.boottime, system.cpu.intr, system.cpu.load, system.cpu.switches, system.hw.cpu, system.hw.macaddr, system.localtime, system.sw.os, system.swap.in, system.swap.out, vfs.fs.discovery |
Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| ZabbixStats | Métriques internes du serveur/proxy Zabbix ou nombre d'éléments retardés dans une file d'attente. | zabbix.stats | Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
| ZabbixSync | Collecte synchrone des métriques. | net.dns, net.dns.record, net.tcp.service, net.tcp.service.perf, proc.mem, proc.num, system.hw.chassis, system.hw.devices, system.sw.packages, system.users.num, vfs.dir.count, vfs.dir.size, vfs.fs.get, vfs.fs.inode, vfs.fs.size, vm.memory.size. |
Les clés prises en charge ont les mêmes paramètres que les clés de Zabbix agent. |
Plugins chargeables
Les plugins chargeables de Zabbix agent 2 ne sont pas disponibles prêts à l’emploi et doivent être installés séparément :
- Sous Linux, vous pouvez utiliser les paquets (par exemple, installer Ember+ sur Ubuntu avec
apt install zabbix-agent2-plugin-ember-plus) ou compiler les plugins - Sous Windows, vous pouvez installer depuis un MSI ou compiler les plugins
Avant d’installer un plugin, veuillez consulter son fichier README. Il peut contenir des exigences spécifiques et des instructions d’installation.
Cliquez sur le nom du plugin pour accéder au dépôt du plugin, qui contient le fichier README du plugin avec des informations supplémentaires.
| Nom du plugin | Description | Clés d’élément prises en charge | Commentaires |
|---|---|---|---|
| Ceph | Supervision de Ceph. | ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump, ceph.ping, ceph.pool.discovery, ceph.status |
Voir aussi les paramètres de configuration du plugin Ceph. |
| Ember+ | Supervision de Ember+. | ember.get | Voir aussi les paramètres de configuration du plugin Ember+. |
| MongoDB | Supervision des serveurs et clusters MongoDB (base de données distribuée orientée documents). | mongodb.cfg.discovery, mongodb.collection.stats, mongodb.collections.discovery, mongodb.collections.usage, mongodb.connpool.stats, mongodb.db.stats, mongodb.db.discovery, mongodb.jumbo_chunks.count, mongodb.oplog.stats, mongodb.ping, mongodb.rs.config, mongodb.rs.status, mongodb.server.status, mongodb.sh.discovery, mongodb.version |
Pour configurer des connexions chiffrées à la base de données, spécifiez les paramètres TLS dans le fichier de configuration de l’agent en tant que paramètres d’une session nommée. Actuellement, les paramètres TLS ne peuvent pas être transmis comme paramètres de clé d’élément. Voir aussi les paramètres de configuration du plugin MongoDB. |
| MSSQL | Supervision de la base de données MSSQL. | mssql.availability.group.get, mssql.custom.query, mssql.db.get, mssql.job.status.get, mssql.last.backup.get, mssql.local.db.get, mssql.mirroring.get, mssql.nonlocal.db.get, mssql.perfcounter.get, mssql.ping, mssql.quorum.get, mssql.quorum.member.get, mssql.replica.get, mssql.version | Pour configurer une connexion chiffrée à la base de données, spécifiez les paramètres TLS dans le fichier de configuration de l’agent en tant que paramètres d’une session nommée ou paramètres par défaut. Actuellement, les paramètres TLS ne peuvent pas être transmis comme paramètres de clé d’élément. Voir aussi les paramètres de configuration du plugin MSSQL. |
| NVIDIA GPU | Supervision des GPU NVIDIA. | nvml.device.count, nvml.device.decoder.utilization, nvml.device.ecc.mode, nvml.device.encoder.stats.get, nvml.device.encoder.utilization, nvml.device.energy.consumption, nvml.device.errors.memory, nvml.device.errors.register, nvml.device.fan.speed.avg, nvml.device.get, nvml.device.graphics.frequency, nvml.device.memory.bar1.get, nvml.device.memory.fb.get, nvml.device.memory.frequency, nvml.device.pci.utilization, nvml.device.performance.state, nvml.device.power.limit, nvml.device.power.usage, nvml.device.serial, nvml.device.sm.frequency, nvml.device.temperature, nvml.device.utilization, nvml.device.video.frequency, nvml.system.driver.version, nvml.version | Voir aussi les paramètres de configuration du plugin NVIDIA GPU. |
| PostgreSQL | Supervision de PostgreSQL et de ses forks. | pgsql.autovacuum.count, pgsql.archive, pgsql.bgwriter, pgsql.cache.hit, pgsql.connections, pgsql.custom.query, pgsql.dbstat, pgsql.dbstat.sum, pgsql.db.age, pgsql.db.bloating_tables, pgsql.db.discovery, pgsql.db.size, pgsql.locks, pgsql.oldest.xid, pgsql.ping, pgsql.queries, pgsql.replication.count, pgsql.replication.process, pgsql.replication.process.discovery, pgsql.replication.recovery_role, pgsql.replication.status, pgsql.replication_lag.b, pgsql.replication_lag.sec, pgsql.uptime, pgsql.version, pgsql.wal.stat |
Pour configurer des connexions chiffrées à la base de données, spécifiez les paramètres TLS dans le fichier de configuration de l’agent en tant que paramètres d’une session nommée ou paramètres par défaut. Actuellement, les paramètres TLS ne peuvent pas être transmis comme paramètres de clé d’élément. Voir aussi les paramètres de configuration du plugin PostgreSQL. |
Les plugins chargeables, lorsqu’ils sont lancés avec :
-V --version- affichent la version du plugin et les informations de licence ;-h --help- affichent les informations d’aide.-t, --test <item key>— lancent le plugin pour le test (configuration du plugin ignorée).