17
Nov
47

Supervision de baies de stockage Dell EqualLogic avec Nagios

Après la surveillance des hôtes VMware ESX(i), nous allons nous intéresser dans cet article à un des points névralgiques d’une infrastructure VMware vSphere : le stockage. Qu’il soit local ou partagée, une attention toute particulière doit lui être accordée.

Dans le cadre de mon travail, j’ai été amené à mettre en place et à utiliser un réseau de stockage s’appuyant sur une baie de stockage Dell EqualLogic PS6000XV (SAN iSCSI).

Pour vérifier l’état de santé et mesurer des données performances des baies de stockage Dell EqualLogic, Dell fournit gratuitement l’utilitaire Dell EqualLogic SAN HeadQuarters. Il est également possible de recevoir des notifications par courrier électronique pour être averti de problèmes éventuels.

Afin de centraliser la supervision de ce type de baie de stockage au sein de la solution de supervision Nagios, il m’a fallu développer un plugin Nagios dédié à cette tâche. Il repose sur la collecte des informations à l’aide de la version 1 du protocole SNMP. Le résultat est la publication aujourd’hui sous licence GPLv2 du plugin Nagios check_snmp_dell_equallogic (26 Ko). Il est construit sur la notion de groupe et de membres. Chaque groupe Dell EqualLogic prend en charge jusqu’à 16 baies de stockage, que l’on appelle des membres.

Le plugin check_snmp_dell_equallogic permet de vérifier l’état de l’alimentation, des batteries, des contrôleurs, de chaque disque dur, du RAID et des interfaces réseaux. Il permet également de récupérer plusieurs données de performances comme la vitesse des ventilateurs, le nombre d’entrées/sorties par seconde (IOPS), la latence, la température, le nombre de connexion iSCSI, l’utilisation de l’espace disque et enfin la consommation des différents volumes (LUNs). Ce qui donne dans l’interface Nagios (avec le thème Vautour Style) :

– Déplacez le plugin check_snmp_dell_equallogic dans le répertoire contenant les plugins Nagios : mv check_snmp_dell_equallogic /usr/local/nagios/libexec/
– Rendez le fichier exécutable : chmod +x /usr/local/nagios/libexec/check_snmp_dell_equallogic
– Modifiez le propriétaire pour ce script : chown nagios:nagios /usr/local/nagios/libexec/check_snmp_dell_equallogic

Pour vérifier que ce plugin Nagios fonctionne correctement, il vous suffit de l’exécuter : /usr/local/nagios/libexec/check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t info

Ce qui devrait vous retourner : Member ‘BAIE01’ – Info : Storage Array Dell EqualLogic ‘xx-xxx’ (xxxxxxxx) has 2 controllers and 16 hard drives

L’argument H correspond à l’adresse IP du groupe de baies, C à la communauté SNMP, n au nom du membre et t au type d’information que vous souhaitez récupérer.  Les valeurs possibles sont : battery, connection, controller, disk, fan, health, info, io, latency, network, redundancy, temperature, usage, raid et volume. En fonction du type d’information, il vous faudra utiliser d’autres arguments tels que d pour indiquer l’identifiant du disque dur. Vous trouverez plus d’informations sur son utilisation en affichant l’aide qui accompagne ce plugin : /usr/local/nagios/libexec/check_snmp_dell_equallogic -h

Voici quelques exemples d’utilisation :

– Vérifiez l’état des batteries : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t battery

Member ‘BAIE01’ – Battery status : cache battery in controller 1 is fully functional , cache battery in controller 2 is fully functional

– Récupérez le nombre de connexion iSCSI : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t connection -w 15 -c 20

Member ‘BAIE01’ – Number of iSCSI connections : 54 | con_iscsi=54;15;20;0

– Vérifiez l’état des contrôleurs : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t controller

Member ‘BAIE01’ – Controllers status : both controllers are fully functional

– Vérifiez l’état du disque dur d’identifiant 1 : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t disk -d 1

Member ‘BAIE01’ – Disk 1 (slot 0) status (type : SAS and size 419.18 Go ) : Disk is online. RAID is fully fonctionnal

– Récupérez la vitesse des ventilateurs : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t fan

