2 Plugin

Panoramica

I plugin estendono le capacità di monitoraggio di Zabbix agent 2. Sviluppati nel linguaggio di programmazione Go, forniscono un'alternativa ai moduli caricabili (scritti in C) e ad altri metodi per estendere le funzionalità di Zabbix.

Queste funzionalità sono specifiche di agent 2 e dei suoi plugin:

  • Intervalli pianificati e flessibili sia per i controlli passivi sia per quelli attivi
  • Gestione della coda delle attività in relazione alla pianificazione e alla concorrenza delle attività
  • Timeout a livello di plugin
  • Verifica di compatibilità di Zabbix agent 2 e dei suoi plugin all'avvio

Tutte le metriche supportate da Zabbix agent 2 vengono raccolte dai plugin. Questa pagina descrive i principi di configurazione dei plugin dal punto di vista dell'utente e elenca sia i plugin integrati sia quelli caricabili forniti da Zabbix.

A partire da Zabbix 6.0, i plugin non devono più essere compilati all'interno di agent 2. È possibile aggiungerli come plugin caricabili, semplificando così la creazione di plugin per nuove metriche. Per istruzioni su come creare i propri plugin, vedere Developer center e Example plugin for Zabbix agent 2.

Configurazione dei plugin

Questa sezione fornisce i principi generali di configurazione dei plugin e le best practice.

Tutti i plugin vengono configurati usando il parametro Plugins.* , che può far parte del file di configurazione di Zabbix agent 2 oppure del file di configurazione del plugin stesso. Se un plugin utilizza un file di configurazione separato, il percorso di questo file deve essere specificato nel parametro Include del file di configurazione di Zabbix agent 2.

Un tipico parametro del plugin ha la seguente struttura:

Plugins.<PluginName>.<Parameter>=<Value>

Inoltre, esistono due gruppi specifici di parametri:

  • Plugins.<PluginName>.Default.<Parameter>=<Value> usato per definire i valori predefiniti dei parametri.

  • Plugins.<PluginName>.<SessionName>.<Parameter>=<Value> usato per definire insiemi separati di parametri per diversi target di monitoraggio tramite sessioni denominate.

Tutti i nomi dei parametri devono rispettare i seguenti requisiti:

  • si consiglia di scrivere i nomi dei plugin con la lettera iniziale maiuscola
  • il parametro deve essere scritto con la lettera iniziale maiuscola
  • i caratteri speciali non sono consentiti
  • il nesting non è limitato da un livello massimo
  • il numero di parametri non è limitato

Ad esempio, per eseguire controlli attivi che non hanno l'intervallo di aggiornamento Scheduling immediatamente dopo il riavvio dell'agent solo per il plugin Uptime, impostare Plugins.Uptime.System.ForceActiveChecksOnStart=1 nel file di configurazione. Allo stesso modo, per impostare un limite personalizzato per i controlli concorrenti per il plugin CPU, impostare Plugins.CPU.System.Capacity=N nel file di configurazione.

Valori predefiniti

È possibile impostare valori predefiniti per i parametri relativi alla connessione (URI, username, password, ecc.) nel file di configurazione nel formato:

Plugins.<PluginName>.Default.<Parameter>=<Value>

Ad esempio, Plugins.Mysql.Default.Username=zabbix, Plugins.MongoDB.Default.Uri=tcp://127.0.0.1:27017, ecc.

Se un valore per tale parametro non viene fornito in una chiave item o nei parametri della named session, il plugin utilizzerà il valore predefinito. Se anche un parametro predefinito non è definito, verranno utilizzati i valori predefiniti codificati nel software.

Se una chiave item non ha alcun parametro, Zabbix agent 2 tenterà di raccogliere la metrica utilizzando i valori definiti nella sezione dei parametri predefiniti.

Sessioni denominate

Le sessioni denominate rappresentano un ulteriore livello di parametri del plugin e possono essere utilizzate per specificare insiemi separati di parametri di autenticazione per ciascuna delle istanze monitorate. Ogni parametro di sessione denominata deve avere la seguente struttura:

