4 Vérifications IPMI

Aperçu

Vous pouvez surveiller l’état de santé et la disponibilité des périphériques Intelligent Platform Management Interface (IPMI) dans Zabbix. Pour effectuer des vérifications IPMI, le serveur Zabbix doit d’abord être configuré avec la prise en charge d’IPMI.

IPMI est une interface normalisée pour la gestion à distance « lights-out » ou « out-of-band » des systèmes informatiques. Elle permet de surveiller directement l’état du matériel à partir des cartes de gestion dites « out-of-band », indépendamment du système d’exploitation et même si la machine est hors tension.

La supervision IPMI de Zabbix fonctionne uniquement pour les périphériques prenant en charge IPMI (HP iLO, DELL DRAC, IBM RSA, Sun SSP, etc.).

Un processus gestionnaire IPMI planifie les vérifications IPMI effectuées par les collecteurs IPMI. Un hôte est toujours interrogé par un seul collecteur IPMI à la fois, ce qui réduit le nombre de connexions ouvertes aux contrôleurs BMC. Il est donc possible d’augmenter en toute sécurité le nombre de collecteurs IPMI sans craindre de surcharger les contrôleurs BMC. Le processus gestionnaire IPMI est démarré automatiquement lorsqu’au moins un collecteur IPMI est démarré.

Voir aussi les problèmes connus concernant les vérifications IPMI.

Configuration

Configuration de l'hôte

Un hôte doit être configuré pour traiter les vérifications IPMI. Une interface IPMI doit être ajoutée, avec les adresses IP et les numéros de port respectifs, et les paramètres d'authentification IPMI doivent être définis.

Voir la configuration des hôtes pour plus de détails.

Configuration du serveur

Par défaut, le serveur Zabbix n'est pas configuré pour démarrer les pollers IPMI. Par conséquent, les éléments IPMI ajoutés ne fonctionneront pas. Pour changer cela, ouvrez le fichier de configuration du serveur Zabbix (zabbix_server.conf) en tant qu'utilisateur root et recherchez la ligne suivante :

# StartIPMIPollers=0

Décommentez-la et définissez le nombre d'interrogation sur, disons, 3, afin qu'il indique :

StartIPMIPollers=3

Enregistrez le fichier et redémarrez ensuite zabbix_server.

Configuration de l'élément

Lors de la configuration d'un élément au niveau de l'hôte :

  • Sélectionnez 'IPMI agent' comme Type
  • Saisissez une clé unique sur l'hôte (telle que, ipmi.fan.rpm)
  • Pour l'interface hôte, sélectionnez l'interface IPMI adéquate (IP et port). Notez que l'interface IPMI doit exister sur l'hôte.
  • Spécifiez le capteur IPMI (par exemple 'FAN MOD 1A RPM' sur Dell Poweredge) sur lequel récupérer la valeur. Par défaut, l'ID du capteur doit être spécifié. Il est aussi possible d'utiliser des préfixes avant la valeur :
    • id: - pour spécifier l'ID du capteur ;
    • name: - pour spécifier le nom complet du capteur. Cela peut être utile dans certaines situations quand les capteurs peuvent seulement être distingués en spécifiant le nom complet.
  • Sélectionnez le type d'information correspondant ('Numérique (flottant)' dans ce cas, pour les capteurs discrets - 'Numérique (non signé)'), les unités (très probablement 'rpm') et tout autre attribut d'élément requis
Vérifications prises en charge

L'agent IPMI prend en charge l'élément intégré ipmi.get, qui renvoie des informations relatives aux capteurs IPMI et peut être utilisé pour la découverte des capteurs IPMI.
Valeur de retour : objet JSON

Délai d’expiration et fin de session

Les délais d’expiration des messages IPMI et le nombre de tentatives sont définis dans la bibliothèque OpenIPMI. En raison de la conception actuelle d’OpenIPMI, il n’est pas possible de rendre ces valeurs configurables dans Zabbix, ni au niveau de l’interface ni au niveau de l’élément.

Le délai d’inactivité de session IPMI pour le LAN est de 60 +/-3 secondes. Actuellement, il n’est pas possible d’implémenter l’envoi périodique de la commande Activate Session avec OpenIPMI. S’il n’y a aucune vérification d’élément IPMI de Zabbix vers un BMC particulier pendant une durée supérieure au délai d’expiration de session configuré dans le BMC, alors la vérification IPMI suivante, une fois ce délai expiré, expirera en raison des délais d’expiration des messages individuels, des tentatives de nouvelle émission ou d’une erreur de réception. Après cela, une nouvelle session est ouverte et une réanalyse complète du BMC est lancée. Un nouveau port UDP peut être ouvert pour gérer la nouvelle session. L’inactivité est définie par l’absence à la fois de requêtes sortantes et de réponses entrantes. Si vous souhaitez éviter des réanalyses inutiles du BMC, il est conseillé de définir l’intervalle d’interrogation de l’élément IPMI en dessous du délai d’inactivité de session IPMI configuré dans le BMC.