Member ‘BAIE01’ – Fan speed : ‘Power Cooling Module 0 Fan 0’ : 5010 tr/min, ‘Power Cooling Module 0 Fan 1’ : 4800 tr/min, ‘Power Cooling Module 1 Fan 0’ : 4830 tr/min, ‘Power Cooling Module 1 Fan 1’ : 4830 tr/min, | ‘Power Cooling Module 0 Fan 0’=5010 ‘Power Cooling Module 0 Fan 1’=4800 ‘Power Cooling Module 1 Fan 0’=4830 ‘Power Cooling Module 1 Fan 1’=4830

– Contrôlez l’état global de la baie de stockage : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx-C public -n BAIE01 -t health

Member ‘BAIE01’ – Global system status : OK

– Récupérez le nombre d’entrée/sortie par seconde : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01-t io

Member ‘BAIE01’ – I/O Operations Per Second : Read counter’s value is 429346443 and write counter’s value is 548035313 | read=429346443c;0;0;0 write=548035313c;0;0;0

– Récupérez la latence en lecture et écriture : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t latency

Member ‘BAIE01’ – Reading average latency value is : 3 ms, writing average latency value is 2 ms | read=3;0;0;0 write=2;0;0;0

– Vérifiez si l’interface réseau eth0 est bien connecté : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t network -i eth0

Member ‘BAIE01’ – Network interface ‘eth0’ (10.100.2.10) status : Network interface is fully functional (MTU of 9000 and Speed of 1000)

– Vérifiez la redondance et l’état de l’alimentation : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t redundancy

Member ‘BAIE01’ – Power supply status : ‘Power Cooling Module 0’ is fully fonctionnal, ‘Power Cooling Module 1’ is fully fonctionnal

– Vérifiez l’état du RAID : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t raid

Member ‘BAIE01’ – RAID status : RAID is fully fonctionnal

– Récupérez la température des différents composants : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t temperature

Member ‘BAIE01’ – Temperatures : ‘Control module 0 processor’ : 60 Degres Celcius, ‘Control module 0 chipset’ : 24 Degres Celcius, ‘Control module 1 processor’ : 58 Degres Celcius, ‘Control module 1 chipset’ : 25 Degres Celcius, ‘Control module 0 SAS Controller’ : 56 Degres Celcius, ‘Control module 0 SAS Expander’ : 75 Degres Celcius, ‘Control module 1 SAS Controller’ : 59 Degres Celcius, ‘Control module 1 SAS Expander’ : 77 Degres Celcius, ‘Control module 1 SES Enclosure’ : 43 Degres Celcius, ‘Control module 0 Battery’ : 18 Degres Celcius, ‘Control module 1 Battery’ : 18 Degres Celcius, | ‘Control module 0 processor’=60 ‘Control module 0 chipset’=24 ‘Control module 1 processor’=58 ‘Control module 1 chipset’=25 ‘Control module 0 SAS Controller’=56 ‘Control module 0 SAS Expander’=75 ‘Control module 1 SAS Controller’=59 ‘Control module 1 SAS Expander’=77 ‘Control module 1 SES Enclosure’=43 ‘Control module 0 Battery’=18 ‘Control module 1 Battery’=18

– Récupérez l’utilisation de l’espace disque : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t usage -w 90 -c 95

Member ‘BAIE01’ – Used disk space : 3.90 To with a total disk space of 4.70 To (83%) with 0% for snapshots and 0% for replication | total=5173228339200B;4655905505280;4914566922240;0 used=4295035453440B;0;0;0 snapshots=0B;0;0;0 replicas=0B;0;0;0

– Récupérez la consommation d’un volume : ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t volume -v volume01 -w 90 -c 95

Member ‘BAIE01’ – Volume ‘volume01’ (online) in RAID group ‘GRP01’ : 213.04 Go used on 500.00 Go (42%) | volume_used=228757340160B;483183820800;510027366400;0

Nous allons maintenant modifier la configuration de Nagios pour superviser une baie de stockage Dell EqualLogic. Cette partie dépend de l’arborescence de configuration et de l’installation de Nagios dont vous disposez.

– Ajoutez les définitions des objets command : vi /etc/nagios/objects/commands.cfg

define command {
  command_name check_dell_equallogic_battery
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t battery
}

define command {
  command_name check_dell_equallogic_connection
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t connection -w $ARG3$ -c $ARG4$
}

define command {
  command_name check_dell_equallogic_controller
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t controller
}

define command {
  command_name check_dell_equallogic_disk
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t disk -d $ARG3$
}

define command {
  command_name check_dell_equallogic_fan
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t fan
}

define command {
  command_name check_dell_equallogic_health
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t health
}

define command {
  command_name check_dell_equallogic_io
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t io
}

define command {
  command_name check_dell_equallogic_latency
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t latency
}

define command {
  command_name check_dell_equallogic_network
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t network -i $ARG3$ -m $ARG4$ -s $ARG5$
}

define command {
  command_name check_dell_equallogic_redundancy
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t redundancy
}

define command {
  command_name check_dell_equallogic_raid
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t raid
}

define command {
  command_name check_dell_equallogic_temperature
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t temperature
}

define command {
  command_name check_dell_equallogic_usage
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t usage -w $ARG3$ -c $ARG4$
}

define command {
  command_name check_dell_equallogic_volume
  command_line $USER1$/check_snmp_dell_equallogic -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -t volume -v $ARG3$ -w $ARG4$ -c $ARG5$
}

– Ajoutez la définition de l’objet host pour le groupe de baies de stockage : vi /etc/nagios/objects/hosts.cfg

define host {
  host_name grpbaies
  use generic_host
  alias Groupe de baies Dell EqualLogic
  address xxx.xxx.xxx.xxx
  contact_groups +admin
}

– Ajoutez la définition des objets service pour la baie : vi /etc/nagios/objects/services.cfg

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Alimentation
  check_command check_dell_equallogic_redundancy!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Batteries
  check_command check_dell_equallogic_battery!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Connexions_iSCSI
  check_command check_dell_equallogic_connection!public!baie01!0!0
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Controleurs
  check_command check_dell_equallogic_controller!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Espace_Disque
  check_command check_dell_equallogic_usage!public!baie01!90!95
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_1
  check_command check_dell_equallogic_disk!public!baie01!1
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_2
  check_command check_dell_equallogic_disk!public!baie01!2
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_3
  check_command check_dell_equallogic_disk!public!baie01!3
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_4
  check_command check_dell_equallogic_disk!public!baie01!4
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_5
  check_command check_dell_equallogic_disk!public!baie01!5
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_6
  check_command check_dell_equallogic_disk!public!baie01!6
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_7
  check_command check_dell_equallogic_disk!public!baie01!7
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_8
  check_command check_dell_equallogic_disk!public!baie01!8
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_9
  check_command check_dell_equallogic_disk!public!baie01!9
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_10
  check_command check_dell_equallogic_disk!public!baie01!10
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_11
  check_command check_dell_equallogic_disk!public!baie01!11
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_12
  check_command check_dell_equallogic_disk!public!baie01!12
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_13
  check_command check_dell_equallogic_disk!public!baie01!13
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_14
  check_command check_dell_equallogic_disk!public!baie01!14
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_15
  check_command check_dell_equallogic_disk!public!baie01!15
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Etat_Disque_16
  check_command check_dell_equallogic_disk!public!baie01!16
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Interface_Reseau_eth0
  check_command check_dell_equallogic_network!public!baie01!eth0!9000!1000
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Interface_Reseau_eth1
  check_command check_dell_equallogic_network!public!baie01!eth1!9000!1000
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Interface_Reseau_eth2
  check_command check_dell_equallogic_network!public!baie01!eth2!9000!1000
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Interface_Reseau_eth3
  check_command check_dell_equallogic_network!public!baie01!eth3!9000!1000
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_IO
  check_command check_dell_equallogic_io!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Latence
  check_command check_dell_equallogic_latency!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_RAID
  check_command check_dell_equallogic_raid!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_Temperature
  check_command check_dell_equallogic_temperature!public!baie01
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_volume01
  check_command check_dell_equallogic_volume!public!baie01!volume01!80!90
  contact_groups +admin
}

