En quelques mots, il s'agit d'utiliser la capacité du produit Dell à lancer une ligne de commande quelconque lors de la survenance d'un évènement matériel, pour remonter l'information à Nagios sous forme de contrôle passif.
Configuration de Nagios
Il s'agit ici avant tout d'avoir un Nagios en état de marche. Le mien, c'est une version 1.2.
Tout d'abord, je définis un template réutilisable pour tous les services, et je le spécialise pour les services passifs, parce que je fais les choses proprement moi monsieur :
# Generic service definition template
define service{
name generic-service
register 0
check_period 24x7
max_check_attempts 3
normal_check_interval 15
retry_check_interval 5
active_checks_enabled 1
passive_checks_enabled 0
parallelize_check 1
obsess_over_service 0
check_freshness 0
event_handler_enabled 0
flap_detection_enabled 0
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_interval 60
notification_period 24x7
notification_options w,u,c,r
notifications_enabled 1
}
# Generic passive service definition template
define service{
name passive-service
use generic-service
register 0
active_checks_enabled 0
passive_checks_enabled 1
max_check_attempts 1
check_freshness 0
check_command check_dummy!1
}
J'utilise cette définition pour le service correspondant à OpenManage, toujours sous la forme d'un template réutilisable :
define service{
# DELL OpenManage (+ nsca)
use passive-service
name dell-probe
register 0
service_description Hardware
contact_groups nt-admins
}
Il ne reste plus ensuite qu'à utiliser ce template pour la machine MON_SERVEUR par exemple :
define service{
host_name MON_SERVEUR
use dell-probe
}
Allez, hop, c'est fini pour Nagios. Du beurre, non ?
Installation du serveur Dell
Système d'exploitation
C'est du Windows chez moi. Ceci dit, il n'y a aucune raison que ça ne marche pas de la même manière sous Linux. Tiens, si tu mets ça au point, donne, je le publierai ici.
NSCA
Ce add-on "Nagios Service Check Acceptor" peut être récupéré sur la page téléchargement du site officiel de Nagios. J'utilise dans cet exemple la version 2.4. Une version compilée pour Windows est disponible sur Nagios Exchange.
Cet outil, composé d'un client et d'un serveur, va permettre d'envoyer les évènements OpenManage à la machine hébergeant Nagios. Le client est un exécutable Windows appelé send_nsca.exe, et le serveur est un démon en écoute sur la machine Nagios. Je vous renvoie à la documentation de cet excellent produit pour son installation.
OpenManage
Le produit OpenManage doit bien sûr être installé sur le serveur : je ne vous fait pas l'affront de vous expliquer comment, normalement vous jetez le CD correspondant dans le mange-disque et vous cliquez sur Suivant, Suivant, Suivant... jusqu'à ce que mort s'ensuive.
J'ai toutes sortes de versions personnellement, de 1.5.0 à 1.7.0.
Configuration des logiciels
NSCA
J'ai en ce qui me concerne configuré le côté serveur pour tourner sous xinetd ; c'est toujours beaucoup plus chic, n'est-ce-pas. Tous les paramétres sont laissés par défaut.
Côté client, je créée un répertoire pour accueillir le biniou (personnellement, sous C:\program files\send_nsca, mais tu fais ce que tu veux). Le biniou est composé de :
- libmcrypt.dll
- send_nsca.cfg
- send_nsca.exe
- send_nsca.cmd
Ha ha, tu as remarqué, observateur comme tu es ? Hé oui, send_nsca.cmd ne fait pas partie de la distribution standard. C'est moi qui l'ai fait ; c'est la commande qui sera invoquée par OpenManage. Elle contient :
@echo off
rem envoi des alertes OpenManage a Nagios
rem (c)Xavier Dusart 11/2004 - http://xavier.dusart.free.fr/
echo %COMPUTERNAME%;Hardware;2;%1 | "c:\program files\send_nsca\send_nsca" -H serveur_nagios -d ; -c "c:\program files\send_nsca\send_nsca.cfg"
Ce qui est en rouge mérite ton attention.
- Par chance (par pur talent ?), moi j'ai appelé mes hôtes dans Nagios de leur nom NetBIOS en majuscules. Si tu as fait autrement, attention à la variable %COMPUTERNAME% : il faut la remplacer par l'alias du serveur dans Nagios.
- %1, c'est le paramétre qui sera passé à la commande depuis OpenManage, à savoir une ligne de texte décrivant l'évènement. Tu as aussi remarqué que je passe toujours le niveau "critical" (2) à Nagios : c'est qu'OpenManage ne notifie pas des retours à la normale.
- Serveur_nagios, à remplacer bien sûr par le nom ou l'adresse IP de ton serveur Nagios.
- C:\program files..., à remplacer par le chemin réel où tu as copié le biniou.
Le mode opératoire est donc :
- OpenManage transmet un état critique à Nagios pour le service "Hardware" de l'hôte considéré.
- Le superviseur (c'est toi – oui, toi – réveille-toi) traite cette alarme.
- Le superviseur force le service à Ok, en faisant une soumission manuelle d'état pour ce service, ce que Nagios appelle "Submit passive check result for this service".
- La première fois, pour que le service ne reste pas dans l'état désolant "Pending", le superviseur force le service à Ok, avec comme message "Init" par exemple.
Quand au fichier de configuration du client nsca – appelé send_nsca.cfg – il contient : encryption_method=1. Pas trop dur, mon gars ?
OpenManage
Tu pointes sur https://MON_SERVEUR:1311, et tu vas dans la rubrique Gestion des alertes. Et là, pour chaque alerte que tu juges critique, tu lui dit d'exécuter l'application c:\progra~1\send_nsca\send_nsca.cmd "description de l'alerte". La description de l'alerte, c'est par exemple "Bloc d'alimentation critique", ou "Avertissement des capteurs de temperature". Et voilà.
En option
Un lien dans Nagios
Pour afficher un joli lien vers OpenManage dans l'interface Nagios, tu peux ajouter dans le fichier de configuration de Nagios serviceextinfo.cfg :
define serviceextinfo{
host_name MON_SERVEUR
service_description Hardware
notes_url https://$HOSTNAME$:1311/
icon_image dell.gif
}
Et tiens, je te donne dell.gif, le petit logo d'OpenManage (t'as qu'à faire Enregistrer sous).
Un truc pour aider à la configuration de OpenManage
Comme les alarmes sont assez pénibles à configurer, et que c'est la même chose sur tous les serveurs, j'ai cherché les fichiers où OpenManage pouvait stocker ces informations. Selon les versions, j'en ai trouvé deux :
C:\Program Files\Dell\OpenManage\omsa\ini\dcprv32.Ini, à la fin duquel on modifie la rubrique HWC :
.../...
[HWC Configuration]
lraRObj.settings.00B5=256
lraRObj.epfName.00B5=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par un capteur de ventilateur"
lraRObj.settings.00BD=256
lraRObj.epfName.00BD=c:\progra~1\send_nsca\send_nsca.cmd "Echec anticipe de la memoire"
lraRObj.settings.00BE=256
lraRObj.epfName.00BE=c:\progra~1\send_nsca\send_nsca.cmd "Echec de la memoire"
lraRObj.settings.00B1=256
lraRObj.epfName.00B1=c:\progra~1\send_nsca\send_nsca.cmd "Bloc d'alimentation critique"
lraRObj.settings.00BB=256
lraRObj.epfName.00BB=c:\progra~1\send_nsca\send_nsca.cmd "Degradation de la redondance
lraRObj.settings.00BC=256
lraRObj.epfName.00BC=c:\progra~1\send_nsca\send_nsca.cmd "Perte de la redondance"
lraRObj.settings.00B2=256
lraRObj.epfName.00B2=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de temperature"
lraRObj.settings.00B3=256
lraRObj.epfName.00B3=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par un capteur de temperature"
lraRObj.settings.00B6=256
lraRObj.epfName.00B6=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de tension"
lraRObj.settings.00B7=256
lraRObj.epfName.00B7=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par un capteur de tension"
lraRObj.settings.00B4=256
lraRObj.epfName.00B4=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de ventilateur"
lraRObj.settings.00B8=256
lraRObj.epfName.00B8=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de courant"
lraRObj.settings.00BA=256
lraRObj.epfName.00BA=c:\progra~1\send_nsca\send_nsca.cmd "Detection d'une intrusion dans le chassis"
lraRObj.settings.00B9=256
lraRObj.epfName.00B9=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par les capteurs de courant"
Ou C:\Program Files\Dell\OpenManage\omsa\ini\dclrdy32.ini, qui doit contenir :
;--------------------------------------------------------------------
;
; Dell Inc. PROPRIETARY INFORMATION
; This software is supplied under the terms of a license agreement or
; nondisclosure agreement with Dell Inc. and may not
; be copied or disclosed except in accordance with the terms of that
; agreement.
;
; Copyright (c) 1995-2004 Dell Inc.
; All Rights Reserved.
;
; Module Name:
;
; DCLRDY32.INI
;
; Abstract/Purpose:
;
; Local Response Agent ("Dynamic" Data) INI file
;
;--------------------------------------------------------------------
; XDU 09/2004 : a copier dans C:\Program Files\Dell\OpenManage\omsa\ini
; vérifier la section "LRA Resp Configuration Section"
; relancer le service "Systems management data manager"
[LRA Resp Configuration Section]
lrarespid.0x00=175 ; Watchdog ASR event
lrarespid.0x01=177 ; Power supply critical
lrarespid.0x02=178 ; Temperature non-critical
lrarespid.0x03=179 ; Temperature critical
lrarespid.0x04=180 ; Fan non-critical
lrarespid.0x05=181 ; Fan critical
lrarespid.0x06=182 ; Voltage non-critical
lrarespid.0x07=183 ; Voltage critical
lrarespid.0x08=184 ; Current non-critical
lrarespid.0x09=185 ; Current critical
lrarespid.0x0a=186 ; Intrusion detected
lrarespid.0x0b=187 ; Redundancy degraded
lrarespid.0x0c=188 ; Redundancy lost
lrarespid.0x0d=189 ; Memory ECC error non-critical
lrarespid.0x0e=190 ; Memory ECC error critical
lrarespid.0x0f=304 ; Hardware log (ESM log) near full
lrarespid.0x10=305 ; Hardware log (ESM log) full
lrarespid.0x11=306 ; Processor warning
lrarespid.0x12=307 ; Processor failure
lrarespid.0x13=308 ; Power supply non-critical
[175]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "ASR de surveillance"
[177]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Bloc d'alimentation critique"
[178]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de temperature"
[179]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par un capteur de temperature"
[180]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de ventilateur"
[181]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par un capteur de ventilateur"
[182]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de tension"
[183]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par un capteur de tension"
[184]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Avertissement des capteurs de courant"
[185]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Panne detectee par les capteurs de courant"
[186]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Detection d'une intrusion dans le chassis"
[187]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Degradation de la redondance"
[188]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Perte de la redondance"
[189]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Echec anticipe de la memoire"
[190]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Echec de la memoire"
[304]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Journal du materiel : avertissement"
[305]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Journal du materiel : erreur"
[306]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Processeur : avertissement"
[307]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Processeur : panne"
[308]
settings=256
epfName=c:\progra~1\send_nsca\send_nsca.cmd "Bloc d'alimentation : avertissement"
[LRA Prot Configuration Section]
lraprotid.0x00=1045 ; Thermal Protect
[1045]
activateTimeout=60
reCheckTimeout=6
condition=0
canBeForced=true
[HWC Configuration]
migrationCompleted=TRUE
Tu ne prends pas ça pour argent comptant, non plus, hein, tu vérifie que ça correspond bien à ce que tu as déjà dans le fichier. Une fois le fichier ini modifié, il faut relancer le service correspondant d'OpenManage, ou mieux, tiens, t'embêtes pas : reboote.
Reste à faire
Essaye un peu de transposer ça pour Compaq Insight Manager, tiens, ça va t'occuper.
Remerciements
- à Maël Le Saout pour le coup des noms d'hôtes en majuscules : la variable Windows %COMPUTERNAME% le renvoie ainsi, et si Nagios les connaît en minuscules, c'est tout foutu.