Monitoring de l’Unbound d’OPNsense avec Zabbix

Cette bidouille permet de récupérer les statistiques d’Unbound (embedded) et de les intégrer dans Zabbix.

Pour commencer, il faut installer l’Agent Zabbix sous OPNsense. Cela se passe dans System > Firmware > Plugins > os-zabbix-agent > Install.
Une fois cet agent configuré et intégré dans Zabbix-Server, on peut passer au vif du sujet!

Côté OPNsense

1/3 – visudo

Pour remonter les statistiques d’Unbound, il va falloir autoriser l’utilisateur zabbix a exécuter les binaires unbound-control et ps. La commande visudo permet de faire ça, en ayant au préalable activé le serveur SSH sur OPNsense:

...
##
## User privilege specification
##
root ALL=(ALL) ALL
zabbix ALL=(ALL) NOPASSWD: /usr/local/sbin/unbound-control
zabbix ALL=(ALL) NOPASSWD: /bin/ps
...

Il faut simplement ajouter les 2 lignes sous le root, en mode vim!

2/3 – Unbound

Côté Unbound, rien de méchant. Via la WebUI d’OPNsense, il faut juste activer/vérifier la partie Statistiques. Dans Services > Unbound > Advanced > avant-dernière coche Extended Statistics > à cocher! Redémarrer le service Unbound en cas d’activation.

3/3 – Zabbix-Agent

Dernière étape sur le OPNsense, l’ajout des UserParameters. Comme il n’est pas possible des les ajouter en WebUI, il faut passer en SSH aussi, comme pour visudo. Une section est prévue dans Services > Zabbix Agent > Settings > onglet Advanced > User Parameters. On peut insérer ici des commandes basiques mais les caractères spéciaux ne passent pas. Donc SSH!

On va créer un nouveau fichier dans /usr/local/etc/zabbix_agentd.conf.d/userparameter_unbound.conf qui contiendra les commandes exécutées par l’Agent Zabbix:

UserParameter=unbound.answer[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep num.answer.$1= | cut -d= -f2
UserParameter=unbound.class[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep num.query.class.$1= | cut -d= -f2
UserParameter=unbound.flag[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep num.query.$1= | cut -d= -f2
UserParameter=unbound.histogram.total[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep histogram.$1= | cut -d= -f2
UserParameter=unbound.histogram[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep histogram.$1= | cut -d= -f2
UserParameter=unbound.mem[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep mem.$1= | cut -d= -f2
UserParameter=unbound.rss,sudo ps -axo user,rss= | grep unbound | cut -d ' ' -f3
UserParameter=unbound.time.up[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep time.up | cut -d= -f2
UserParameter=unbound.total[*],sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep total.num.$1= | cut -d= -f2
UserParameter=unbound.type[*],echo -n 0; sudo /usr/local/sbin/unbound-control -c /var/unbound/unbound.conf stats_noreset | grep num.query.type.$1= | cut -d= -f2

Une fois ce fichier enregistré, il faut redémarrer l’agent Zabbix via la WebUI d’OPNsense.

Côté Zabbix-Server

De ce côté-ci, ça va être très simple puisque OPNsense est théoriquement déjà intégré dans la console Zabbix , et que le Template est tout prêt! Le voici:

Template App Unbound.xml.zip

Une fois le template importé dans Zabbix, il faut l’appliquer à l’hôte OPNsense et patienter un peu, le temps que ça remonte!

Exemple de statistiques Unbound sur 3 heures

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.