Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Plugin Nagios en Perl


Sujet :

Programmation et administration système Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Plugin Nagios en Perl
    Bonjour,

    Je planche actuellement sur un script perl permettant de vérifier le nom des Lun sur une baie Netapp, et de retourner une valeur si l'une d'entre elle contient "_Backup".
    Malheureusement je n'arrive pas à le faire fonctionner.

    J'utilise Nagios::Plugin, car Monitoring::Plugin n'est pas installé sur mon serveur Nagios.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Nagios::Plugin;
     
      my $plugin = Nagios::Plugin->new(
          usage => "Usage: %s [-V <host>] [-V <snmp version>] [-c <community>]"
      );
     
      $plugin->add_arg(
          spec    => 'host|H=s@',
          help    => "--host NAME\n   Ip address of the controller to check",
              required => 1,
      );
     
      $plugin->add_arg(
          spec    => 'version|V=s@',
          help    => "--version NAME\n   The version of the snmp community (1/2c/3)",
              required => 1,
      );
     
      $plugin->add_arg(
          spec    => 'community|c=s@',
          help    => "--community NAME\n   The name of the snmp community",
              required => 1,
      );
     
     $plugin->getopts();
     my $opts = $plugin->opts();
     
      my $host                      		= $opts->get('host');
      my $version                           = $opts->get('version');
      my $community                         = $opts->get('community');
     
    my $Backup = `snmpwalk -v $version -c $community $host 1.3.6.1.4.1.789.1.17.15.2 | grep *_Backup | wc -l`;
     
     
    if ( $Backup != 0  ) {
    	print "Présence de backup de LUN";
    	exit 2;
    }
    else {
    	print "Pas de Backup de LUN présent";
    	exit 0;
    }
    Le script se coupe à "$plugin->getopts();" (vérifier à l'aide d'un print placé après chaque action). J'ai donc essayer la version que vous proposer dans votre tuto à savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $plugin->getopts;
    my $host = $plugin->opts->host;
    my ...
    Mais sans résultat, le script ce coupe de la même manière.
    Je dois très certainement oublié quelque chose, ou le faire de la mauvaise manière mais je n'arrive pas à trouver ou/quoi.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 566
    Points : 497 760
    Points
    497 760
    Par défaut
    Bonjour,

    Tu as lu cette documentation Concevoir facilement un plugin Nagios en Perl ?
    Tu ne peux pas faire installer le module Monitoring::Plugin sur ton serveur ?
    Tu utilises quelle version de Perl ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Citation Envoyé par djibril Voir le message
    Bonjour,

    Tu as lu cette documentation Concevoir facilement un plugin Nagios en Perl ? Oui, très bien faites d'ailleurs.
    Tu ne peux pas faire installer le module Monitoring::Plugin sur ton serveur ? Malheureusement non, je n'ai pas les droits nécessaires, et ce n'est pas un projet prévu dans un futur proche.
    Tu utilises quelle version de Perl ? v5.10.1, de même que pour le module je n'ai pas la possibilité de le mettre à jour.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 566
    Points : 497 760
    Points
    497 760
    Par défaut
    Bonjour,

    à la place de essaye

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je viens d'essayer, sans résultat j'ai toujours le même problème.

    Afin d'êtres plus parlant, voila le script que j'utilise pour tester le bon fonctionnement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Nagios::Plugin;
     
    print "1";
     
      my $plugin = Nagios::Plugin->new(
          usage => "Usage: %s [-H <host>] [-V <snmp version>] [-c <community>]"
      );
     
      $plugin->add_arg(
          spec    => 'host|H=s',
          help    => "--host NAME\n   Ip address of the controller to check",
              required => 1,
      );
     
      $plugin->add_arg(
          spec    => 'version|V=s@',
          help    => "--version NAME\n   The version of the snmp community (1/2c/3)",
              required => 1,
      );
     
      $plugin->add_arg(
          spec    => 'community|c=s@',
          help    => "--community NAME\n   The name of the snmp community",
              required => 1,
      );
     
    print "2";
     
    $plugin->getopts();
     
    print "3";
     
      my $opts = $plugin->opts();
      my $host = $opts->get('host');
      my $version = $opts->get('version');
      my $community = $opts->get('community');
     
    print "4";
     
    my $Backup = `snmpwalk -v $version -c $community $host 1.3.6.1.4.1.789.1.17.15.2 | grep *_Backup | wc -l`;
     
    if ( $Backup != 0  ) {
            print "Présence de backup de LUN";
            exit 2;
    }
    else {
            print "Pas de Backup de LUN présent";
            exit 0;
    }
    Les print me permettent de repérer ou le script bloque, j'ai donc comme retour en console "12check_test.pl".

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 566
    Points : 497 760
    Points
    497 760
    Par défaut
    Hum. Le bogue est étrange quand même.
    Sincèrement, là faut que tu vois avec ton admin système pour qu'il te fasse la mise à jour de quelques modules.
    Tu lui donnes les commandes pour mettre à jour certains modules pour qu'il le fasse sur le serveur.

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    août 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : août 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Désoler pour ce retour un peu tardif.

    Donc finalement j'ai réussi à "contourner" le problème... j'ai fini par faire un script Bash et oh miracle cela fonctionne.
    Malheureusement, mettre à jour des modules est une tache colossal car nous avons un assez grand nombre de solution de supervision de déployer et cela demanderai des ressources dont nous ne disposerons pas avant plusieurs mois.

    Je laisse ici le code qui fonctionne si cela peut aider quelqu'un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #!/bin/bash
    #
    # Check the presence of LUN Backup
    #
    # Date: 2017-08-08
    # Author: Axel Lucas
    #
    # the memory check is done with following command line:
    # snmpwalk -v $Version -c $Community $Host 1.3.6.1.4.1.789.1.17.15.2 | grep *_Backup | wc -l
     
    # get arguments
     
    while getopts 'H:V:C:hp' OPT; do
      case $OPT in
        H)  Host=$OPTARG;;
        C)  Community=$OPTARG;;
        V)  Version=$OPTARG;;
        h)  hlp="yes";;
        *)  unknown="yes";;
      esac
    done
     
    # usage
    HELP="
        usage: $0 [ -H hostadress -V snmp_version -C snmp_community -p -h ]
     
        syntax:
     
                -H --> IP adress of the host
                -C --> SNMP Community
                -V --> SNMP Version to use (1/2c/3)
                -h --> print this help screen
    "
     
    if [ "$hlp" = "yes" -o $# -lt 1 ]; then
      echo "$HELP"
      exit 0
    fi
     
    # get list of lun and count it
    LUN_STAT=`snmpwalk -v $Version -c $Community $Host 1.3.6.1.4.1.789.1.17.15.2 | grep Backup | wc -l`
     
    # output result
    OUTPUT="There is $LUN_STAT Backup of lun present."
    err=0
     
      if (($LUN_STAT > 0)); then
        err=1
      elif (($LUN_STAT >= 2)); then
        err=2
      fi
     
      if (( $err == 0 )); then
          echo -n "OK - $OUTPUT"
          exit "$err"
     
      elif (( $err == 1 )); then
          echo -n "WARNING - $OUTPUT"
          exit "$err"
     
      elif (( $err == 2 )); then
          echo -n "CRITICAL - $OUTPUT"
          exit "$err"
     
      fi
     
    exit

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concevoir facilement un plugin Nagios en Perl
    Par djibril dans le forum Programmation et administration système
    Réponses: 12
    Dernier message: 21/12/2014, 19h40
  2. erreur dexecution l'ors de lancement d'un plugin nagios en perl
    Par chella dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 09/04/2011, 01h20
  3. Concevoir facilement un plugin Nagios en Perl
    Par djibril dans le forum Linux
    Réponses: 0
    Dernier message: 05/03/2011, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo