5 Parametri utente

Panoramica

A volte potresti voler eseguire un controllo dell'agent che non è predefinito in Zabbix. È qui che entrano in gioco i parametri utente.

Puoi scrivere un comando che recuperi i dati necessari e includerlo nel parametro utente nel file di configurazione dell'agent (parametro di configurazione UserParameter).

Un parametro utente ha la seguente sintassi:

UserParameter=<key>,<command>

Come puoi vedere, un parametro utente contiene anche una chiave. La chiave sarà necessaria durante la configurazione di un item. Inserisci una chiave a tua scelta che sia facile da utilizzare come riferimento (deve essere univoca all'interno di un host).

Riavvia l'agent oppure utilizza l'opzione di controllo runtime dell'agent per caricare il nuovo parametro, ad esempio:

zabbix_agentd -R userparameter_reload

Quindi, durante la configurazione di un item, inserisci la chiave per fare riferimento al comando del parametro utente che desideri eseguire.

I parametri utente sono comandi eseguiti dall'agent Zabbix. Tieni presente che è possibile restituire fino a 16 MB di dati prima dei passaggi di preprocessing del valore dell'item.

Nei sistemi UNIX, l'agent esegue i comandi dei parametri utente utilizzando /bin/sh, con l'account del sistema operativo che esegue l'agent (solitamente zabbix). L'account deve disporre di autorizzazioni sufficienti per eseguire il comando e accedere a tutti i file, socket o credenziali utilizzati.

I parametri utente rispettano il timeout del controllo dell'agent; se il timeout viene raggiunto, il processo del parametro utente creato tramite fork viene terminato.

Vedi anche:

Esempi di semplici user parameter

Esempio 1: Valore costante

UserParameter=ping,echo 1

Un item con la chiave ping restituisce sempre 1.

Esempio 2: Disponibilità del server MySQL

UserParameter=mysql.ping,mysqladmin ping 2>/dev/null | grep -c alive

Restituisce 1 se il server MySQL risponde e 0 in caso contrario. Il reindirizzamento 2>/dev/null scarta l'output degli errori standard di mysqladmin. Senza di esso, potrebbe essere restituito un messaggio di errore insieme a 0, causando il passaggio a non supportato di un item con il tipo di informazioni Numeric (vedere Risultato del comando).
Questo esempio presuppone che le credenziali di connessione a MySQL siano configurate per l'account del sistema operativo che esegue l'agent Zabbix, ad esempio in un file di opzioni MySQL accessibile a tale account.

Parametri utente flessibili

I parametri utente flessibili accettano parametri insieme alla chiave. In questo modo, un parametro utente flessibile può costituire la base per la creazione di diversi item.

I parametri utente flessibili hanno la seguente sintassi:

UserParameter=key[*],command
Parametro Descrizione
Key Chiave univoca dell'item. [*] indica che questa chiave accetta parametri tra parentesi.
I parametri vengono specificati durante la configurazione dell'item.
Command Comando da eseguire per valutare il valore della chiave.
Solo per i parametri utente flessibili:
È possibile utilizzare i riferimenti posizionali $1…$9 nel comando per fare riferimento al rispettivo parametro nella chiave dell'item.
Zabbix analizza i parametri racchiusi tra [ ] nella chiave dell'item e sostituisce di conseguenza $1,...,$9 nel comando.
$0 verrà sostituito dal comando originale (prima dell'espansione di $0,...,$9) da eseguire.
I riferimenti posizionali vengono interpretati indipendentemente dal fatto che siano racchiusi tra virgolette doppie (") o singole (').
Per utilizzare i riferimenti posizionali senza modificarli, specificare un doppio simbolo del dollaro, ad esempio awk '{print $$2}'. In questo caso $$2 diventerà effettivamente $2 durante l'esecuzione del comando.

I riferimenti posizionali con il simbolo $ vengono cercati e sostituiti da Zabbix agent solo per i parametri utente flessibili. Per i parametri utente semplici, tale elaborazione dei riferimenti viene ignorata e, pertanto, non è necessario effettuare l'escape del simbolo $.

Per impostazione predefinita, alcuni caratteri non sono consentiti nei parametri utente. Per l'elenco completo dei caratteri, vedere UnsafeUserParameters.

Esempi di parametri utente flessibili

Gli esempi riportati di seguito hanno finalità dimostrative e non devono essere utilizzati in produzione senza adeguate misure di sicurezza. I parametri utente flessibili definiti utilizzando [*] accettano argomenti che possono introdurre rischi di command injection se non gestiti in modo sicuro.

Esempio 1: restituzione di un parametro

UserParameter=ping[*],echo $1

È possibile definire più item utilizzando questo parametro utente, con chiavi nel formato ping[parameter]:

  • ping[0] - restituisce 0.
  • ping[hello] - restituisce hello.

Esempio 2: disponibilità di MySQL su un host specificato

Questo parametro può essere utilizzato per monitorare la disponibilità di un server MySQL su un host specificato.

UserParameter=mysql.ping[*],mysqladmin -h "$1" ping 2>/dev/null | grep -c alive

L'item con la chiave mysql.ping[db1.example.com] restituisce 1 se il server MySQL su quell'host risponde e 0 in caso contrario.
Questo esempio presuppone che le credenziali di connessione a MySQL siano configurate per l'account del sistema operativo che esegue l'agent Zabbix, ad esempio in un file delle opzioni di MySQL accessibile a tale account.

Esempio 3: conteggio delle righe corrispondenti a un pattern

Questo parametro può essere utilizzato per contare il numero di righe in un file.

UserParameter=grep.count[*],grep -c "$2" "$1"

Restituisce il numero di righe nel file specificato dal primo argomento che corrispondono all'espressione regolare specificata dal secondo argomento. Ad esempio, grep.count[/etc/passwd,root] restituisce il numero di righe in /etc/passwd che corrispondono all'espressione regolare root.

Risultato del comando

Il valore restituito del comando è l'output standard insieme all'output di errore standard prodotto dal comando.

Un item che restituisce testo (informazioni di tipo character, log o text) non diventerà non supportato in caso di output di errore standard.

Il valore restituito è limitato a 16 MB (inclusi gli spazi finali che vengono troncati); si applicano anche i limiti del database.

I parametri utente che restituiscono testo (informazioni di tipo character, log o text) possono anche restituire spazi bianchi. In caso di risultato non valido, l'item diventerà non supportato.