Plugins.<PluginName>.Sessions.<SessionName>.<Parameter>=<Value>

Un nome di sessione può essere usato come parametro chiave dell'elemento connString invece di specificare separatamente un URI, un nome utente e/o una password.

Nelle chiavi degli item, il primo parametro può essere sia un connString sia un URI. Se il primo parametro della chiave non corrisponde a nessun nome di sessione, verrà trattato come un URI. Si noti che non è supportato passare credenziali URI incorporate nella chiave dell'item; usare invece i parametri di sessione denominati.

L'elenco dei parametri di sessione denominati disponibili dipende dal plugin.

È possibile sovrascrivere i parametri di sessione specificando nuovi valori nei parametri della chiave dell'item (vedere esempio).

Se un parametro non è definito per la sessione denominata, Zabbix agent 2 utilizzerà il valore definito nel parametro predefinito del plugin.

Priorità dei parametri

I plugin di Zabbix agent 2 cercano i valori dei parametri relativi alla connessione nel seguente ordine:

  1. Il primo parametro della chiave dell'item viene confrontato con i nomi delle sessioni. Se non viene trovato alcun riscontro, viene considerato un valore effettivo; in questo caso, il passaggio 3 verrà saltato. Se viene trovato un riscontro, il valore del parametro (di solito un URI) deve essere definito nella sessione denominata.
  2. Gli altri parametri verranno presi dalla chiave dell'item, se definiti.
  3. Se un parametro della chiave dell'item (ad esempio, password) è vuoto, il plugin cercherà il corrispondente parametro della sessione denominata.
  4. Se anche il parametro della sessione non è specificato, verrà utilizzato il valore definito nel corrispondente parametro predefinito.
  5. Se tutto il resto fallisce, il plugin utilizzerà il valore predefinito codificato.
Esempio 1

Monitoraggio di due istanze "MySQL1" e "MySQL2".

Parametri di configurazione:

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.1:3306
Plugins.Mysql.Sessions.MySQL2.User=mysql2_user
Plugins.Mysql.Sessions.MySQL2.Password=different_password

Come risultato di questa configurazione, ogni nome di sessione può essere utilizzato come connString in una chiave item, ad esempio mysql.ping[MySQL1] o mysql.ping[MySQL2].

Esempio 2

Fornire alcuni dei parametri nella chiave dell'item.

Parametri di configurazione:

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

Chiave dell'item: pgsql.ping[session1,new_username,,postgres]

