Se avete degli “UserParameter” configurati nel vostro Zabbix Agent che eseguono degli script e ricevete l’errore

[m|ZBX_NOTSUPPORTED]

Potrebbe dipendere dal fatto che lo script aggiunge il carriage return in fondo alla stringa.

Esempio che vi restituirà l’errore [m|ZBX_NOTSUPPORTED]

UserParameter=postfix.deferred[*],/usr/sbin/postqueue -p | egrep -c “^[0-9A-F]{10}[^*]”
UserParameter=postfix.active[*],/usr/sbin/postqueue -p | egrep -c “^[0-9A-F]{10}[*]”

La soluzione è togliere i caratteri speciali in fondo alla stringa con il comando tr -d ‘\r\n’

UserParameter=postfix.deferred[*],/usr/sbin/postqueue -p | egrep -c “^[0-9A-F]{10}[^*]” | tr -d ‘\r\n’
UserParameter=postfix.active[*],/usr/sbin/postqueue -p | egrep -c “^[0-9A-F]{10}[*]” | tr -d ‘\r\n’

Se avete abilitato SELINUX in modalità enforcing e provate ad avviare il demone zabbix-agent potreste ricevere l’errore:

Job for zabbix-agent.service failed because a configured resource limit was exceeded. See “systemctl status zabbix-agent.service” and “journalctl -xe” for details.

Infatti se andiamo a controllare l’audit log

grep zabbix_agent /var/log/audit/audit.log

possiamo vedere che AVC ha impedito l’azione setrlimit a zabbix_agentd

type=AVC msg=audit(1505217991.711:2169): avc: denied { setrlimit } for pid=9247 comm=”zabbix_agentd” scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:system_r:zabbix_agent_t:s0 tclass=process
type=SYSCALL msg=audit(1505217991.711:2169): arch=c000003e syscall=160 success=no exit=-13 a0=4 a1=7fff96165e20 a2=0 a3=8 items=0 ppid=1 pid=9247 auid=4294967295 uid=996 gid=993 euid=996 suid=996 fsuid=996 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm=”zabbix_agentd” exe=”/usr/sbin/zabbix_agentd” subj=system_u:system_r:zabbix_agent_t:s0 key=(null)

Per ovviare a questo problema basta aggiungere una nuova policy con il comando:

grep zabbix_agent /var/log/audit/audit.log | audit2allow -M zabbix_agent

ed attivarla

semodule -i zabbix_agent.pp

 

Salve a tutti, oggi in azienda ho dovuto fare un nuovo template per fare in modo che il nostro SCADA Zabbix vada ad interrogare ogni ora il nostro radius e aggiunga ad un host i vari NAS (con sessioni attive) come item a cui è correlato un grafico. L’item a sua volta ha un external script che va ad interrogare la tabella radacct per contare le sessioni attive in quel preciso momento.

Ecco il repository che ho creato in GitHub:

https://github.com/saschapapini/zabbix/tree/master/template-aggiungi-nas-conta-sessioni

Per prima cosa dobbiamo copiare i file nas_lista.php nas e nas_pppoecount.php all’interno della direcotry /usr/lib/zabbix/externalscripts/ (naturalmente nella riga 5 di ogni file occorre inserire delle credenziali mysql valide che abbiano i permessi di “select” per le tabelle “nas” e “radacct“). Poi occorre importare il template zbx_template_discovery_nas_e_session_attive_count.xml all’interno del nostro zabbix.

Una volta fatti questi due passaggi occorre creare un nuovo host fittizio e nei “Linked templates” inserire il template precedentemente creato e il gioco è fatto.

Personalmente ho creato anche uno screen con una “Resource” di tipo “Graph prototype” inserendo il  grafico”host: {#NASNAME} PPPoE Count”.

 

Per prima cosa installiamo i pacchetti per mandare il magic packet che farà il WOL

apt-get install etherwake wakeonlan

Poi creiamo un file in /etc/zabbix di nome check_wol.sh e diamoli i giusti permessi

touch /etc/zabbix/check_wol.sh

chown zabbix.root /etc/zabbix/check_wol.sh

chmod 750 /etc/zabbix/check_wol.sh

Modifichiamolo e inseriamo al suo interno il seguente codice

#!/bin/bash

if ! ping -c 1 -w 5 "$1" &>/dev/null ; then
  /usr/bin/wakeonlan -i "$1" "$2"
  echo "0"
else
  echo "1"
fi

Modifichiamo il file /etc/zabbix/zabbix_agentd.conf e alla fine aggiungiamo

UserParameter=wol[*],/etc/zabbix/check_wol.sh “$1” “$2”

Riavviamo l’agent

/etc/init.d/zabbix-agent restart

Poi creaiamo il nostro item all’interno dell’host in cui è installato l’agent con le seguenti configurazioni:

Type: zabbix agent

Key: wol[ip_server,mac_server]

Show value: Host Status

naturalmente se volete potete anche impostare le fasce orarie in cui eseguirlo e la distanza fra i vari check (io nel mio caso ho messo ogni 5 minuti).

Lo script si rivela comodo perchè nel momento che l’host non risponde al ping automaticamente viene mandato il magic packet per accenderlo e viene impostato l’item a zero in modo da creare un trigger per avvisare l’amministratori.

Allora se usate Zabbix 2.6.x in ubuntu e usate un simple check per fare un ping ad un host, e vi appare un bel errore del genere:

/usr/sbin/fping6: [2] No such file or directory

sappiate che è tutto normale, è un BUG di zabbix (come riportato qui http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526694)… basta aprire il file

/etc/zabbix/zabbix_server.conf

ed aggiungere la seguente riga:

Fping6Location=/usr/bin/fping6

naturalmente riavviate il vostro zabbix-server