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 :

  1. 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.
  2. Les autres paramètres seront pris depuis la clé d’élément s’ils sont définis.
  3. 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.
  4. 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.
  5. 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 :

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).