Estensione degli agent Zabbix

Questa sezione fornisce istruzioni dettagliate per estendere le funzionalità di un agent Zabbix utilizzando un parametro utente.

L'esempio seguente recupera il numero di istruzioni eseguite da un server MySQL. I passaggi si applicano sia all'agent Zabbix sia a Zabbix agent 2.

Questo esempio illustra il funzionamento dei parametri utente. Per il monitoraggio di MySQL in produzione, si consiglia di utilizzare i template MySQL predefiniti, che non richiedono parametri utente.

Passaggio 1: Preparare l'accesso a MySQL

L'agent viene eseguito come utente del sistema operativo zabbix. Non utilizzare l'account MySQL root, poiché potrebbe utilizzare l'autenticazione basata su socket, impedendo all'agent di connettersi. Creare invece un utente MySQL dedicato:

CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>';

Salvare le credenziali in un file leggibile solo dall'utente zabbix, ad esempio /etc/zabbix/mysql_monitor.cnf (il percorso dipende dal sistema operativo e dal metodo di installazione di Zabbix):

[client]
user=zbx_monitor
password=<strong password>

Impostare il proprietario e i permessi del file:

sudo chown zabbix:zabbix /etc/zabbix/mysql_monitor.cnf
sudo chmod 600 /etc/zabbix/mysql_monitor.cnf

Passare esplicitamente questo file con --defaults-extra-file (che deve essere la prima opzione passata al client MySQL), invece di affidarsi a ~/.my.cnf, poiché la variabile d'ambiente HOME del demone potrebbe non essere impostata o potrebbe avere un valore diverso da quello previsto. Se MySQL utilizza un percorso socket non predefinito, aggiungere una riga socket= allo stesso file.

Passaggio 2: Scrivere un comando

Scrivere uno script o un comando personalizzato per recuperare il parametro richiesto e assicurarsi che funzioni nelle stesse condizioni del demone agent.

Il comando seguente restituisce il numero di istruzioni eseguite dal server MySQL:

/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

È possibile testare il comando come utente zabbix; dovrebbe stampare un singolo numero:

sudo -u zabbix sh -c "/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e \"SHOW GLOBAL STATUS LIKE 'Questions'\" | /usr/bin/awk '{print \$2}'"

Passaggio 3: aggiungere il comando alla configurazione di Zabbix agent

Anziché modificare il principale file di configurazione di agent (zabbix_agentd.conf o zabbix_agent2.conf), creare un file separato nella directory inclusa dal parametro Include. I file separati sono più facili da gestire e hanno meno probabilità di essere interessati dagli aggiornamenti dei pacchetti.

Ad esempio, creare /etc/zabbix/zabbix_agentd.d/mysql.conf (/etc/zabbix/zabbix_agent2.d/mysql.conf per Zabbix agent 2) con il seguente contenuto:

UserParameter=mysql.questions,/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

mysql.questions è la chiave univoca dell'item. Deve essere univoca all'interno della configurazione di agent.

È possibile testare il parametro eseguendo Zabbix agent con il flag -t. Eseguire il test come utente zabbix e specificare il file di configurazione se non si trova nella posizione predefinita:

Per Zabbix agent:

sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t mysql.questions

Per Zabbix agent 2:

sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t mysql.questions

L'output previsto contiene un numero, ad esempio:

mysql.questions                               [t|4567]

Passaggio 4: ricaricare e testare il parametro utente

Ricaricare i parametri utente dal file di configurazione eseguendo il comando seguente:

Per Zabbix agent:

sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R userparameter_reload

Per Zabbix agent 2:

sudo zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -R userparameter_reload

Eseguire il comando come root o come l'utente del sistema operativo che esegue l'agent.

In alternativa, riavviare l'agent per applicare le modifiche alla configurazione.

È possibile testare il parametro sull'agent in esecuzione utilizzando l'utility zabbix_get, ad esempio dal server Zabbix:

zabbix_get -s <IP address> -k mysql.questions

Qui, <IP address> è l'indirizzo IP dell'host che esegue l'agent a cui si connette zabbix_get. L'indirizzo IP dell'host che esegue zabbix_get deve essere elencato nel parametro Server dell'agent.

Affinché questo test funzioni, l'agent deve accettare i controlli passivi (per Zabbix agent, StartAgents non deve essere impostato su 0). Se l'agent è configurato solo per i controlli attivi, ignorare questo test e verificare l'item in Monitoring > Latest data dopo aver completato il passaggio finale.

Passaggio 5: Creare un item

Creare un nuovo item sull'host monitorato con la chiave item mysql.questions.

Selezionare il tipo di item: Zabbix Agent o Zabbix Agent (active).

Per Zabbix agent (passivo), l'indirizzo del server o del proxy Zabbix deve essere elencato nel parametro Server dell'agent. Per Zabbix agent (attivo), il parametro ServerActive deve specificare il server o il proxy Zabbix e il parametro Hostname dell'agent deve corrispondere esattamente al nome dell'host configurato nel frontend.

Selezionare il Tipo di informazioni dell'item. L'agent restituisce sempre il valore come testo; il Tipo di informazioni definisce il modo in cui Zabbix interpreta e memorizza il valore dopo l'esecuzione degli eventuali passaggi di pre-elaborazione.

Per il contatore cumulativo non elaborato, selezionare Numerico (senza segno). Per misurare il numero di istruzioni al secondo, selezionare Numerico (virgola mobile) e aggiungere il passaggio di pre-elaborazione Variazione al secondo.