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.
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:
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