Système de monitoring de la température avec graph

Un article de Casys (Canadian Sysadmins).


Auteur: Thomas Boutry

Sommaire

Réalisation d'un script

Réalisation d'un script afin de récupérer la température rapidement et de configurer snmp pour qu'il intéroge
ce script localement.

sudo vi /usr/local/bin/gettemperature.sh
---
#!/bin/bash
# 
# Récupère la température du système avec sensor 
# -c pour la température du core (CPU)
# -t température du reste du système.
#


APP_SENSOR=/usr/bin/sensors
CRITERIA=""

usage()
{
        echo "$0 -c|-t|-h"
	echo " -c get core temperature CPU"
	echo " -t get other temperature"
	echo " -h see this message"
}


while getopts “ct” OPTION
do
     case $OPTION in
         c)
             CRITERIA=Core[0-9]
             ;;
         t)
             CRITERIA=temp[0-9]
             ;;
	 h)
             usage
             exit 1
             ;;

        *)
             usage
             exit 1
             ;;
     esac
done

RESULT=`$APP_SENSOR | egrep $CRITERIA `

echo $RESULT
---


Configuration du système snmp

Mise en place de l'exécution des scripts par le système snmpd.
Attention il est important que l'usagé qui execute snmpd soit en mesure de l'executé

sudo vi /etc/snmp/snmpd.conf
---
exec CoreTemp /usr/local/bin/gettemperature.sh -c
exec OtherTemp /usr/local/bin/gettemperature.sh -t
---

Redémarrage du service

sudo /etc/init.d/snmpd restart

Configuration de nagios

Mise en place du check de température pour tout les hosts Unix
Attention tout les systèmes non pas de sensor disponible

sudo vi /etc/nagios2/conf.d/template_unix_snmp.cfg
--- ADD

define service {
        use generic-service
        hostgroup_name          Unix
        service_description Temperature Core
        check_command       check_snmp_custom_process_v3!CoreTemp
}

define service {
        use generic-service
        hostgroup_name          Unix
        service_description Temperature Other
        check_command       check_snmp_custom_process_v3!OtherTemp
}
---

Configuration des graphs

Mise en place de l'interprétation des données recu par nagios

sudo vi /usr/local/nagiosgraph/etc/map
--- ADD
# Service check temperature
# Analyse le système de temperature
# Output : Core0 Temp: +38.0°C Core0 Temp: +27.0°C Core1 Temp: +35.0°C Core1 Temp: +25.0°C
/output:.*Core0 Temp: \+(\d+).*Core0 Temp: \+(\d+).*Core1 Temp: \+(\d+).*Core1 Temp: \+(\d+).*/
and push @s, [ 'CoreTemp',
               [ 'Core0_v1',  GAUGE, $1 ],
               [ 'Core0_v2',  GAUGE, $2 ],
               [ 'Core1_v1',  GAUGE, $3 ],
               [ 'Core1_v2',  GAUGE, $4 ]];

# Analyse du système de temperature divers
#
# Output : temp1: +40.0°C (low = -1.0°C, high = +127.0°C) sensor = thermal diode temp2: +35.0°C (low = -1.0°C, high = +127.0°C) sensor = transistor temp3: +25.0°C (low = -1.0°C, high = +127.0°C) sensor = transistor
#
/output:.*temp1: \+(\d+).*sensor = ([a-zA-Z]+) ([a-zA-Z]+) temp2: \+(\d+).*sensor = (.*) temp3: \+(\d+).*sensor = (.*)/
and push @s, [ 'Temperature',
               [ "$2_$3",  GAUGE, $1 ],
               [ $5,  GAUGE, $4 ],
               [ "$7_2",  GAUGE, $6 ]];


Configurationd de l'acces web

Une fois les modifications effectuées vous devriez voir des fichiers .rrd dans le répertoire de nagiosgraph, pour tout les rrd
configuration du système nagios afin d'avoir l'acces direct par l'interface web

sudo vi /etc/nagios2/conf.d/extinfo_nagios2.cfg
--- ADD
define serviceextinfo {
    service_description  Temperature Core
    hostgroup_name   Unix
    notes_url       /nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&fixedscale
    icon_image      graph.gif
    icon_image_alt  View graphs
}

define serviceextinfo {
    service_description  Temperature Other
    hostgroup_name   Unix
    notes_url       /nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&fixedscale
    icon_image      graph.gif
    icon_image_alt  View graphs
}