Publié le: 2011-09-02

ipmitool

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.

Installation

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

Utilisation en monitoring

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.

Pousser plus loin en couplant sur nagios (NRPE)

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

Arrêter & redémarrer

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 :

  • ipmitool -I open chassis status: Permet de connaître le statut actuel de votre serveur
  • ipmitool -I open chassis power status: Permet de savoir quel est le status électrique de votre chassis
  • ipmitool -I open chassis power on: Allume le chassus
  • ipmitool -I open chassis power off: Eteint le chassis en mode soft (ATTENTION ce n’est pas un soft shutdown)
  • ipmitool -I open chassis power reset: Effectue un reboot hardware
  • ipmitool -I open chassis power soft: Effectue un soft shutdown
  • ipmitool -I open chassis bootdev pxe: force le boot PXE au redémarrage
  • ipmitool -I open chassis bootdev disk: force le boot sur la partition par défaut
  • ipmitool -I open chassis bootdev cdrom: force le boot sur cd
  • ipmitool -I open chassis bootdev bios: force à aller dans le bios au boot

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.