Surveiller les sondes de température sous pfSense avec munin-node

MàJ 03/2016: Suite au changement du hardware de ma passerelle pfSense, j’ai rajouté un check des sondes ACPI

Pour collecter des statistiques de monitoring, il faut d’abord s’assurer de disposer de munin-node sur la passerelle pfSense. Cette bidouille est détaillée ici.

munin-node_cpu_temp

Une fois le client munin déployé, il va falloir « construire » le plugin permettant de collecter les températures de cœurs du CPU. Un moyen efficace de récupérer ces valeurs sous FreeBSD consiste à lancer la commande sysctl -a | grep temp ou sysctl -a | grep cpu, voire les deux:

[2.2.5-RELEASE][root@pfSense]/root: sysctl -a | grep cpu | grep temp
dev.cpu.0.coretemp.delta: 55
dev.cpu.0.coretemp.resolution: 1
dev.cpu.0.coretemp.tjmax: 100.0C
dev.cpu.0.coretemp.throttle_log: 0
dev.cpu.0.temperature: 45.0C
dev.cpu.1.coretemp.delta: 54
dev.cpu.1.coretemp.resolution: 1
dev.cpu.1.coretemp.tjmax: 100.0C
dev.cpu.1.coretemp.throttle_log: 0
dev.cpu.1.temperature: 46.0C
dev.coretemp.0.%parent: cpu0
dev.coretemp.1.%parent: cpu1

Les deux valeurs intéressantes ici sont:

dev.cpu.0.temperature: 45.0C
dev.cpu.1.temperature: 46.0C

S’agissant d’un Intel Core2duo, les infos concordent…

Passons ensuite au script qui sera lancé par munin-node. Ce dernier est à placer dans /usr/local/share/munin/plugins/. Exemple ici avec /usr/local/share/munin/plugins/sensors_temp:

#!/bin/sh
case $1 in
   config)
        cat <<'EOM'
graph_period 20
graph_category sensors
graph_title CPU Temperatures
graph_vlabel Celsius
cpu0.label core0
cpu1.label core1
cpu2.label core2
cpu3.label core3

EOM
        exit 0;;
esac

echo -n "cpu0.value " ; sysctl -a | egrep -E "cpu\.[0-9]+\.temp" | cut -d ":" -f2 | sed s@C@@g | sed s@\ @@g | sed -n 1,1p
echo -n "cpu1.value " ; sysctl -a | egrep -E "cpu\.[0-9]+\.temp" | cut -d ":" -f2 | sed s@C@@g | sed s@\ @@g | sed -n 2,2p
echo -n "cpu2.value " ; sysctl -a | egrep -E "cpu\.[0-9]+\.temp" | cut -d ":" -f2 | sed s@C@@g | sed s@\ @@g | sed -n 3,3p
echo -n "cpu3.value " ; sysctl -a | egrep -E "cpu\.[0-9]+\.temp" | cut -d ":" -f2 | sed s@C@@g | sed s@\ @@g | sed -n 4,4p

Ensuite, il faut donner les droits à munin-node d’interroger ce script toutes les 5 minutes:

[2.2.5-RELEASE][root@pfSense]/root: chmod +x /usr/local/share/munin/plugins/sensors_temp
[2.2.5-RELEASE][root@pfSense]/root: chown munin:munin /usr/local/share/munin/plugins/sensors_temp

Dans /usr/local/etc/munin/plugin-conf.d/plugins.conf, indiquer les variables shell immédiatement après la dernière ligne de commentaire:

[*]
env.PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Ensuite, il faut activer le script et relancer le client munin-node pour une prise en compte des modifications:

[2.2.5-RELEASE][root@pfSense]/root: ln -s /usr/local/share/munin/plugins/sensors_temp /usr/local/etc/munin/plugins/sensors_temp
[2.2.5-RELEASE][root@pfSense]/root: /usr/local/etc/rc.d/munin-node stop
[2.2.5-RELEASE][root@pfSense]/root: /usr/local/etc/rc.d/munin-node start

Au bout de 5 minutes, le graphique est initialisé dans l'interface Web du serveur Munin. Au bout de quelques heures/quelques jours, voici le rendu:

munin-node_cpu_temp

Pour déboguer le plugin munin-node dans le cas où le graphique ne s’initialiserait pas, il est possible de lancer diverses commandes:

[2.2.5-RELEASE][root@pfSense]/root: /usr/local/share/munin/plugins/./sensors_temp
temp1.value 45.0
temp2.value 45.0
[2.2.5-RELEASE][root@pfSense]/root: /usr/local/sbin/munin-run sensors_temp
temp1.value 44.0
temp2.value 46.0

MàJ 03/2016: Sondes ACPI

/usr/local/share/munin/plugins/acpi_temp:

#!/bin/sh
case $1 in
   config)
        cat <<'EOM'
graph_period 20
graph_category sensors
graph_title ACPI Temperatures
graph_vlabel Celsius
acpi1.label acpi_zone_1
acpi2.label acpi_zone_2

EOM
        exit 0;;
esac

echo -n "acpi1.value " ; sysctl -a | egrep -E "hw\.acpi\.thermal\.tz[0-9]+\.temperature" | cut -d ":" -f2 | sed s@C@@g | sed s@\ @@g | sed -n 1,1p
echo -n "acpi2.value " ; sysctl -a | egrep -E "hw\.acpi\.thermal\.tz[0-9]+\.temperature" | cut -d ":" -f2 | sed s@C@@g | sed s@\ @@g | sed -n 2,2p

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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