4 Proxy

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 essenzialmente per conto del server. Tutti i dati raccolti vengono memorizzati temporaneamente in locale e quindi trasferiti al server Zabbix a cui il proxy appartiene.

La distribuzione 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 I/O su disco.

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

Zabbix proxy richiede un database separato.

Si noti che i database supportati con Zabbix proxy sono SQLite, MySQL e PostgreSQL.

Vedi anche: Utilizzo dei proxy in un ambiente distribuito

Eseguire il proxy

Se installato come pacchetto

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

systemctl start zabbix-proxy

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

/etc/init.d/zabbix-proxy start

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

systemctl stop zabbix-proxy
systemctl restart zabbix-proxy
systemctl status zabbix-proxy
Avvio manuale

Se quanto sopra non funziona, è necessario avviarlo manualmente. Individuare il percorso del file binario zabbix_proxy ed eseguire:

zabbix_proxy

È possibile utilizzare i seguenti parametri della riga di comando con Zabbix proxy:

-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                convalida il file di configurazione ed esci
-h --help                       mostra questo aiuto
-V --version                    visualizza il numero di versione

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

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
zabbix_proxy --help
zabbix_proxy -V
Controllo di runtime

Opzioni di controllo di runtime:

Option Description Target
config_cache_reload Ricarica la cache di configurazione. Ignorato se la cache è attualmente in fase di caricamento.
Il proxy Zabbix attivo si connetterà al server Zabbix e richiederà i dati di configurazione.
Il proxy Zabbix passivo richiederà i dati di configurazione dal server Zabbix la volta successiva in cui il server si connetterà al proxy.
history_cache_clear=target Cancella la cache della cronologia per l'item specificato dal suo ID.
Influisce su tutti i valori dell'item, eccetto il primo e l'ultimo valore.
target - ID dell'item
diaginfo[=<section>] Raccoglie informazioni diagnostiche nel file di log del proxy. historycache - statistiche della cache della cronologia
preprocessing - statistiche del manager di preprocessing
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. Usare per forzare una cancellazione globale della cache durante la risoluzione di 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; influisce su tutti i processi se target non è specificato.
Non supportato sui sistemi BSD.
process type - Tutti i processi del tipo specificato (ad esempio, poller)
Vedi tutti i tipi di processo del proxy.
process type,N - Tipo di processo e numero (ad esempio, poller,3)
pid - Identificatore del processo (da 1 a 65535). Per valori più grandi specificare target come 'process type,N'.
log_level_decrease[=<target>] Diminuisce il livello di log; influisce su tutti i processi se target non è specificato.
Non supportato sui sistemi BSD.
prof_enable[=<target>] Abilita la profilazione.
Influisce su tutti i processi se target non è specificato.
La profilazione abilitata fornisce dettagli di tutti i rwlock/mutex per nome funzione.
process type - Tutti i processi del tipo specificato (ad esempio, history syncer)
Vedi tutti i tipi di processo del proxy.
process type,N - Tipo di processo e numero (ad esempio, history syncer,1)
pid - Identificatore del processo (da 1 a 65535). Per valori più grandi specificare target come 'process type,N'.
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 del tipo (ad esempio, history syncer,rwlock)
prof_disable[=<target>] Disabilita la profilazione.
Influisce su tutti i processi se target non è specificato.
process type - Tutti i processi del tipo specificato (ad esempio, history syncer)
Vedi tutti i tipi di processo del proxy.
process type,N - Tipo di processo e numero (ad esempio, history syncer,1)
pid - Identificatore del processo (da 1 a 65535). Per valori più grandi specificare target come 'process type,N'.

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

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

Esempio di utilizzo del controllo di runtime per cancellare la cache della cronologia di un item:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R history_cache_clear=42243

Esempi di utilizzo del controllo di runtime per raccogliere informazioni diagnostiche:

# Gather all available diagnostic information in the proxy log file:
zabbix_proxy -R diaginfo

# Gather history cache statistics in the proxy log file:
zabbix_proxy -R diaginfo=historycache

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

zabbix_proxy -R snmp_cache_reload