Remarques sur les capteurs discrets IPMI

Pour trouver les capteurs sur un hôte, démarrez le serveur Zabbix avec DebugLevel=4 activé. Attendez quelques minutes, puis recherchez les enregistrements de découverte des capteurs dans le fichier journal du serveur Zabbix :

$ grep 'Added sensor' zabbix_server.log
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'

Pour décoder les types et états des capteurs IPMI, une copie des spécifications IPMI 2.0 est disponible (veuillez noter qu’aucune mise à jour supplémentaire de la spécification IPMI n’est prévue).

Le premier paramètre à examiner est "reading_type". Utilisez "Table 42-1, Event/Reading Type Code Ranges" des spécifications pour décoder le code "reading_type". La plupart des capteurs de notre exemple ont "reading_type:0x1", ce qui signifie un capteur de type "threshold". "Table 42-3, Sensor Type Codes" montre que "type:0x1" signifie capteur de température, "type:0x2" - capteur de tension, "type:0x4" - ventilateur, etc. Les capteurs à seuil sont parfois appelés capteurs "analogiques", car ils mesurent des paramètres continus comme la température, la tension, les tours par minute.

Autre exemple : un capteur avec "reading_type:0x3". "Table 42-1, Event/Reading Type Code Ranges" indique que les codes de type de lecture 02h-0Ch signifient un capteur "Generic Discrete". Les capteurs discrets ont jusqu’à 15 états possibles (autrement dit, jusqu’à 15 bits significatifs). Par exemple, pour le capteur 'CATERR' avec "type:0x7", la "Table 42-3, Sensor Type Codes" montre que ce type signifie "Processor" et que la signification des bits individuels est : 00h (le bit de poids faible) - IERR, 01h - Thermal Trip, etc.

Il y a quelques capteurs avec "reading_type:0x6f" dans notre exemple. Pour ces capteurs, la "Table 42-1, Event/Reading Type Code Ranges" recommande d’utiliser la "Table 42-3, Sensor Type Codes" pour décoder la signification des bits. Par exemple, le capteur 'Power Unit Stat' a le type "type:0x9", qui signifie "Power Unit". L’offset 00h signifie "PowerOff/Power Down". En d’autres termes, si le bit de poids faible vaut 1, alors le serveur est hors tension. Pour tester ce bit, la fonction bitand avec le masque '1' peut être utilisée. L’expression de déclencheur pourrait être :

bitand(last(/www.example.com/Power Unit Stat,#1),1)=1

pour avertir qu’un serveur est hors tension.

Notes sur les noms de capteurs discrets dans OpenIPMI-2.0.16, 2.0.17, 2.0.18 et 2.0.19

Les noms de capteurs discrets dans OpenIPMI-2.0.16, 2.0.17 et 2.0.18 ont souvent un "0" supplémentaire (ou un autre chiffre ou lettre) ajouté à la fin. Par exemple, si ipmitool et OpenIPMI-2.0.19 affichent les noms des capteurs comme "PhysicalSecurity" ou "CATERR", dans OpenIPMI-2.0.16, 2.0.17 et 2.0.18, les noms sont "PhysicalSecurity0" ou "CATERR0", respectivement.

Lors de la configuration d'un élément IPMI avec le serveur Zabbix à l'aide d'OpenIPMI-2.0.16, 2.0.17 et 2.0.18, utilisez ces noms se terminant par "0" dans le champ Capteur IPMI des éléments de l'agent IPMI. Lorsque votre serveur Zabbix est mis à jour vers une nouvelle distribution Linux, qui utilise OpenIPMI-2.0.19 (ou une version ultérieure), les éléments avec ces capteurs IPMI discrets deviendront "NON SUPPORTE". Vous devrez changer leur nom de capteur IPMI (enlevez le '0' à la fin) et attendre un moment avant de les réactiver.

Remarques sur la disponibilité simultanée des capteurs à seuil et des capteurs discrets

Certains agents IPMI fournissent à la fois un capteur à seuil et un capteur discret sous le même nom. La préférence est toujours donnée au capteur à seuil.

Remarques sur la fin de la connexion

Si les vérifications IPMI ne sont pas effectuées (pour une raison quelconque : tous les éléments IPMI hôte désactivés/non pris en charge, hôte désactivé/supprimé, hôte en maintenance, etc.) la connexion IPMI sera terminée du serveur ou du proxy Zabbix en 3 à 4 heures selon l'heure lorsque le serveur/proxy Zabbix a été démarré.