[comment]: # ({f9458f4e-f9458f4e})
# 4 Proxy

[comment]: # ({/f9458f4e-f9458f4e})

[comment]: # ({598d8afb-05d8de8a})
#### Panoramica

Zabbix proxy è un processo che può raccogliere dati di monitoraggio da uno o più dispositivi monitorati e inviare le informazioni al server Zabbix, operando sostanzialmente per conto del server.
Tutti i dati raccolti vengono memorizzati localmente in buffer e quindi trasferiti al server Zabbix a cui il proxy appartiene.

L'implementazione di un proxy è facoltativa, ma può essere molto vantaggiosa per distribuire il carico di un singolo server Zabbix.
Se solo i proxy raccolgono i dati, l'elaborazione sul server richiede meno CPU e meno I/O su disco.

Un proxy Zabbix è la soluzione ideale per il monitoraggio centralizzato di sedi remote, filiali e reti senza amministratori locali.

Zabbix proxy richiede un database separato.

::: noteimportant
Nota che i database supportati con Zabbix proxy sono SQLite, MySQL e PostgreSQL.
L'uso di Oracle è a proprio rischio e può comportare alcune limitazioni, ad esempio nei [valori di ritorno](/manual/discovery/low_level_discovery#overview) delle regole di discovery a basso livello.
:::

Vedi anche: [Using proxies in a distributed environment](/manual/distributed_monitoring/proxies)

[comment]: # ({/598d8afb-05d8de8a})

[comment]: # ({709824a5-709824a5})
#### Eseguire il proxy

[comment]: # ({/709824a5-709824a5})

[comment]: # ({70fd3646-a0a6c8d1})
##### Se installato come pacchetto

Zabbix proxy viene eseguito come processo daemon.
Il proxy può essere avviato eseguendo:

```bash
systemctl start zabbix-proxy
```

Questo funzionerà sulla maggior parte dei sistemi GNU/Linux.
Su altri sistemi potrebbe essere necessario eseguire:

```bash
/etc/init.d/zabbix-proxy start
```

Analogamente, per arrestare/riavviare/visualizzare lo stato di Zabbix proxy, utilizzare i seguenti comandi:

```bash
systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
```

[comment]: # ({/70fd3646-a0a6c8d1})

[comment]: # ({5e827b2c-0b35181b})
##### Avvio manuale

Se quanto sopra non funziona, è necessario avviarlo manualmente.
Individua il percorso del binario `zabbix_proxy` ed esegui:

```bash
zabbix_proxy
```

È possibile usare i seguenti parametri da riga di comando con Zabbix proxy:

```bash
-c --config <file>              Percorso del file di configurazione
-f --foreground                 Esegui Zabbix proxy in primo piano
-R --runtime-control <option>   Esegui funzioni amministrative
-T --test-config                Valida il file di configurazione ed esci
-h --help                       Mostra questo aiuto
-V --version                    Mostra il numero di versione
```

Esempi di esecuzione di Zabbix proxy con parametri da riga di comando:

```bash
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
```

[comment]: # ({/5e827b2c-0b35181b})

[comment]: # ({484024fc-ee4dd6f0})
##### Controllo runtime

Opzioni di controllo runtime:

