2 Plugins
Übersicht
Plugins erweitern die Überwachungsfunktionen von Zabbix Agent 2. Sie sind in der Programmiersprache Go geschrieben und bieten eine Alternative zu loadable modules (in C geschrieben) sowie zu anderen Methoden zur Erweiterung der Zabbix-Funktionalität.
Diese Funktionen sind spezifisch für Agent 2 und seine Plugins:
- Geplante und flexible Intervalle sowohl für passive als auch für aktive Prüfungen
- Verwaltung der Aufgabenwarteschlange unter Berücksichtigung von Zeitplan und gleichzeitiger Aufgabenausführung
- Timeouts auf Plugin-Ebene
- Kompatibilitätsprüfung von Zabbix Agent 2 und seinen Plugins beim Start
Alle von Zabbix Agent 2 unterstützten Metriken werden von Plugins erfasst. Diese Seite beschreibt die Prinzipien der Plugin-Konfiguration aus Benutzersicht und listet sowohl integrierte als auch loadable Plugins auf, die von Zabbix bereitgestellt werden.
Seit Zabbix 6.0 müssen Plugins nicht mehr in Agent 2 integriert sein. Sie können als loadable Plugins hinzugefügt werden, was die Erstellung von Plugins für neue Metriken vereinfacht. Anweisungen zum Erstellen eigener Plugins finden Sie im Developer center und unter Example plugin for Zabbix agent 2.
Plugins konfigurieren
Dieser Abschnitt beschreibt allgemeine Prinzipien und Best Practices für die Plugin-Konfiguration.
Alle Plugins werden mit dem Parameter Plugins.* konfiguriert, der entweder Teil der Konfigurationsdatei von Zabbix Agent 2 oder der eigenen Konfigurationsdatei eines Plugins sein kann. Wenn ein Plugin eine separate Konfigurationsdatei verwendet, sollte der Pfad zu dieser Datei im Parameter Include der Konfigurationsdatei von Zabbix Agent 2 angegeben werden.
Ein typischer Plugin-Parameter hat die folgende Struktur:
Plugins.<PluginName>.<Parameter>=<Value>
Zusätzlich gibt es zwei spezielle Gruppen von Parametern:
-
Plugins.<PluginName>.Default.<Parameter>=<Value> wird zum Definieren von Standardparameterwerten verwendet.
-
Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> wird zum Definieren separater Parametersätze für verschiedene Überwachungsziele über benannte Sitzungen verwendet.
Alle Parameternamen sollten die folgenden Anforderungen erfüllen:
- es wird empfohlen, die Namen Ihrer Plugins großzuschreiben
- der Parameter sollte großgeschrieben werden
- Sonderzeichen sind nicht erlaubt
- die Verschachtelung ist nicht durch eine maximale Ebene begrenzt
- die Anzahl der Parameter ist nicht begrenzt
Um beispielsweise aktive Prüfungen ohne Scheduling- Aktualisierungsintervall unmittelbar nach dem Neustart des Agent nur für das Uptime-Plugin auszuführen, setzen Sie Plugins.Uptime.System.ForceActiveChecksOnStart=1 in der Konfigurationsdatei.
Um auf ähnliche Weise ein benutzerdefiniertes Limit für gleichzeitige Prüfungen für das CPU-Plugin festzulegen, setzen Sie Plugins.CPU.System.Capacity=N in der Konfigurationsdatei.
Standardwerte
Sie können Standardwerte für die verbindungsbezogenen Parameter (URI, Benutzername, Passwort usw.) in der Konfigurationsdatei im folgenden Format festlegen:
Plugins.<PluginName>.Default.<Parameter>=<Value>
Zum Beispiel Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017 usw.
Wenn ein Wert für einen solchen Parameter weder in einem Datenpunktschlüssel noch in den Parametern der benannten Sitzung angegeben ist, verwendet das Plugin den Standardwert. Wenn auch ein Standardparameter nicht definiert ist, werden fest codierte Standardwerte verwendet.
Wenn ein Datenpunktschlüssel keine Parameter hat, versucht Zabbix Agent 2, die Metrik mithilfe der im Abschnitt für Standardparameter definierten Werte zu erfassen.
Benannte Sitzungen
Benannte Sitzungen stellen eine zusätzliche Ebene von Plugin-Parametern dar und können verwendet werden, um für jede der überwachten Instanzen separate Sätze von Authentifizierungsparametern anzugeben. Jeder Parameter einer benannten Sitzung sollte die folgende Struktur haben:
Plugins.<PluginName>.Sessions.<SessionName>.<Parameter>=<Value>
Ein Sitzungsname kann als Parameter des Datenpunktschlüssels connString verwendet werden, anstatt URI, Benutzername und/oder Passwort separat anzugeben.
In Datenpunktschlüsseln kann der erste Parameter entweder ein connString oder eine URI sein. Wenn der erste Schlüsselparameter keinem Sitzungsnamen entspricht, wird er als URI behandelt. Beachten Sie, dass die Übergabe eingebetteter URI-Anmeldedaten im Datenpunktschlüssel nicht unterstützt wird; verwenden Sie stattdessen Parameter benannter Sitzungen.
Die Liste der verfügbaren Parameter benannter Sitzungen hängt vom Plugin ab.
Es ist möglich, Sitzungsparameter zu überschreiben, indem neue Werte in den Parametern des Datenpunktschlüssels angegeben werden (siehe Beispiel).
Wenn ein Parameter für die benannte Sitzung nicht definiert ist, verwendet Zabbix Agent 2 den im Standard-Plugin-Parameter definierten Wert.
Priorität der Parameter
Zabbix Agent 2-Plugins suchen nach Werten für verbindungsbezogene Parameter in der folgenden Reihenfolge:

