Le script principal est tiré de https://github.com/rbicelli/pfsense-zabbix-template
Dans system → sudo, activer l'inclusion des Custom Configuration
Puis, depuis la ligne de commande, créer le fichier /usr/local/etc/sudoers.d/zabbix avec le contenu suivant :
Defaults:zabbix !syslog zabbix ALL=(root) NOPASSWD: /usr/local/bin/php /root/zabbix/*
Ces scripts permettent de remonter des données sur les connexions VPN, les services, les descriptions des interfaces etc. Cette partie se fait en CLI
mkdir /root/zabbix cd /root/zabbix curl -o pfsense_zbx.php https://git.fws.fr/fws/pfsense-zabbix/raw/branch/master/pfsense_zbx.php
UserParameter=pfsense.states.max,grep "limit states" /tmp/rules.limits | cut -f4 -d ' ' UserParameter=pfsense.states.current,grep "current entries" /tmp/pfctl_si_out | tr -s ' ' | cut -f4 -d ' ' UserParameter=pfsense.mbuf.current,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f1 UserParameter=pfsense.mbuf.cache,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f2 UserParameter=pfsense.mbuf.max,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f4 UserParameter=pfsense.discovery[*],/usr/local/bin/sudo /usr/local/bin/php /root/zabbix/pfsense_zbx.php discovery $1 UserParameter=pfsense.value[*],/usr/local/bin/sudo /usr/local/bin/php /root/zabbix/pfsense_zbx.php $1 $2 $3
Si vous ne voulez pas, ou ne pouvez pas utiliser sudo, il est possible de faire tourner l'agent Zabbix en tant que root (ce n'est pas recommandé cependant) :
UserParameter=pfsense.states.max,grep "limit states" /tmp/rules.limits | cut -f4 -d ' ' UserParameter=pfsense.states.current,grep "current entries" /tmp/pfctl_si_out | tr -s ' ' | cut -f4 -d ' ' UserParameter=pfsense.mbuf.current,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f1 UserParameter=pfsense.mbuf.cache,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f2 UserParameter=pfsense.mbuf.max,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f4 UserParameter=pfsense.discovery[*],/usr/local/bin/php /root/zabbix/pfsense_zbx.php discovery $1 UserParameter=pfsense.value[*],/usr/local/bin/php /root/zabbix/pfsense_zbx.php $1 $2 $3 AllowRoot=1
Pour les anciennes version de PfSense (où il ne serait pas possible d'utiliser le script PHP), on peut utiliser simplement les UserParameters suivants
UserParameter=pfsense.states.max,grep "limit states" /tmp/rules.limits | cut -f4 -d ' ' UserParameter=pfsense.states.current,grep "current entries" /tmp/pfctl_si_out | tr -s ' ' | cut -f4 -d ' ' UserParameter=pfsense.mbuf.current,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f1 UserParameter=pfsense.mbuf.cache,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f2 UserParameter=pfsense.mbuf.max,netstat -m | grep "mbuf clusters" | cut -f1 -d ' ' | cut -d '/' -f4 UserParameter=pfsense.discovery[*],if [ "$1" == "interfaces" ]; then ifconfig | awk ' BEGIN { printf "\[" } /^[a-z][a-z0-9]+((\.|_vlan)[0-9]+)?:/ { gsub(/\:/,"",$ 1); printf "{\"{#IFNAME}\":\"" $ 1"\",\"{#IFDESCR}\":\"" $ 1"\"}," } END { print "]" } ' | sed -e 's/,\]/]/'; fi
Ça permettra d'émuler au moins la découverte des interfaces réseaux