|Option|Description|Target|
|--|------|------|
|`config_cache_reload`|Ricarica la cache di configurazione. Ignorato se la cache è attualmente in fase di caricamento.<br>Un proxy Zabbix attivo si connetterà al server Zabbix e richiederà i dati di configurazione.<br>Un proxy Zabbix passivo richiederà i dati di configurazione dal server Zabbix la prossima volta che il server si connetterà al proxy.| |
|`diaginfo[=<section>]`|Raccoglie informazioni diagnostiche nel file di log del proxy.|`historycache` - statistiche della cache della history;<br>`preprocessing` - statistiche del manager di preprocessing;<br>`locks` - elenco dei mutex (vuoto sui sistemi *BSD*).|
|`snmp_cache_reload`|Ricarica la cache SNMP - cancella le proprietà del motore SNMP (engine time, engine boots, engine id, credenziali) per tutti gli host. Da usare per forzare una cancellazione globale della cache durante la risoluzione dei problemi SNMP.| |
|`housekeeper_execute`|Avvia la procedura di housekeeping. Ignorato se la procedura di housekeeping è attualmente in corso.| |
|`log_level_increase[=<target>]`|Aumenta il livello di log, interessa tutti i processi se non viene specificato alcun target. <br>Non supportato sui sistemi *BSD*.|**process type** - tutti i processi del tipo specificato (ad esempio, `poller`).<br>Vedere tutti i [tipi di processi del proxy](#proxy-process-types-and-threads).<br>**process type,N** - tipo di processo e numero (ad esempio, `poller,3`).<br>**pid** - identificatore del processo (`1` to `65535`). Per valori maggiori specificare il target come 'process type,N'.|
|`log_level_decrease[=<target>]`|Diminuisce il livello di log, interessa tutti i processi se non viene specificato alcun target.<br>Non supportato sui sistemi *BSD*.|^|
|`prof_enable[=<target>]`|Abilita il profiling.<br>Interessa tutti i processi se non viene specificato alcun target.<br>Il profiling abilitato fornisce dettagli di tutti i rwlock/mutex per nome della funzione.|**process type** - tutti i processi del tipo specificato (ad esempio, `history syncer`).<br>Vedere tutti i [tipi di processi del proxy](#proxy-process-types-and-threads).<br>**process type,N** - tipo di processo e numero (ad esempio, `history syncer,1`)<br>**pid** - identificatore del processo (`1` to `65535`). Per valori maggiori specificare il target come 'process type,N'.<br>**scope** - `rwlock`, `mutex`, `processing` possono essere usati con il tipo di processo e il numero (ad esempio, `history syncer,1,processing`) oppure con tutti i processi di un tipo (ad esempio, `history syncer,rwlock`).|
|`prof_disable[=<target>]`|Disabilita il profiling.<br>Interessa tutti i processi se non viene specificato alcun target.|**process type** - tutti i processi del tipo specificato (ad esempio, `history syncer`).<br>Vedere tutti i [tipi di processi del proxy](#proxy-process-types-and-threads).<br>**process type,N** - tipo di processo e numero (ad esempio, `history syncer,1`).<br>**pid** - identificatore del processo (`1` to `65535`). Per valori maggiori specificare il target come 'process type,N'.|

Esempio di utilizzo del controllo runtime per ricaricare la cache di configurazione del proxy:

```bash
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload
```

Esempi di utilizzo del controllo runtime per raccogliere informazioni diagnostiche:

```bash
# Raccogli tutte le informazioni diagnostiche disponibili nel file di log del proxy:
zabbix_proxy -R diaginfo

# Raccogli le statistiche della cache della history nel file di log del proxy:
zabbix_proxy -R diaginfo=historycache
```

Esempio di utilizzo del controllo runtime per ricaricare la cache SNMP:

```bash
zabbix_proxy -R snmp_cache_reload
```

::: noteimportant
Quando un'interfaccia SNMPv3 viene aggiornata tramite la UI di Zabbix, nella maggior parte dei casi Zabbix ricaricherà automaticamente le nuove credenziali SNMPv3 per tale interfaccia; usa `-R snmp_cache_reload` solo se il polling continua a non riuscire dopo la modifica delle credenziali (ad esempio, a causa di incoerenze engineBoots/engineID o di dispositivi non conformi agli RFC), oppure quando devi forzare una cancellazione globale della cache SNMP per la risoluzione dei problemi.
:::

Esempio di utilizzo del controllo runtime per avviare l'esecuzione di housekeeper:

```bash
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute
```

Esempi di utilizzo del controllo runtime per modificare il livello di log:

```bash
# Aumenta il livello di log di tutti i processi:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase

# Aumenta il livello di log del secondo processo poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2

# Aumenta il livello di log del processo con PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234

# Diminuisce il livello di log di tutti i processi http poller:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
```

[comment]: # ({/484024fc-ee4dd6f0})

[comment]: # ({2b13e467-a9af55d3})
##### Utente del processo

Zabbix proxy è progettato per essere eseguito come utente non root.
Verrà eseguito come qualsiasi utente non root con cui viene avviato.
Quindi puoi eseguire proxy come qualsiasi utente non root senza problemi.

Se provi a eseguirlo come 'root', passerà a un utente 'zabbix' codificato in modo fisso, che deve essere presente nel tuo sistema.
Puoi eseguire proxy come 'root' solo se modifichi di conseguenza il parametro `AllowRoot` nel file di configurazione di proxy.

[comment]: # ({/2b13e467-a9af55d3})

[comment]: # ({6e096a7b-441f5ec7})
##### File di configurazione

Vedere le opzioni del [file di configurazione](/manual/appendix/config/zabbix_proxy) per i dettagli sulla configurazione di `zabbix_proxy`.

[comment]: # ({/6e096a7b-441f5ec7})

[comment]: # ({8cbeb29d-2cd46511})
#### Tipi di processi e thread del proxy

-   `agent poller` - processo poller asincrono per i controlli passivi con un thread worker;
-   `availability manager` - processo per gli aggiornamenti della disponibilità degli host;
-   `browser poller` - poller per i controlli degli item browser;
-   `configuration syncer` - processo per la gestione della cache in memoria dei dati di configurazione;
-   `data sender` - inviatore dei dati del proxy;
-   `discovery manager` - processo manager per la discovery dei dispositivi;
-   `discovery worker` - processo per la gestione delle attività di discovery provenienti dal discovery manager;
-   `history syncer` - writer del database della history;
-   `housekeeper` - processo per la rimozione della history obsoleta degli item;
-   `http agent poller` - processo poller asincrono per i controlli HTTP con un thread worker;
-   `http poller` - poller per il monitoraggio web;
-   `icmp pinger` - poller per i controlli icmpping;
-   `internal poller` - poller per i controlli interni;
-   `ipmi manager` - manager del poller IPMI;
-   `ipmi poller` - poller per i controlli IPMI;
-   `java poller` - poller per i controlli Java;
-   `odbc poller` - poller per i controlli ODBC;
-   `poller` - poller normale per i controlli passivi;
-   `preprocessing manager` - manager delle attività di preprocessing con thread worker di preprocessing;
-   `preprocessing worker` - thread per il preprocessing dei dati;
-   `self-monitoring` - processo per la raccolta delle statistiche interne del server;
-   `snmp poller` - processo poller asincrono per i controlli SNMP con un thread worker (`walk[OID]` e `get[OID]` solo item);
-   `snmp trapper` - trapper per i trap SNMP;
-   `task manager` - processo per l'esecuzione remota delle attività richieste da altri componenti (ad esempio chiudere un problema, riconoscere un problema, verificare ora il valore di un item, funzionalità di comando remoto);
-   `trapper` - trapper per i controlli attivi, i trap e la comunicazione con il proxy;
-   `unreachable poller` - poller per i dispositivi non raggiungibili;
-   `vmware collector` - raccoglitore di dati VMware responsabile della raccolta dei dati dai servizi VMware.

Il file di log del proxy può essere utilizzato per osservare questi tipi di processo.

A partire da Zabbix 7.0.22, il file di log del proxy viene creato con permessi di lettura e scrittura solo per il proprietario del file. Inoltre, il file è leggibile dal gruppo proprietario. Tutti gli altri permessi sono negati.

Vari tipi di processi del proxy Zabbix possono essere monitorati usando l'item interno `zabbix[process,<type>,<mode>,<state>]` [item](/manual/config/items/itemtypes/internal).

[comment]: # ({/8cbeb29d-2cd46511})

[comment]: # ({99df0923-087c822f})
#### Piattaforme supportate

Zabbix proxy funziona sullo stesso elenco di [piattaforme supportate](/manual/concepts/server#supported-platforms) di Zabbix server.

[comment]: # ({/99df0923-087c822f})

[comment]: # ({f18fc440-d86eb1a8})
#### Buffer di memoria

Il buffer di memoria consente di memorizzare nuovi dati (valori degli item, network discovery, host autoregistration) nel buffer e di caricarli su Zabbix server senza accedere al database.
Il buffer di memoria è stato introdotto per il proxy in Zabbix 7.0.

Nelle installazioni precedenti a Zabbix 7.0, i dati raccolti venivano memorizzati nel database prima di essere caricati su Zabbix server.
Per queste installazioni, questo rimane il comportamento predefinito dopo l'aggiornamento a Zabbix 7.0.

Per prestazioni ottimizzate, si consiglia di configurare l'uso del buffer di memoria sul proxy.
Questo è possibile modificando il valore di [`ProxyBufferMode`](/manual/appendix/config/zabbix_proxy#proxybuffermode) da `disk` (impostazione predefinita hardcoded per le installazioni esistenti) a `hybrid` (consigliato) o `memory`.
È inoltre necessario impostare la dimensione del buffer di memoria (parametro [`ProxyMemoryBufferSize`](/manual/appendix/config/zabbix_proxy#proxymemorybuffersize)).

In modalità hybrid, il buffer è protetto dalla perdita di dati svuotando nel database i dati non inviati se il proxy viene arrestato, il buffer è pieno o i dati sono troppo vecchi.
Quando tutti i valori sono stati svuotati nel database, il proxy torna a usare il buffer di memoria.

In modalità memory, il buffer di memoria verrà utilizzato, tuttavia non esiste alcuna protezione contro la perdita di dati.
Se il proxy viene arrestato o la memoria viene sovraccaricata, i dati non inviati verranno eliminati.

La modalità hybrid (`ProxyBufferMode=hybrid`) viene applicata a tutte le nuove installazioni a partire da Zabbix 7.0.

Parametri aggiuntivi come [`ProxyMemoryBufferSize`](/manual/appendix/config/zabbix_proxy#proxymemorybuffersize) e [`ProxyMemoryBufferAge`](/manual/appendix/config/zabbix_proxy#proxymemorybufferage) definiscono rispettivamente la dimensione del buffer di memoria e l'età massima dei dati nel buffer.

Si noti che, in caso di configurazione in conflitto, il proxy stamperà un errore e non riuscirà ad avviarsi, ad esempio se:
  
-   `ProxyBufferMode` è impostato su `hybrid` o `memory` e `ProxyMemoryBufferSize` è `0`.
-   `ProxyBufferMode` è impostato su `hybrid` o `memory` e `ProxyLocalBuffer` non è `0`.

[comment]: # ({/f18fc440-d86eb1a8})

[comment]: # ({b4e0a962-c703b792})
#### Locale

Si noti che il proxy richiede una locale UTF-8 affinché alcuni item testuali possano essere interpretati correttamente.
La maggior parte dei moderni sistemi di tipo Unix utilizza una locale UTF-8 come impostazione predefinita; tuttavia, esistono alcuni sistemi in cui potrebbe essere necessario configurarla esplicitamente.

[comment]: # ({/b4e0a962-c703b792})

[comment]: # ({de7d29ed-6420ecbe})
#### Calcolo delle code durante la manutenzione

::: noteimportant
Il proxy di Zabbix non è a conoscenza dei periodi di manutenzione; vedere [Calcolo delle code durante la manutenzione](/manual/maintenance#calculation-of-queues-during-maintenance) per i dettagli.
:::

[comment]: # ({/de7d29ed-6420ecbe})
