tuto:pfsense:zabbix_user_parameters

Pour les versions récentes

Le script principal est tiré de https://github.com/rbicelli/pfsense-zabbix-template

Dans System → Package Manager → Available packages, sélectionner le paquet sudo et l'installer

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

Pour les machines sans sudo

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 versions

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

  • tuto/pfsense/zabbix_user_parameters.txt
  • Dernière modification: 15/02/2021 09:21
  • de dani