define service {
  host_name grpbaies
  use generic_service
  service_description BAIE01_volume02
  check_command check_dell_equallogic_volume!public!baie01!volume02!80!90
  contact_groups +admin
}

– Rechargez la configuration de Nagios : service nagios reload

Vos baies de stockage Dell EqualLogic peuvent être maintenant supervisé à l’aide de Nagios.

Mise à jour :

  • 10/10/2014 : La consommation des volumes disponibles sur plusieurs membres a été corrigée.
  • 13/11/2014 : Prise en compte de la MTU et de la vitesse pour la vérification d’une interface réseau (ajout des arguments -m et -s).
47 commentaires :
  1. Kafeine 17 Nov, 2011

    Excellent ! Merci Yoann

  2. Kafeine 21 Nov, 2011

    (micro correction :
    check_dell_equallogic_disk : USER12 –> USER1 )

  3. Yoann 22 Nov, 2011

    En effet, c’est corrigé.

  4. FlyTbird 18 Jan, 2012

    Petite correction.

    Depuis les derniers firmware il faut modifier la ligne
    if [ $NETWORK_STATUS = « Up » ]; then
    en
    if [ $NETWORK_STATUS = « 1 » ]; then

  5. FlyTbird 19 Jan, 2012

    J’ai un problème avec 2 noms de volumes contenant la même chaine.

    Exemple :
    volume 1 : xxxyyy345
    volume 2 : yyy345

    Le script détectait donc 2 volume_id.

    Il faut à modifier la ligne 587 la commande :
    $CMD_GREP -i $VOLUME
    par
    $CMD_GREP -i \ »$VOLUME

    Sinon merci pour ce script, cela faisait longtemps que j’en cherchais un pour les baies dell et il fonctionne très bien.

  6. max 23 Mar, 2012

    Bonjour,

    j’ai un problème, et je suis tres nul en dev 🙁
    j’ai mis en place le script, et lorsque j’ai voulu faire le test ./check_snmp_dell_equallogic -H xxx.xxx.xxx.xxx -C public -n BAIE01 -t info, j’ai eu en retour

    ./check_snmp_dell_equallogic: line 19: /bin/basename: aucun fichier ou dossier de ce type
    ./check_snmp_dell_equallogic: line 256: /bin/awk: aucun fichier ou dossier de ce type
    ./check_snmp_dell_equallogic: line 256: /bin/awk: aucun fichier ou dossier de ce type

    quelqu’un pourrait-il m’aider svp?
    merci

  7. Yoann 24 Mar, 2012

    Bonjour,

    Les erreurs indiquent qu’il ne trouve pas certains fichiers binaires (awk et basename). En fonction de votre système, il se peut en effet que ces fichiers soient localisés à un autre emplacement. Pour les localiser, il vous suffit d’utiliser la commande whereis.

    whereis basename
    whereis awk

    Ensuite, il vous suffit d’éditer le script avec un éditeur de texte afin d’indiquer leurs emplacements respectifs.

    vi check_snmp_dell_equallogic

    CMD_BASENAME="/bin/basename"
    CMD_AWK="/bin/awk"

    Cordialement.

  8. max 6 Avr, 2012

    Super merci beaucoup ca marche nikel 🙂

  9. ghisf 25 Avr, 2012

    Bonjour,
    Merci beaucoup pour ce script, très complet.
    Les commentaires m’ont été très utiles également.

  10. Momo 3 Mai, 2012

    Bonjour,
    Est-il possible de monitorer l’etat d’une réplication de volumes?
    Merci

  11. Yoann 8 Mai, 2012

    Bonjour,

    En parcourant rapidement la MIB EQLVOLUME-MIB, plusieurs entrées concernent la réplication. Il est donc certainement possible de superviser cette information.

    Cordialement.

  12. Dell 13 Mai, 2012

    Bonjour,

    j’ai exécuté le script ./check_snmp_dell_equallogic -H mon @ -C public et j’ai eu Unknown comme réponse, pouvez vous m’aidez SVP.

  13. Yoann 16 Mai, 2012

    Bonjour,

    Il est nécessaire d’indiquer le nom de la baie de stockage avec l’argument n et le type avec l’argument t (par défaut cette valeur vaut info).

    Cordialement.

  14. David 11 Jan, 2013

    Bonjour,

    J’ai une baie PS4100XV firmware 5.2.2
    Le script fonctionne correctement lorsque je lance manuellement la commande mais dans nagios, dans « status information » je n’ai que OK.. pas de perfdata
    J’utilise nagios 3.3.1 (FAN 2.1)
    auriez vous une idée.

  15. Yoann 11 Jan, 2013

    Bonjour,

    Si vous n’avez aucune information dans le champ Performance Data, je vous suggère de vérifier que les données de performances sont activées dans le fichier /etc/nagios/nagios.cfg :

    process_performance_data=1

    Cordialement.

  16. Arbredelaforet 14 Fév, 2013

    Merci pour ce script mais il manque le plus important ! C’est à dire l’interprétation des compteurs I/O (en iops, donc combien il y a d’entrées/sorties/secondes), car en l’état, connaitre le compteur de lecture et écriture ne sert à rien.
    Je vais essayer de l’écrire et vous le poster ensuite.

    ++ and Be root !

  17. Yoann 14 Fév, 2013

    Bonjour,

    Le nombre de I/O par secondes doivent être exploité sous formes graphiques avec RRDTool par exemple.

    Si vous souhaitez directement avoir les valeurs, il est nécessaire de créer un fichier temporaire pour y placer les valeurs précédentes et réaliser une soustraction avec les nouvelles données récupérées. Ce que fait automatiquement RRDTool en indiquant qu’il s’agit de données de type COUNTER.

    Cordialement.

  18. Benoit Chauvet 5 Juin, 2013

    J’ai eu la meme difficulté que l’utilisateur « Dell » (commentaire du 13 mai)

    Pour m’aider a trouver le ‘bon nom’ de la baie de stockage (faisant partie de l’equipe supervision, je ne connais pas forcément les details connus de l’equipe stockage), j’ai modifié le script :

    J’ai inseré les lignes suivantes JUSTE AVANT LES DEUX DERNIERS ‘fi’ en fin de script :

    ———————-
    else
    MEMBER_NAME=`$CMD_SNMPWALK -t 2 -r 2 -v 1 -c $COMMUNITY $HOSTNAME $OID_MEMBER_ID | $CMD_AWK ‘{ print $4 }’`
    DESCRIPTION= »$NAME not found : (detected $MEMBER_NAME) »
    ———————-

    Ainsi, le script retourne
    MAUVAIS-NOM not found : (detected « BON-NOM »)
    au lieu de
    Unknown

    (c’est tout de même plus parlant)

    Merci tout de même pour cet excellent script !

  19. delestre 26 Juin, 2013

    bonjour,

    juste une remarque sur l’utilisation de ce script.

    je possede 4 baies EqualLogic architecturé en 2 groupes ( Prod et Pra ).

    Le premier groupe possède 3 storage Pool ( 1 storage pool = 1 membre ).
    Le deuxieme groupe possede 1 storage Pool, pas de probleme ici.

    Lors de l’interrogation d’un volume sur une baie du 1er groupe ( check_snmp_dell_equallogic -H Adresse_Ip_Management -C communauté -n baie2 -t volume -v volume_name -w90 -c95 ), j’ai des Pb de Mib. En effet, le VOLUME_ID n’est pas trouvé. L’astuce sans touché au script est de passer comme membre la baie1 même si le volume est sur un autre membre.

    /usr/bin/snmpwalk -t 2 -r 2 -v 1 -c communauté adresse_ip_mgt .1.3.6.1.4.1.12740.5.1.7.1.1.4

    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.26050256.27 = STRING: « Sur_baie1_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.891630520.1 = STRING: « vss-control »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.5 = STRING: « Sur_baie1_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.6 = STRING: « Sur_baie2_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.7 = STRING: « Sur_baie1_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.10 = STRING: « xx-ctl »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.12 = STRING: « yyy »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.14 = STRING: « Sur_baie1_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.15 = STRING: « Sur_baie2_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.17 = STRING: « Sur_baie1_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.18 = STRING: « Sur_baie2_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.20 = STRING: « Sur_baie3_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.21 = STRING: « Sur_baie3_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.23 = STRING: « Sur_baie1_volumename »
    SNMPv2-SMI::enterprises.12740.5.1.7.1.1.4.1593382338.24 = STRING: « Sur_baie1_volumename »

  20. Yoann 27 Juin, 2013

    Bonjour,

    Merci pour vos remarques qui aideront certainement d’autres personnes.

  21. Flo 2 Juil, 2013

    Superbe article merci beaucoup ! vous m’avez fait gagner beaucoup de temps.

  22. wamuu 25 Juil, 2013

    Excellent, merci

  23. Damien 2 Sep, 2013

    Bonjour,
    J’ai remarqué que les données de performances « io » retournées étaient basées sur un cumul (depuis le dernier reboot à priori). Difficile donc de suivre les I/O par seconde …

    J’ai adapté le script pour faire 2 relevés espacés de 10 secondes et faire une moyenne. Ce n’est pas ultra précis mais ça me permet de suivre l’utilisation du SAN avec une précision suffisante (comparaison faite avec SAN HQ).

    Voici le bout de code modifié (si vous avez des suggestions d’amélioration je suis preneur) :
    elif [ $TYPE = « io » ]; then
    # Check I/O performance (Usage : ./check_snmp_dell_equallogic -H 127.0.0.1 -C public -n BAIE01 -t io)
    IO_READ_1=`$CMD_SNMPGET -t 2 -r 2 -v 2c -c $COMMUNITY -Ovq $HOSTNAME ${OID_IO_READ}.${MEMBER_ID}`
    sleep 10
    IO_READ_2=`$CMD_SNMPGET -t 2 -r 2 -v 2c -c $COMMUNITY -Ovq $HOSTNAME ${OID_IO_READ}.${MEMBER_ID}`
    IO_READ=$(($IO_READ_2 – $IO_READ_1))
    IO_READ=$(($IO_READ / 10))

    IO_WRITE_1=`$CMD_SNMPGET -t 2 -r 2 -v 2c -c $COMMUNITY -Ovq $HOSTNAME ${OID_IO_WRITE}.${MEMBER_ID}`
    sleep 10
    IO_WRITE_2=`$CMD_SNMPGET -t 2 -r 2 -v 2c -c $COMMUNITY -Ovq $HOSTNAME ${OID_IO_WRITE}.${MEMBER_ID}`
    IO_WRITE=$(($IO_WRITE_2 – $IO_WRITE_1))
    IO_WRITE=$(($IO_WRITE / 10))

    DESCRIPTION= »Member ‘${NAME}’ – I/O Operations Per Second : Read counter’s value is ${IO_READ} and write counter’s value is $IO_WRITE | read=${IO_READ}c;0;0;0 write=${IO_WRITE}c;0;0;0″
    STATE=$STATE_OK

  24. Yoann 7 Sep, 2013

    Bonjour,

    En effet, les données de performances pour les I/O sont des données de type « COUNTER » et sont facilement exploitables avec l’outil RRDTool.
    C’est pour cette raison qu’elles ne sont pas mises en forme.

    L’attente de 10 secondes est préjudiciable. Il est dommage d’attendre un certain temps pour rien.
    Il est préférable de stocker la donnée quelque part (par exemple, dans un fichier temporaire) puis de faire une soustraction avec la nouvelle donnée récupérée lors de la prochaine exécution. C’est ce que j’avais fait pour le plugin check_snmp_traffic lorsque je ne connaissais pas encore RRDTool.

    Cordialement.

  25. Davide 24 Déc, 2013

    Bonjour,

    Nous avons un PS6100 en version 6.0.7 et je rencontrais deux problèmes avec les volumes.

    Le premier est lorsqu’il y a deux volumes qui contiennent la même chaine:

    Ligne 586 :
    VOLUME_ID=`$CMD_SNMPWALK -t 2 -r 2 -v 1 -c $COMMUNITY $HOSTNAME ${OID_VOLUME_NAME}.${MEMBER_ID} | $CMD_GREP -i « $VOLUME » | $CMD_AWK ‘{print $1}’ | $CMD_AWK -F « . » ‘{print $NF}’`
    Par :
    VOLUME_ID=`$CMD_SNMPWALK -t 2 -r 2 -v 1 -c $COMMUNITY $HOSTNAME ${OID_VOLUME_NAME}.${MEMBER_ID} | $CMD_GREP -i « $VOLUME » | $CMD_AWK ‘{print $1}’ | $CMD_AWK -F « . » ‘{print $NF}’ |head -n1`

    Et le deuxième un problème de remontées des infos de tailles du volume :
    Ligne 613:
    VOLUME_USED=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -Ovq $HOSTNAME ${OID_VOLUME_USED}.${MEMBER_ID}.${VOLUME_ID}`
    Par :
    VOLUME_USED=`$CMD_SNMPGET -t 2 -r 2 -v 1 -c $COMMUNITY -Ovq $HOSTNAME ${OID_VOLUME_USED}.${MEMBER_ID}.${VOLUME_ID} | $CMD_AWK ‘{print $1}’`

    A part ces deux petits détails, un grand merci a Yoann

    Cordialement,

  26. AIMAD 11 Juin, 2014

    Bonjour,

    J’ai bien suivi ce tuto et ça fonctionne très bien pour monitorer nos deux baies equallogic avec Icinga.

    Peux tu me dire comment tu obtient les graphiques. C’est la seule partie de ce projet que je n’ai pas pu deployer. J’aimerais avoir des graph sur l’évolution de la consommation de la ram, de l’espace disque ect… Actuellement les seuls graph proposé par Icinga donne des graph sur l’état des service OK, CRITIQUE…

    Merci de ta réponse

    A+

  27. Yoann 12 Juin, 2014

    Bonjour,

    Les graphiques sont générés par RRDTool à partir des données de performances retournées par le plugin Nagios.

    J’utilise PNP4Nagios en complément de Nagios Core pour stocker les données de performances dans des bases RRD et les afficher.

    Cordialement.

  28. AIMAD 12 Juin, 2014

    Merci pour cette réponse.

    As tu un tutoriel comme pour les baies equallogic qui explique pas a pas la génération de graphiques ?

    Merci

  29. Yoann 13 Juin, 2014

    Dans un premier temps, il est nécessaire d’activer les données de performances dans Nagios (paramètre process_performance_data à 1 dans le fichier de configuration nagios.cfg).
    Il faut définir soit un nouveau template de type service soit ajouter directement le paramètre process_perf_data à 1 dans ceux existants (et qui retournent des données de performances) :

    define service {
    host_name grpbaies
    use generic_service
    process_perf_data 1
    service_description BAIE01_Latence
    check_command check_dell_equallogic_latency!public!baie01
    contact_groups +admin
    }

    Dans un deuxième temps, ces données de performances doivent être stockées quelque part (par exemple, dans des bases RRD avec RRDTool). PNP4Nagios s’intègre à Nagios et permet cela.

    Cordialement.

  30. AIMAD 16 Juin, 2014

    ça ne marche pas. Quand j’ajoute le service dans template.cfg et que je redémarre icinga j’ai un message d’erreur dans icinga.chk

  31. Yoann 19 Juin, 2014

    Bonjour,

    Il s’agit d’un problème dans votre configuration. Je ne peux que vous renvoyez vers la documentation Icinga sur les données de performances et sur l’intégration avec PNP4Nagios.

    Cordialement.

  32. delestre 6 Nov, 2014

    Bonjour,

    je ( nous ) possède 4 baies EqualLogic architecturé en 2 groupes ( Prod et Pra ).

    J’utilise ce script pour surveiller. Pas de Probleme.

    Juste une question / Remarque, depuis quelques temps , nous avons constaté des dégradations de perf.

    La cause, un des ports sur la baie qui a négocié en 100MB à la place du Giga 🙁
    Intervention pour changer cables, etc..

    Y a t’il la possibilité de tester que le lien est bien en Giga ?
    dans les OID_NETWORK_STATUS ??
    car le status -t network ne donne que le status up ou pas. C’est bien cela.

    ou une autre manière pour surveiller les interfaces ??
    merci.

  33. Yoann 6 Nov, 2014

    Bonjour,

    Oui, il est possible de déterminer si les liens réseaux sont bien en Giga via l’OID.1.3.6.1.2.1.2.2.1.5 (ifSpeed, IF-MIB), comme il est possible de vérifier que la MTU des liens est bien à 9000 via l’OID .1.3.6.1.2.1.2.2.1.4 (ifMtu, IF-MIB).

    Je vais regarder pour l’implémenter ces prochains jours.

    Cordialement.

  34. delestre 7 Nov, 2014

    Super et les MTU à 9000 🙂

    Merci

  35. delestre 14 Nov, 2014

    Merci. Script mis en place.

  36. Augusto 11 Mar, 2015

    Produit très utile. Valeur ajoutée à Nagios. Merci.

  37. Valentin 22 Juil, 2016

    Bonjour,

    J’ai suivi ce tuto mais malheureusement, lorsque je lance la commande pour tester le plugin, j’ai comme retour : unknow.

    Comment peut on trouver le nom de membre ? J’ai comme matétiel DELL une SCV2080 et voici ma ligne de commande :

    ./check_snmp_dell_equallogic -H **.***.***.*** -C ******* -n SCV2080 -t info

  38. Yoann 22 Juil, 2016

    Bonjour,

    Ce plugin Nagios fonctionne uniquement pour les baies de stockage Dell EqualLogic.

    Cordialement.

  39. Valentin 22 Juil, 2016

    Bonjour Yoann et merci pour ta réponse !

    Tu n’aurais pas de solutions pour réaliser le même travail sur une Scv 2080 ?

    Merci

  40. Yoann 22 Juil, 2016

    La solution est de développer le plugin Nagios correspondant à ce matériel.

  41. Valentin 18 Jan, 2017

    Bonjour Yoann, et merci pour ton script !

    Juste un problème chez moi. J’ai un groupe de stockage (GRP1) qui contient 3 membres (EQL1, EQL11 et EQL12).

    Lorsque je supervise les EQL11 et EQL12 : aucuns problèmes, toute les commandes fonctionne parfaitement !
    Par contre, j’obtiens un message d’erreur lors de l’exécution des commandes sur EQL1 (ex : pour la santé) :

    ./check_snmp_dell_equallogic.pl -H ‘@IP_GRP1’ -C ‘COMMUNAUTÉ’ -n EQL1 -t health
    No log handling enabled – turning on stderr logging
    snmp_build: unknown failuresnmpget: Error building ASN.1 representation (Can’t build OID for variable)
    Member ‘EQL1’ – Global system status : Unknown

    Aurais-tu une solution pour résoudre ce problème ?

    Merci d’avance

  42. Yoann 18 Jan, 2017

    Bonjour,

    J’ai choisi de laisser une certaine approximation dans le nom du membre.

    Dans votre cas, le soucis vient du ‘grep’ effectué sur le nom du membre afin de récupérer l’identifiant correspondant (à la ligne 271, ‘MEMBER_ID’).
    Comme le nom du membre est ‘EQL1’, la commande retourne 3 résultats (‘EQL1’, ‘EQL11’ et ‘EQL12’) au lieu d’un seul.

    A la ligne 271, il vous suffit d’ajouter l’argument ‘x’ à la commande ‘grep’ de la manière suivante : ‘… $CMD_GREP -xi $NAME …’.

    Cordialement.

  43. Valentin 19 Jan, 2017

    Bonjour Yoann et merci pour ton retour.

    J’ai modifié le programme comme tu me l’a dis (ajout du x à la ligne 271)

    Mais désormais, toute mes commandes me retournent le résultat : Unkwown

    Une idée ?

    Cordialement.

  44. Yoann 19 Jan, 2017

    C’est que l’identifiant correspondant au membre est vide. Cela vient du ‘grep’.

  45. twister 19 Jan, 2017

    J’ai le même problème j’ai fait la modification même tjs unknown en résultat.

  46. Yoann 22 Jan, 2017

    Bonjour,

    A la ligne 271, essayez d’ajouter plutôt l’argument ‘w’ à la commande ‘grep’ de la manière suivante : ‘… $CMD_GREP -iw $NAME …’.

    Cela devrait être bon.

    Cordialement.

  47. Valentin 23 Jan, 2017

    Ça fonctionne c’est parfait !

    Merci beaucoup.




Le thème Celadon pour WordPress a été créé par Themes Boutique