IPMI (Intelligent Platform Management Interface) est un ensemble de spécifications d’interfaces communes avec du matériel informatique (principalement des serveurs) permettant de surveiller certains composants (ventilateur, sonde de température, …), mais également de contrôler l’ordinateur à distance, reboot, interrupteur, console à distance. (cf Wikipédia) Nous allons ici étudier son fonctionnement dans un but de monitoring, avec pour exemple le monitoring de la température ambiante de votre machine.
Pour installer le paquet sous Debian, tapez les commandes suivantes (le modprobe avant !)
modprobe ipmi_si
modprobe ipmi_devintf
aptitude install ipmitool
service ipmievd restart
Si vous êtes sous redhat (notamment ESX) il faudra installer le paquet via yum, normalement les modules noyau sont déjà activés. Sous ESX 4.1 voici le RPM à installer :
wget ftp://ftp.silfreed.net/repo/rhel/4/i386/silfreednet/RPMS/ipmitool-1.8.2-1.el4.i386.rpm
rpm -i ipmitool-1.8.2-1.el4.i386.rpm
/usr/sbin/ipmievd
Nous allons ici l’utiliser dans un but de monitoring. Nous prendrons donc l’exemple de la température ambiante. Il existe deux commandes majeures permettant de monitorer IPMI:
ipmitool -I open sdr list
Cette commande va lister l’ensemble des sondes IPMI et la valeur qu’elles retournent. Ceci marche sous forme de clé/valeur.
ipmitool -I open sdr get 'Ambient Temp'
Cette commande pousse plus loin les données et va aller chercher les données que contient la clé Ambient Temp, présente dans la liste précédente.
Vous pouvez pousser le monitoring plus loin en greffant cet outil avec nagios. Il faut tout d’abord changer les droits de l’interface créée par le démon ipmievd:
chmod g+rw /dev/ipmi0
chown root:nagios /dev/ipmi0
Ceci permettra aux utilisateurs du groupe nagios d’interroger la sonde (le droit W est obligatoire pour l’interroger, puisqu’il faut envoyer une requête). Voici un script bash (modulable) permettant d’interroger la sonde de température ambiante ipmi et de renvoyer les codes d’erreurs NRPE qui vont bien
#! /bin/bash
#states
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
CRITPCT=42
WARNPCT=37
TEMPERATURE=$(ipmitool -I open sdr get 'Ambient Temp' | grep "Sensor Reading" | awk '{print $4}')
echo "Temperature ambiante: $TEMPERATURE °C"
if [ "$TEMPERATURE" -gt "$WARNPCT" ];
then
if [ "$TEMPERATURE" -gt "$CRITPCT" ];
then
return $STATE_CRITICAL
else
return $STATE_WARNING
fi
else
return $STATE_OK
fi
Vous pouvez bien entendu changer le champ à monitorer et les messages à volonté.
IPMI interagissant avec le BIOS de votre carte mère, il est possible d’arrêter, redémarrer et connaître les causes de redémarrage d’un de vos serveurs. Voici quelques commandes utiles permettant tout d’abord de connaître quelques informations utiles :
Voilà, vous pouvez toujours chercher d’autres petites subtilités en IPMI. L’outil est très puissant, alors faîtes attention aux droits que vous accordez à l’interface IPMI.