- Der erste Datenpunktschlüssel-Parameter wird mit Sitzungsnamen verglichen. Wenn keine Übereinstimmung gefunden wird, wird er als tatsächlicher Wert behandelt; in diesem Fall wird Schritt 3 übersprungen. Wird eine Übereinstimmung gefunden, muss der Parameterwert (in der Regel eine URI) in der benannten Sitzung definiert sein.
- Andere Parameter werden aus dem Datenpunktschlüssel übernommen, falls sie definiert sind.
- Wenn ein Datenpunktschlüssel-Parameter (zum Beispiel das Passwort) leer ist, sucht das Plugin nach dem entsprechenden Parameter der benannten Sitzung.
- Wenn der Sitzungsparameter ebenfalls nicht angegeben ist, wird der im entsprechenden Standardparameter definierte Wert verwendet.
- Wenn alles andere fehlschlägt, verwendet das Plugin den fest kodierten Standardwert.
Beispiel 1
Überwachung der zwei Instanzen “MySQL1” und “MySQL2”.
Konfigurationsparameter:
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
Als Ergebnis dieser Konfiguration kann jeder Sitzungsname als connString in einem item key, e.g., mysql.ping[MySQL1] oder mysql.ping[MySQL2].
Beispiel 2
Bereitstellung einiger Parameter im Datenpunktschlüssel.
Konfigurationsparameter:
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
Datenpunktschlüssel: pgsql.ping[session1,new_username,,postgres]
Als Ergebnis dieser Konfiguration wird der Agent PostgreSQL mit den folgenden Parametern verbinden:
- URI aus dem Sitzungsparameter:
192.0.2.234:5432 - Benutzername aus dem Datenpunktschlüssel:
new_username - Passwort aus dem Sitzungsparameter (da es im Datenpunktschlüssel ausgelassen wird):
session_password - Datenbankname aus dem Datenpunktschlüssel:
postgres
Beispiel 3
Erfassung einer Metrik mit Standard-Konfigurationsparametern.
Konfigurationsparameter:
Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Default.User=zabbix
Plugins.PostgreSQL.Default.Password=password
Datenpunktschlüssel: pgsql.ping[,,,postgres]
Als Ergebnis dieser Konfiguration wird der Agent eine Verbindung zu PostgreSQL unter Verwendung der folgenden Parameter herstellen:
- Standard-URI:
192.0.2.234:5432 - Standard-Benutzername:
zabbix - Standard-Passwort:
password - Datenbankname aus dem Datenpunktschlüssel:
postgres
Verbindungen
Einige Plugins unterstützen das gleichzeitige Erfassen von Metriken aus mehreren Instanzen. Sowohl lokale als auch entfernte Instanzen können überwacht werden. TCP- und Unix-Socket-Verbindungen werden unterstützt.
Es wird empfohlen, Plugins so zu konfigurieren, dass Verbindungen zu Instanzen offen gehalten werden. Die Vorteile sind eine geringere Netzwerkauslastung, niedrigere Latenz sowie ein reduzierter CPU- und Speicherverbrauch aufgrund der geringeren Anzahl von Verbindungen. Die Client-Bibliothek übernimmt dies.
Der Zeitraum, für den ungenutzte Verbindungen offen bleiben sollen, kann mit dem Parameter Plugins.<PluginName>.KeepAlive festgelegt werden. Beispiel: Plugins.Memcached.KeepAlive
Integrierte Plugins
Die integrierten Plugins von Zabbix agent 2 sind sofort einsatzbereit verfügbar. Klicken Sie auf den Plugin-Namen, um zum Plugin-Repository mit zusätzlichen Informationen zu gelangen.
| Plugin-Name | Beschreibung | Unterstützte Datenpunktschlüssel | Kommentare |
|---|---|---|---|
| Agent | Metriken des verwendeten Zabbix-Agenten. | agent.hostname, agent.ping, agent.version | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| CPU | Überwachung der System-CPU (Anzahl der CPUs/CPU-Kerne, erkannte CPUs, Auslastung in Prozent). | system.cpu.discovery, system.cpu.num, system.cpu.util | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| Docker | Überwachung von Docker-Containern. | docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery, docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping |
Siehe auch: Konfigurationsparameter |
| File | Erfassung von Dateimetriken. | vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum, vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time |
Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| Kernel | Kernel-Überwachung. | kernel.maxfiles, kernel.maxproc | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| Log | Überwachung von Protokolldateien. | log, log.count, logrt, logrt.count | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. Siehe auch: Plugin-Konfigurationsparameter (Unix/Windows) |
| Memcached | Überwachung des Memcached-Servers. | memcached.ping, memcached.stats | |
| Modbus | Liest Modbus-Daten. | modbus.get | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| MQTT | Empfängt veröffentlichte Werte von MQTT-Themen. | mqtt.get | Um eine verschlüsselte Verbindung zum MQTT-Broker zu konfigurieren, geben Sie TLS-Parameter in der Agent-Konfigurationsdatei als benannte Sitzung oder Standardparameter an. Derzeit können TLS-Parameter nicht als Datenpunktschlüsselparameter übergeben werden. |
| MySQL | Überwachung von MySQL und seinen 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 |
Um eine verschlüsselte Verbindung zur Datenbank zu konfigurieren, geben Sie TLS-Parameter in der Agent-Konfigurationsdatei als benannte Sitzung oder Standardparameter an. Derzeit können TLS-Parameter nicht als Datenpunktschlüsselparameter übergeben werden. |
| NetIf | Überwachung von Netzwerkschnittstellen. | net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| Oracle | Überwachung der Oracle-Datenbank. | 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 |
Installieren Sie den Oracle Instant Client, bevor Sie das Plugin verwenden. |
| Proc | CPU-Auslastung von Prozessen in Prozent. | proc.cpu.util | Der unterstützte Schlüssel hat dieselben Parameter wie der Zabbix-Agent-Schlüssel. |
| Redis | Überwachung des Redis-Servers. | redis.config, redis.info, redis.ping, redis.slowlog.count | Um eine verschlüsselte Verbindung zu Redis zu konfigurieren, geben Sie TLS-Parameter in der Agent-Konfigurationsdatei als benannte Sitzung oder Standardparameter an. TLS-Parameter können nicht als Datenpunktschlüsselparameter übergeben werden. Beachten Sie, dass eine falsche oder anderweitig ungültige TLS-Konfiguration den Start von Zabbix agent 2 verhindern kann. Prüfen Sie daher Zertifikatsdateien, Berechtigungen und Pfade, bevor Sie TLS aktivieren. |
| Smart | S.M.A.R.T.-Überwachung. | smart.attribute.discovery, smart.disk.discovery, smart.disk.get | Die mindestens erforderliche smartctl-Version ist 7.1. Sudo-/Root-Zugriffsrechte auf smartctl sind für den Benutzer erforderlich, der Zabbix agent 2 ausführt. Das Plugin verwendet nur die folgenden Befehle: /usr/sbin/smartctl -a */usr/sbin/smartctl --scan * /usr/sbin/smartctl -j -V Unterstützte Schlüssel können mit Zabbix agent 2 nur unter Linux/Windows verwendet werden, sowohl als passive als auch als aktive Prüfung. Siehe auch: Konfigurationsparameter |
| SW | Auflistung installierter Pakete. | system.sw.packages, system.sw.packages.get | Die unterstützten Schlüssel haben dieselben Parameter wie der Zabbix-Agent-Schlüssel. |
| Swap | Größe des Auslagerungsspeichers in Byte/Prozent. | system.swap.size | Der unterstützte Schlüssel hat dieselben Parameter wie der Zabbix-Agent-Schlüssel. |
| SystemRun | Führt den angegebenen Befehl aus. | system.run | Der unterstützte Schlüssel hat dieselben Parameter wie der Zabbix-Agent-Schlüssel. Siehe auch: Plugin-Konfigurationsparameter (Unix/Windows) |
| Systemd | Überwachung von systemd-Diensten. | systemd.unit.discovery, systemd.unit.get, systemd.unit.info | |
| TCP | Prüfung der Verfügbarkeit von TCP-Verbindungen. | net.tcp.port | Der unterstützte Schlüssel hat dieselben Parameter wie der Zabbix-Agent-Schlüssel. |
| UDP | Überwachung der Verfügbarkeit und Leistung von UDP-Diensten. | net.udp.service, net.udp.service.perf | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| Uname | Abrufen von Informationen über das System. | system.hostname, system.sw.arch, system.uname | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| Uptime | Erfassung von Systemlaufzeitmetriken. | system.uptime | Der unterstützte Schlüssel hat dieselben Parameter wie der Zabbix-Agent-Schlüssel. |
| VFSDev | Erfassung von VFS-Metriken. | vfs.dev.discovery, vfs.dev.read, vfs.dev.write | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| WebCertificate | Überwachung von TLS-/SSL-Zertifikaten von Websites. | web.certificate.get | |
| WebPage | Überwachung von Webseiten. | web.page.get, web.page.perf, web.page.regexp | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| ZabbixAsync | Asynchrone Erfassung von Metriken. | 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 |
Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| ZabbixStats | Interne Metriken von Zabbix-Server/Proxy oder Anzahl verzögerter Datenpunkte in einer Warteschlange. | zabbix.stats | Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
| ZabbixSync | Synchrone Erfassung von Metriken. | 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. |
Unterstützte Schlüssel haben dieselben Parameter wie Zabbix-Agent-Schlüssel. |
Ladbare Plugins
Ladbare Plugins für Zabbix Agent 2 sind nicht standardmäßig verfügbar und müssen separat installiert werden:
- Unter Linux können Sie Pakete verwenden (z. B. Ember+ unter Ubuntu mit
apt install zabbix-agent2-plugin-ember-plusinstallieren) oder Plugins erstellen - Unter Windows können Sie über MSI installieren oder Plugins erstellen
Bevor Sie ein Plugin installieren, prüfen Sie bitte dessen README-Datei. Sie kann spezifische Anforderungen und Installationsanweisungen enthalten.
Klicken Sie auf den Plugin-Namen, um zum Plugin-Repository zu gelangen, das die README-Datei des Plugins mit zusätzlichen Informationen enthält.
| Plugin-Name | Beschreibung | Unterstützte Datenpunktschlüssel | Kommentare |
|---|---|---|---|
| Ceph | Ceph-Monitoring. | ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump, ceph.ping, ceph.pool.discovery, ceph.status |
Siehe auch Konfigurationsparameter des Ceph-Plugins. |
| Ember+ | Monitoring von Ember+. | ember.get | Siehe auch Konfigurationsparameter des Ember+-Plugins. |
| MongoDB | Monitoring von MongoDB-Servern und -Clustern (dokumentenbasierte, verteilte Datenbank). | 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 |
Um verschlüsselte Verbindungen zur Datenbank zu konfigurieren, geben Sie TLS-Parameter in der Agent-Konfigurationsdatei als Parameter einer benannten Sitzung an. Derzeit können TLS-Parameter nicht als Datenpunktschlüsselparameter übergeben werden. Siehe auch Konfigurationsparameter des MongoDB-Plugins. |
| MSSQL | Monitoring der MSSQL-Datenbank. | 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 | Um eine verschlüsselte Verbindung zur Datenbank zu konfigurieren, geben Sie TLS-Parameter in der Agent-Konfigurationsdatei als Parameter einer benannten Sitzung oder als Standardparameter an. Derzeit können TLS-Parameter nicht als Datenpunktschlüsselparameter übergeben werden. Siehe auch Konfigurationsparameter des MSSQL-Plugins. |
| NVIDIA GPU | Monitoring von NVIDIA GPU. | 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 | Siehe auch Konfigurationsparameter des NVIDIA-GPU-Plugins. |
| PostgreSQL | Monitoring von PostgreSQL und seinen 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 |
Um verschlüsselte Verbindungen zur Datenbank zu konfigurieren, geben Sie TLS-Parameter in der Agent-Konfigurationsdatei als Parameter einer benannten Sitzung oder als Standardparameter an. Derzeit können TLS-Parameter nicht als Datenpunktschlüsselparameter übergeben werden. Siehe auch Konfigurationsparameter des PostgreSQL-Plugins. |
Ladbare Plugins geben beim Start mit folgenden Optionen aus:
-V --version- Plugin-Version und Lizenzinformationen ausgeben;-h --help- Hilfeinformationen ausgeben.-t, --test <item key>— Plugin zum Testen starten (Plugin-Konfiguration wird ignoriert).