[comment]: # ({6c9a08a6-4f969495})
# 21 Estensioni

[comment]: # ({/6c9a08a6-4f969495})

[comment]: # ({99ac2a08-574b73cc})
#### 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.

[comment]: # ({/99ac2a08-574b73cc})

[comment]: # ({506e8c98-7b2875dd})
#### Raccolta dati con comandi personalizzati

[comment]: # ({/506e8c98-7b2875dd})

[comment]: # ({d1691dc9-2d4c92f9})
##### Item trapper

Gli [item trapper](/manual/config/items/itemtypes/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](/manual/concepts/sender) o il [protocol](/manual/appendix/protocols/zabbix_sender) di Zabbix sender.

L'invio di dati al server Zabbix è possibile anche utilizzando il metodo API [`history.push`](/manual/api/reference/history/push).

[comment]: # ({/d1691dc9-2d4c92f9})

[comment]: # ({e7b67f3a-327d4393})
##### Controlli esterni

Un [controllo esterno](/manual/config/items/itemtypes/external) è un item per eseguire controlli
avviando un file eseguibile, ad esempio uno [script shell](/manual/appendix/command_execution) 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.

[comment]: # ({/e7b67f3a-327d4393})

[comment]: # ({e86032a0-ce750625})
##### Parametri utente

Un [parametro utente](/manual/config/items/userparameters) è 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.

[comment]: # ({/e86032a0-ce750625})

[comment]: # ({7929dcdd-014456ed})
##### Item Zabbix agent `system.run[]`

L'[agent item](/manual/config/items/itemtypes/zabbix_agent#system.run) 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](/manual/config/items/restrict_checks)) e definiti
nel file di configurazione di Zabbix agent o agent 2 (parametro di configurazione `AllowKey`).

[comment]: # ({/7929dcdd-014456ed})

[comment]: # ({2550c7b3-8ef20381})
::: noteimportant
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.
:::

[comment]: # ({/2550c7b3-8ef20381})

[comment]: # ({f4f740a1-9530d8d5})
##### Item agent HTTP

L'item [HTTP agent](/manual/config/items/itemtypes/http) è 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](#trapper-items).

[comment]: # ({/f4f740a1-9530d8d5})

[comment]: # ({a5135d6d-f6b462b1})
##### Item script

Uno [script item](/manual/config/items/itemtypes/script)
è 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.

[comment]: # ({/a5135d6d-f6b462b1})

[comment]: # ({60de34fb-fc37db31})
::: notetip
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.
:::

[comment]: # ({/60de34fb-fc37db31})

[comment]: # ({8a85d13d-37a255c2})
#### Estensioni avanzate

[comment]: # ({/8a85d13d-37a255c2})

[comment]: # ({037daafe-45ac5b61})
##### Moduli caricabili

I [moduli caricabili](/manual/extensions/loadablemodules), 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](/manual/extensions/loadablemodules#providing-history-export-callbacks) 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.

[comment]: # ({/037daafe-45ac5b61})

[comment]: # ({b9bdffdf-c3a7defc})
##### Plugin

I plugin estendono le funzionalità di monitoraggio di Zabbix agent 2.
Scritte 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 del plugin (*Exporter*, *Collector*, *Configurator*, *Runner*, *Watcher*).
Sono supportati due tipi di plugin di Zabbix agent 2:

-   [Plugin integrati](https://www.zabbix.com/documentation/guidelines/en/plugins/built_in_plugins) (supportati da Zabbix 4.4.0)
-   [Plugin caricabili](https://www.zabbix.com/documentation/guidelines/en/plugins/loadable_plugins) (supportati da Zabbix 6.0.0)

Vedere l'elenco dei [plugin](/manual/extensions/plugins#builtin-plugins) forniti da Zabbix.

Per istruzioni e tutorial sulla creazione dei propri plugin, vedere il [Developer center](/devel/plugins).

[comment]: # ({/b9bdffdf-c3a7defc})

[comment]: # ({1ab5311c-d554dcca})
#### Personalizzazione degli avvisi

[comment]: # ({/1ab5311c-d554dcca})

[comment]: # ({bf6f2a0e-4957b4ed})
##### Webhook

Un [webhook](/manual/config/notifications/media/webhook)
è un [media type](/manual/config/notifications/media) di Zabbix
che offre la possibilità di estendere le funzionalità di alerting di Zabbix
a software esterni come sistemi di helpdesk, chat o messenger.
Analogamente agli item script, i webhook sono utili per effettuare chiamate HTTP usando codice JavaScript personalizzato,
ad esempio per inviare notifiche a diverse piattaforme come Microsoft Teams, Discord e Jira.
È inoltre possibile restituire alcuni dati (ad esempio, relativi ai ticket di helpdesk creati) che vengono poi visualizzati in Zabbix.

I webhook esistenti sono disponibili
nel [repository Git di Zabbix](https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media?at=refs%2Fheads%2Frelease%2F7.4).
Per lo sviluppo di webhook personalizzati,
vedere le [linee guida per lo sviluppo dei webhook](https://www.zabbix.com/documentation/guidelines/en/webhooks).

[comment]: # ({/bf6f2a0e-4957b4ed})

[comment]: # ({fde4aa0a-1ff47b17})
##### Script di avviso

Uno [script di avviso](/manual/config/notifications/media/script)
è un [tipo di supporto](/manual/config/notifications/media)
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.

[comment]: # ({/fde4aa0a-1ff47b17})

[comment]: # ({8d0a3d44-6a53c965})
#### Personalizzazione del frontend

[comment]: # ({/8d0a3d44-6a53c965})

[comment]: # ({fd4967cb-e59962d6})
##### Temi personalizzati

È possibile modificare l'aspetto visivo del frontend di Zabbix utilizzando temi personalizzati. Consulta le
[istruzioni](/manual/web_interface/theming) sulla creazione e l'applicazione dei tuoi temi.

[comment]: # ({/fd4967cb-e59962d6})

[comment]: # ({850d0b20-a1752bc3})
##### Moduli del frontend

I [moduli del frontend](/manual/extensions/frontendmodules) 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.

[comment]: # ({/850d0b20-a1752bc3})

[comment]: # ({a2988159-485cf185})
#### Script globali

Uno [script globale](/manual/web_interface/frontend_sections/alerts/scripts)
è 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](/manual/config/notifications/action/operation) di un'azione
-   [Azione manuale sull'host](/manual/web_interface/menu/host_menu#overview)
-   [Azione manuale sull'evento](/manual/web_interface/menu/event_menu#content)

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](/manual/config/notifications/action/operation/remote_command)
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.

[comment]: # ({/a2988159-485cf185})

[comment]: # ({29547248-44d06965})
::: noteimportant
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.
:::

[comment]: # ({/29547248-44d06965})

[comment]: # ({fb93634c-ee438455})
#### API di Zabbix

[Zabbix API](/manual/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](/manual/api/reference) di Zabbix API.

[comment]: # ({/fb93634c-ee438455})