Quando un'interfaccia SNMPv3 viene aggiornata tramite la UI di Zabbix, Zabbix nella maggior parte dei casi ricarica automaticamente le nuove credenziali SNMPv3 per quell'interfaccia; usare -R snmp_cache_reload solo se il polling continua a non riuscire dopo le modifiche alle credenziali (ad esempio, a causa di incoerenze di engineBoots/engineID o di dispositivi non RFC), oppure quando è necessario forzare una cancellazione globale della cache SNMP per la risoluzione dei problemi.

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

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

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

# Increase log level of all processes:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase

# Increase log level of second poller process:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2

# Increase log level of process with PID 1234:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234

# Decrease log level of all http poller processes:
zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
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 è possibile eseguire il proxy come qualsiasi utente non root senza alcun problema.

Se si tenta di eseguirlo come 'root', passerà a un utente 'zabbix' codificato in modo statico, che deve essere presente nel sistema. È possibile eseguire il proxy come 'root' solo se si modifica di conseguenza il parametro 'AllowRoot' nel file di configurazione del proxy.

File di configurazione

Per i dettagli sulla configurazione di zabbix_proxy, vedere le opzioni del file di configurazione.

Tipi di processi e thread del proxy

  • agent poller - processo poller asincrono per controlli passivi con un thread worker
  • availability manager - processo per gli aggiornamenti della disponibilità degli host
  • browser poller - poller per i controlli degli item del browser
  • configuration syncer - processo per la gestione della cache in memoria dei dati di configurazione
  • data sender - mittente dei dati del proxy
  • discovery manager - processo manager per il rilevamento dei dispositivi
  • discovery worker - processo per la gestione delle attività di discovery dal discovery manager
  • history syncer - writer del DB della cronologia
  • housekeeper - processo per la rimozione della cronologia obsoleta degli item
  • http agent poller - processo poller asincrono per 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 dei 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 controlli SNMP con un thread worker (solo item walk[OID] e get[OID])
  • snmp trapper - trapper per trap SNMP
  • task manager - processo per l'esecuzione remota di attività richieste da altri componenti (ad es. chiusura del problema, riconoscimento del problema, controllo immediato del valore dell'item, funzionalità dei comandi remoti)
  • trapper - trapper per controlli attivi, trap, comunicazione del proxy
  • unreachable poller - poller per dispositivi non raggiungibili
  • vmware collector - collector 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 processi.

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 utilizzando l'item interno zabbix[process,<type>,<mode>,<state>] item.

Statistiche delle transazioni del history syncer

Il titolo del processo history syncer visualizza statistiche dettagliate sulle transazioni del history syncer.

205276 ?        S      0:00  zabbix_proxy: history syncer #1 [processed 1 values in 0.001179 (0.001167,0.000000) sec, idle 1 sec]
205277 ?        S      0:00  zabbix_proxy: history syncer #2 [processed 0 values in 0.000022 (0.000000,0.000000) sec, idle 1 sec]

I tempi, in "processed...in N (<timings>) sec", sono:

  • Tempo impiegato per scrivere i valori degli item nel database;
  • Tempo impiegato per aggiornare i dati degli item (stato, errori).
Procedura di housekeeping

Il proxy Zabbix dispone del processo housekeeper che rimuove la cronologia e i trend obsoleti degli item. Viene eseguito a cicli, con frequenza determinata da HousekeepingFrequency e con il limite di eliminazione per ciclo determinato da ProxyLocalBuffer e ProxyOfflineBuffer. A differenza della procedura di housekeeping del server Zabbix, il processo housekeeper del proxy non utilizza la tabella housekeeper: elimina tutti i dati obsoleti una volta per ogni ciclo di housekeeping.

Piattaforme supportate

Zabbix proxy funziona sullo stesso elenco di piattaforme supportate di Zabbix server.

Buffer di memoria

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

Nelle installazioni precedenti a Zabbix 7.0, i dati raccolti venivano memorizzati nel database prima di essere caricati sullo 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. Ciò è possibile modificando il valore di ProxyBufferMode da "disk" (valore predefinito hardcoded per le installazioni esistenti) a "hybrid" (consigliato) oppure "memory". È inoltre necessario impostare la dimensione del buffer di memoria (parametro ProxyMemoryBufferSize).

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

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

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

Parametri aggiuntivi come ProxyMemoryBufferSize e 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".

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.

Calcolo delle code durante la manutenzione

Il proxy Zabbix non è a conoscenza dei periodi di manutenzione; per i dettagli, vedere Calcolo delle code durante la manutenzione.