19 Estensioni
Panoramica
Sebbene Zabbix offra una molteplicità di funzionalità, c'è sempre spazio per funzionalità aggiuntive. Le estensioni sono un modo pratico per modificare e migliorare le capacità di monitoraggio di Zabbix senza cambiarne il codice sorgente.
È possibile estendere le funzionalità di Zabbix sia utilizzando le opzioni di estensione integrate (item trapper, parametri utente, ecc.) sia utilizzando o creando estensioni personalizzate (moduli caricabili, plugin, ecc.).
Questa sezione fornisce una panoramica con riferimenti a tutte le opzioni per estendere Zabbix.
Raccolta dati con comandi personalizzati
Item trapper
Gli item trapper sono item che accettano dati in ingresso invece di interrogarli.
Gli item trapper sono utili per inviare dati specifici al server o al proxy Zabbix, ad esempio dati periodici di disponibilità e prestazioni nel caso di script utente a lunga esecuzione.
L'invio di dati al server o al proxy Zabbix è possibile utilizzando l'utilità Zabbix sender o il protocol di Zabbix sender.
L'invio di dati al server Zabbix è possibile anche utilizzando il metodo API history.push.
Controlli esterni
Un controllo esterno è un item per eseguire controlli avviando un file eseguibile, ad esempio uno script shell o un binario.
I controlli esterni vengono eseguiti da Zabbix server o proxy (quando l'host è monitorato dal proxy) e non richiedono un agent in esecuzione sull'host monitorato.
Parametri utente
Un parametro utente è un comando definito dall'utente (associato a una chiave definita dall'utente) che, quando eseguito, può recuperare i dati necessari dal host su cui è in esecuzione Zabbix agent. I parametri utente sono utili per configurare item di agent o agent 2 che non sono predefiniti in Zabbix.
Item Zabbix agent system.run[]
L'agent item Zabbix system.run[]
è un item per un comando definito dall'utente (associato a una chiave predefinita system.run[],
ad esempio system.run[myscript.sh]) che può essere eseguito sull'host in cui è in esecuzione Zabbix agent.
Nota: gli item system.run[] sono disabilitati per impostazione predefinita e, se utilizzati,
devono essere abilitati (consentiti) e definiti
nel file di configurazione di Zabbix agent o agent 2 (parametro di configurazione AllowKey).
I comandi definiti dall'utente negli item come controlli esterni, parametri utente e item system.run[] di Zabbix agent
vengono eseguiti dall'utente del sistema operativo utilizzato per eseguire i componenti Zabbix.
Per eseguire questi comandi, questo utente deve disporre delle autorizzazioni necessarie.
Item agent HTTP
L'item HTTP agent è un item per eseguire richieste di dati tramite HTTP/HTTPS. Gli item HTTP agent sono utili per inviare richieste a endpoint HTTP per recuperare dati da servizi come Elasticsearch e OpenWeatherMap, per controllare lo stato della API di Zabbix o lo stato del server web Apache o Nginx, ecc. Gli item HTTP agent (con trapping abilitato) possono anche funzionare come item trapper.
Item script
Uno script item è un item per eseguire codice JavaScript definito dall'utente che recupera dati tramite HTTP/HTTPS. Gli item script sono utili quando la funzionalità fornita dagli item HTTP agent non è sufficiente. Ad esempio, in scenari di raccolta dati complessi che richiedono più passaggi o logica articolata, un item script può essere configurato per effettuare una chiamata HTTP, quindi elaborare i dati ricevuti, e poi passare il valore trasformato a una seconda chiamata HTTP.
Gli elementi dell'agente HTTP e gli elementi dello script sono supportati dal server e dal proxy Zabbix, e non richiedono un agente in esecuzione sull'host monitorato.
Estensioni avanzate
Moduli caricabili
I moduli caricabili, scritti in C, sono un'opzione versatile e orientata alle prestazioni per estendere le funzionalità dei componenti di Zabbix (server, proxy, agent) sulle piattaforme UNIX. Un modulo caricabile è sostanzialmente una libreria condivisa utilizzata dal demone Zabbix e caricata all'avvio. La libreria deve contenere determinate funzioni, in modo che un processo Zabbix possa rilevare che il file è effettivamente un modulo che può caricare e utilizzare.
I moduli caricabili offrono numerosi vantaggi, tra cui la possibilità di aggiungere nuove metriche o implementare qualsiasi altra logica (ad esempio, l'esportazione dei dati di storico di Zabbix), prestazioni elevate e la possibilità di sviluppare, utilizzare e condividere le funzionalità che forniscono. Ciò contribuisce a una manutenzione senza problemi e aiuta a fornire nuove funzionalità più facilmente e indipendentemente dal codice di base di Zabbix.
I moduli caricabili sono particolarmente utili in una configurazione di monitoraggio complessa.
Quando si monitorano sistemi embedded, si dispone di un numero elevato di parametri monitorati
oppure si utilizzano script pesanti con logica complessa o tempi di avvio lunghi,
estensioni come i parametri utente, gli item system.run[] di Zabbix agent e i controlli esterni
avranno un impatto sulle prestazioni.
I moduli caricabili offrono un modo per estendere le funzionalità di Zabbix senza sacrificare le prestazioni.
Plugin
I plugin estendono le capacità di monitoraggio di Zabbix agent 2. Scritti nel linguaggio di programmazione Go, forniscono un'alternativa ai moduli caricabili (scritti in C).
Un plugin è un pacchetto Go che definisce la struttura e implementa una o più interfacce di plugin (Exporter, Collector, Configurator, Runner, Watcher). Sono supportati due tipi di plugin di Zabbix agent 2:
- Plugin integrati (supportati da Zabbix 4.4.0)
- Plugin caricabili (supportati da Zabbix 6.0.0)
Vedere l'elenco dei plugin forniti da Zabbix.
Per istruzioni ed esercitazioni sulla creazione dei propri plugin, vedere il Centro sviluppatori.
Personalizzazione degli avvisi
Webhook
Un webhook è un tipo di supporto di Zabbix che offre un'opzione per estendere le funzionalità di avviso di Zabbix a software esterni come sistemi di helpdesk, chat o messenger. Analogamente agli item script, i webhook sono utili per effettuare chiamate HTTP utilizzando codice JavaScript personalizzato, ad esempio per inviare notifiche a diverse piattaforme come Microsoft Teams, Discord e Jira. È anche possibile restituire alcuni dati (per esempio, sui ticket helpdesk creati) che vengono poi visualizzati in Zabbix.
I webhook esistenti sono disponibili nel repository Git di Zabbix. Per lo sviluppo di webhook personalizzati, vedere le Linee guida per lo sviluppo dei webhook.
Script di avviso
Uno script di avviso è un tipo di supporto di Zabbix che offre la possibilità di creare un modo alternativo (script) per gestire gli avvisi di Zabbix. Gli script di avviso sono utili se non si è soddisfatti dei tipi di supporto esistenti per l'invio degli avvisi in Zabbix.
Personalizzazione del frontend
Temi personalizzati
È possibile modificare l'aspetto visivo del frontend di Zabbix utilizzando temi personalizzati. Consulta le istruzioni sulla creazione e l'applicazione dei tuoi temi.
Moduli del frontend
I moduli del frontend offrono la possibilità di estendere le funzionalità del frontend di Zabbix aggiungendo moduli di terze parti oppure sviluppandone di propri. Con i moduli del frontend è possibile aggiungere nuove voci di menu, le rispettive viste, azioni, ecc.
Script globali
Uno script globale è un insieme di comandi definito dall'utente che può essere eseguito su una destinazione di monitoraggio (tramite l'interprete shell (/bin/sh)), a seconda dell'ambito configurato e dei permessi dell'utente. Gli script globali possono essere configurati per le seguenti azioni:
- Operazione di un'azione
- Azione manuale sull'host
- Azione manuale sull'evento
Gli script globali sono utili in molti casi.
Ad esempio, se configurati per le operazioni delle azioni o per le azioni manuali sull'host, è possibile usare gli script globali
per eseguire automaticamente o manualmente comandi remoti
come il riavvio di un'applicazione (web server, middleware, CRM, ecc.)
oppure la liberazione di spazio su disco (rimozione di file meno recenti, pulizia di /tmp, ecc.).
Oppure, un altro esempio: se configurati per le azioni manuali sugli eventi,
è possibile usare gli script globali per gestire i ticket dei problemi in sistemi esterni.
Gli script globali possono essere eseguiti da Zabbix server, proxy o agent.
I comandi definiti dall'utente vengono eseguiti dall'utente del sistema operativo utilizzato per eseguire i componenti Zabbix. Per eseguire questi comandi, questo utente deve disporre delle autorizzazioni necessarie.
API di Zabbix
Zabbix API è un'API basata su HTTP che fa parte del frontend di Zabbix. Con Zabbix API, è possibile eseguire una qualsiasi delle seguenti operazioni:
- Recuperare e modificare programmaticamente la configurazione di Zabbix.
- Importare ed esportare la configurazione di Zabbix.
- Accedere ai dati storici e di trend di Zabbix.
- Configurare le applicazioni affinché funzionino con Zabbix.
- Integrare Zabbix con software di terze parti.
- Automatizzare le attività di routine.
Zabbix API è costituita da una molteplicità di metodi raggruppati nominalmente in API separate. Ogni metodo esegue un'attività specifica. Per i metodi disponibili, nonché per una panoramica delle funzioni fornite da Zabbix API, vedere il Riferimento ai metodi di Zabbix API.