Come risultato di questa configurazione, l'agent si connetterà a PostgreSQL usando i seguenti parametri:

  • URI dal parametro di sessione: 192.0.2.234:5432
  • Nome utente dalla chiave dell'item: new_username
  • Password dal parametro di sessione (poiché è omessa nella chiave dell'item): session_password
  • Nome del database dalla chiave dell'item: postgres
Esempio 3

Raccolta di una metrica usando i parametri di configurazione predefiniti.

Parametri di configurazione:

Plugins.PostgreSQL.Default.Uri=tcp://192.0.2.234:5432
Plugins.PostgreSQL.Default.User=zabbix
Plugins.PostgreSQL.Default.Password=password

Chiave dell'item: pgsql.ping[,,,postgres]

Come risultato di questa configurazione, l'agent si connetterà a PostgreSQL usando i parametri:

  • URI predefinito: 192.0.2.234:5432
  • Nome utente predefinito: zabbix
  • Password predefinita: password
  • Nome del database dalla chiave dell'item: postgres
Connessioni

Alcuni plugin supportano la raccolta di metriche da più istanze contemporaneamente. È possibile monitorare sia istanze locali sia remote. Sono supportate connessioni TCP e Unix-socket.

Si consiglia di configurare i plugin in modo che mantengano le connessioni alle istanze in stato aperto. I vantaggi sono una riduzione della congestione di rete, della latenza e dell'uso di CPU e memoria grazie al minor numero di connessioni. La libreria client si occupa di questo.

Il periodo di tempo per cui le connessioni inutilizzate devono rimanere aperte può essere determinato dal parametro Plugins.<PluginName>.KeepAlive. Esempio: Plugins.Memcached.KeepAlive

Plugin integrati

I plugin integrati di Zabbix agent 2 sono disponibili subito, senza configurazioni aggiuntive. Fare clic sul nome del plugin per accedere al repository del plugin con ulteriori informazioni.

Nome del plugin Descrizione Chiavi item supportate Commenti
Agent Metriche dell'agent Zabbix in uso. agent.hostname, agent.ping, agent.version Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Ceph Monitoraggio di Ceph. ceph.df.details, ceph.osd.stats, ceph.osd.discovery, ceph.osd.dump,
ceph.ping, ceph.pool.discovery, ceph.status
CPU Monitoraggio della CPU di sistema (numero di CPU/core CPU, CPU rilevate, percentuale di utilizzo). system.cpu.discovery, system.cpu.num, system.cpu.util Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Docker Monitoraggio dei container Docker. docker.container_info, docker.container_stats, docker.containers, docker.containers.discovery,
docker.data_usage, docker.images, docker.images.discovery, docker.info, docker.ping
Vedi anche:
Parametri di configurazione
File Raccolta di metriche dei file. vfs.file.cksum, vfs.file.contents, vfs.file.exists, vfs.file.md5sum,
vfs.file.regexp, vfs.file.regmatch, vfs.file.size, vfs.file.time
Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Kernel Monitoraggio del kernel. kernel.maxfiles, kernel.maxproc Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Log Monitoraggio dei file di log. log, log.count, logrt, logrt.count Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.

Vedi anche:
Parametri di configurazione del plugin (Unix/Windows)
Memcached Monitoraggio del server Memcached. memcached.ping, memcached.stats
Modbus Legge i dati Modbus. modbus.get Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
MQTT Riceve i valori pubblicati dei topic MQTT. mqtt.get Per configurare una connessione crittografata al broker MQTT, specificare i parametri TLS nel file di configurazione dell'agent come parametri di una sessione denominata o predefiniti. Al momento i parametri TLS non possono essere passati come parametri della chiave dell'item.
MySQL Monitoraggio di MySQL e dei suoi fork. 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
Per configurare una connessione crittografata al database, specificare i parametri TLS nel file di configurazione dell'agent come parametri di una sessione denominata o predefiniti. Al momento i parametri TLS non possono essere passati come parametri della chiave dell'item.
NetIf Monitoraggio delle interfacce di rete. net.if.collisions, net.if.discovery, net.if.in, net.if.out, net.if.total Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Oracle Monitoraggio di 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
Installare Oracle Instant Client prima di usare il plugin.
Proc Percentuale di utilizzo della CPU dei processi. proc.cpu.util La chiave supportata ha gli stessi parametri della chiave di Zabbix agent.
Redis Monitoraggio del server Redis. redis.config, redis.info, redis.ping, redis.slowlog.count Per configurare una connessione crittografata a Redis, specificare i parametri TLS nel file di configurazione dell'agent come parametri di una sessione denominata o predefiniti. I parametri TLS non possono essere passati come parametri della chiave dell'item. Si noti che una configurazione TLS errata o comunque non valida può impedire l'avvio di Zabbix agent 2, quindi verificare i file dei certificati, i permessi e i percorsi prima di abilitare TLS.
Smart Monitoraggio S.M.A.R.T. smart.attribute.discovery, smart.disk.discovery, smart.disk.get La versione minima richiesta di smartctl è 7.1.
Per l'utente che esegue Zabbix agent 2 sono richiesti i privilegi sudo/root per smartctl. Il plugin usa solo i seguenti comandi:
/usr/sbin/smartctl -a *
/usr/sbin/smartctl --scan *
/usr/sbin/smartctl -j -V

Le chiavi supportate possono essere usate con Zabbix agent 2 solo su Linux/Windows, sia come controllo passivo sia attivo.
Vedi anche:
Parametri di configurazione
SW Elenco dei pacchetti installati. system.sw.packages, system.sw.packages.get Le chiavi supportate hanno gli stessi parametri della chiave di Zabbix agent.
Swap Dimensione dello spazio di swap in byte/percentuale. system.swap.size La chiave supportata ha gli stessi parametri della chiave di Zabbix agent.
SystemRun Esegue il comando specificato. system.run La chiave supportata ha gli stessi parametri della chiave di Zabbix agent.

Vedi anche:
Parametri di configurazione del plugin (Unix/Windows)
Systemd Monitoraggio dei servizi systemd. systemd.unit.discovery, systemd.unit.get, systemd.unit.info
TCP Controllo della disponibilità delle connessioni TCP. net.tcp.port La chiave supportata ha gli stessi parametri della chiave di Zabbix agent.
UDP Monitoraggio della disponibilità e delle prestazioni dei servizi UDP. net.udp.service, net.udp.service.perf Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Uname Recupero delle informazioni sul sistema. system.hostname, system.sw.arch, system.uname Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
Uptime Raccolta delle metriche di uptime del sistema. system.uptime La chiave supportata ha gli stessi parametri della chiave di Zabbix agent.
VFSDev Raccolta di metriche VFS. vfs.dev.discovery, vfs.dev.read, vfs.dev.write Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
WebCertificate Monitoraggio dei certificati TLS/SSL dei siti web. web.certificate.get
WebPage Monitoraggio delle pagine web. web.page.get, web.page.perf, web.page.regexp Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
ZabbixAsync Raccolta asincrona delle metriche. 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
Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
ZabbixStats Metriche interne di Zabbix server/proxy o numero di item ritardati in una coda. zabbix.stats Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.
ZabbixSync Raccolta sincrona delle metriche. 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.
Le chiavi supportate hanno gli stessi parametri delle chiavi di Zabbix agent.

Plugin caricabili

I plugin caricabili di Zabbix agent 2 non sono disponibili subito dopo l'installazione e devono essere installati separatamente:

Prima di installare un plugin, controllare il file README. Può contenere requisiti specifici e istruzioni di installazione.

Fare clic sul nome del plugin per aprire il repository del plugin, che contiene il file README del plugin con ulteriori informazioni.

Nome plugin Descrizione Chiavi item supportate Commenti
Ember+ Monitoraggio di Ember+. ember.get Vedere anche i parametri di configurazione del plugin Ember+.
MongoDB Monitoraggio dei server e dei cluster MongoDB (database distribuito basato su documenti). 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
Per configurare connessioni crittografate al database, specificare i parametri TLS nel file di configurazione dell'agent come parametri di una sessione denominata.
Attualmente, i parametri TLS non possono essere passati come parametri della chiave item.

Vedere anche i parametri di configurazione del plugin MongoDB.
MSSQL Monitoraggio del database 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 Per configurare una connessione crittografata al database, specificare i parametri TLS nel file di configurazione dell'agent come parametri di una sessione denominata o predefiniti. Attualmente, i parametri TLS non possono essere passati come parametri della chiave item.

Vedere anche i parametri di configurazione del plugin MSSQL.
NVIDIA GPU Monitoraggio di 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 Vedere anche i parametri di configurazione del plugin NVIDIA GPU.
PostgreSQL Monitoraggio di PostgreSQL e dei suoi fork. 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
Per configurare connessioni crittografate al database, specificare i parametri TLS nel file di configurazione dell'agent come parametri di una sessione denominata o predefiniti.
Attualmente, i parametri TLS non possono essere passati come parametri della chiave item.

Vedere anche i parametri di configurazione del plugin PostgreSQL.

Plugin caricabili, quando avviati con:

  • -V --version - stampa le informazioni sulla versione del plugin e sulla licenza;
  • -h --help - stampa le informazioni di aiuto.