Announcement

Collapse
No announcement yet.

comment superviser le traffic de switch HP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • comment superviser le traffic de switch HP

    j'ai nagios 2.9 et centréon 1.4.1 qui tournent sur une débian etch avec les plugins 1.4.9.

    je cherche un moyen de grapher l'évolution du traffic sur mes switchs.

    j'ai essayer avec les plugins fournis d'origine, mais rien de concluant. J'ai souvent (no output!) comme avec check_centréon_traffic qui utilise check_centreon_snmp_traffic.

    je viens de tester check_snmp_int, il me donne une information de ce type : Usage: /usr/local/nagios/libexec/check_snmp_int [-v] -H -C [-2], et après avoir modifié plusieurs valeurs, je crois bien que ce plugin est prévu pour des interfaces pc et non des switchs...?

    j'ai actuellement un début de graph en utilisant check_snmp avec une oid de la mib2(pointant sur l'interface 1 du switch) qui me donne des valeurs warning car j'ai mis volontairement un seuil très bas, mais ce n'est pas le but.

    j'aimerais savoir comment vous faites et ce que vous utilisez pour superviser des switchs HP au niveau du traffic réseau.

    j'aimerais naturellement pouvoir avoir le traffic de l'ensemble des ports du switchs et non le traffic un par un comme je l'ai vu sur quelques posts, car j'ai une trentaine de switchs de 24 ports mini à superviser.

    merci d'avance

    un centréoniste débutant

  • #2
    Bonjour à toi,
    Pour ma part je supervise mes switchs HP (2524 et 2626) avec le check centreon, c'est à dire le check_centreon_traffic et cela fonctionne très bien. As-tu essayer d'executer le check en ligne de commande ? Mes arguments pour superviser chaque ports sont les suivants avec en exemple le port 1 (le numero du port est le premier argument) :
    Code:
    !1!80!90!public!1

    Comment


    • #3
      j'ai également la command check_centreon_traffic, mais elle fait appelle au plugin check_centreon_snmp_traffic dont voici le début du contenu : (histoire de voir si c'est le même que le tien ou pas)

      Code:
      #! /usr/bin/perl -w
      ###################################################################
      # Oreon is developped with GPL Licence 2.0 
      #
      # GPL License: http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
      #
      # Developped by : Julien Mathis - Romain Le Merlus 
      #                 Christophe Coraboeuf - Sugumaran Mathavarajan
      #
      ###################################################################
      # This program is free software; you can redistribute it and/or
      # modify it under the terms of the GNU General Public License
      # as published by the Free Software Foundation; either version 2
      # of the License, or (at your option) any later version.
      #
      # This program is distributed in the hope that it will be useful,
      # but WITHOUT ANY WARRANTY; without even the implied warranty of
      # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      # GNU General Public License for more details.
      # 
      #    For information : [email protected]
      ####################################################################
      #
      # Script init
      #
      
      use strict;
      use Net::SNMP qw(:snmp oid_lex_sort);
      use FindBin;
      use lib "$FindBin::Bin";
      use lib "/usr/local/nagios/libexec";
      use utils qw($TIMEOUT %ERRORS &print_revision &support);
      if (eval "require oreon" ) {
          use oreon qw(get_parameters);
          use vars qw(%oreon);
          %oreon=get_parameters();
      } else {
      	print "Unable to load oreon perl module\n";
          exit $ERRORS{'UNKNOWN'};
      }
      use vars qw($PROGNAME);
      use Getopt::Long;
      use vars qw($opt_V $opt_h $opt_v $opt_C $opt_b $opt_k $opt_u $opt_p $opt_H $opt_D $opt_i $opt_n $opt_w $opt_c $opt_s $opt_T);
      
      # Plugin var init
      
      my($proc, $proc_run, @test, $row, @laste_values, $last_check_time, $last_in_bits, $last_out_bits, @last_values, $update_time, $db_file, $in_traffic, $out_traffic, $in_usage, $out_usage);
      
      $PROGNAME = "$0";
      sub print_help ();
      sub print_usage ();
      
      Getopt::Long::Configure('bundling');
      GetOptions
          ("h"   => \$opt_h, "help"         => \$opt_h,
           "u=s"   => \$opt_u, "username=s" => \$opt_u,
           "p=s"   => \$opt_p, "password=s" => \$opt_p,
           "k=s"   => \$opt_k, "key=s"      => \$opt_k,
           "s"   => \$opt_s, "show"         => \$opt_s,
           "V"   => \$opt_V, "version"      => \$opt_V,
           "i=s" => \$opt_i, "interface=s"  => \$opt_i,
           "n"   => \$opt_n, "name"         => \$opt_n,
           "v=s" => \$opt_v, "snmp=s"       => \$opt_v,
           "C=s" => \$opt_C, "community=s"  => \$opt_C,
           "b=s" => \$opt_b, "bps=s"        => \$opt_b,
           "w=s" => \$opt_w, "warning=s"    => \$opt_w,
           "c=s" => \$opt_c, "critical=s"   => \$opt_c,
           "T=s" => \$opt_T,
           "H=s" => \$opt_H, "hostname=s"   => \$opt_H);
      
      if ($opt_V) {
          print_revision($PROGNAME,'$Revision: 1.2 $');
        exit $ERRORS{'OK'};
      }
      
      if ($opt_h) {
          print_help();
          exit $ERRORS{'OK'};
      
      Getopt::Long::Configure('bundling');
      }
      
      ##################################################
      #####      Verify Options
      ##
      
      if (!$opt_H) {
      print_usage();
      exit $ERRORS{'OK'};
      }
      my $snmp = "1";
      if ($opt_v && $opt_v =~ /^[0-9]$/) {
      $snmp = $opt_v;
      }
      
      if ($snmp eq "3") {
      if (!$opt_u) {
      print "Option -u (--username) is required for snmpV3\n";
      exit $ERRORS{'OK'};
      }
      if (!$opt_p && !$opt_k) {
      print "Option -k (--key) or -p (--password) is required for snmpV3\n";
      exit $ERRORS{'OK'};
      }elsif ($opt_p && $opt_k) {
      print "Only option -k (--key) or -p (--password) is needed for snmpV3\n";
      exit $ERRORS{'OK'};
      }
      }
      
      if ($opt_n && !$opt_i) {
          print "Option -n (--name) need option -i (--interface)\n";
          exit $ERRORS{'UNKNOWN'};
      }
      
      if (!$opt_C) {
      $opt_C = "public";
      }
      
      if (!$opt_i) {
      $opt_i = 2;
      }
      
      if (!$opt_b) {
      $opt_b = 95;
      }
      
      if ($opt_b =~ /([0-9]+)/) {
      my $bps = $1;
      }
      my $critical = 95;
      if ($opt_c && $opt_c =~ /[0-9]+/) {
      $critical = $opt_c;
      }
      my $warning = 80;
      if ($opt_w && $opt_w =~ /[0-9]+/) {
      $warning = $opt_w;
      }
      my $interface = 0;
      if ($opt_i =~ /([0-9]+)/ && !$opt_n){
          $interface = $1;
      } elsif (!$opt_n) {
          print "Unknown -i number expected... or it doesn't exist, try another interface - number\n";
          exit $ERRORS{'UNKNOWN'};
      }
      
      if ($critical <= $warning){
          print "(--crit) must be superior to (--warn)";
          print_usage();
          exit $ERRORS{'OK'};
      }
      
      #################################################
      #####            Plugin snmp requests
      ##
      
      my $OID_DESC =$oreon{MIB2}{IF_DESC};
      my $OID_OPERSTATUS =$oreon{MIB2}{IF_OPERSTATUS};
      my @operstatus = ("up","down","testing", "unknown", "dormant", "notPresent", "lowerLayerDown");
      
      # create a SNMP session
      my ($session, $error);
      if ($snmp eq "1" || $snmp eq "2") {
      ($session, $error) = Net::SNMP->session(-hostname => $opt_H, -community => $opt_C, -version => $snmp);
      if (!defined($session)) {
          print("UNKNOWN: SNMP Session : $error\n");
          exit $ERRORS{'UNKNOWN'};
      }
      }elsif ($opt_k) {
          ($session, $error) = Net::SNMP->session(-hostname => $opt_H, -version => $snmp, -username => $opt_u, -authkey => $opt_k);
      if (!defined($session)) {
          print("UNKNOWN: SNMP Session : $error\n");
          exit $ERRORS{'UNKNOWN'};
      }
      }elsif ($opt_p) {
          ($session, $error) = Net::SNMP->session(-hostname => $opt_H, -version => $snmp,  -username => $opt_u, -authpassword => $opt_p);
      if (!defined($session)) {
          print("UNKNOWN: SNMP Session : $error\n");
          exit $ERRORS{'UNKNOWN'};
      }
      }
      
      #getting interface using its name instead of its oid index
      
      if ($opt_n) {
          my $result = $session->get_table(Baseoid => $OID_DESC);
          if (!defined($result)) {
              printf("ERROR: Description Table : %s.\n", $session->error);
              $session->close;
              exit $ERRORS{'UNKNOWN'};
          }
          foreach my $key ( oid_lex_sort(keys %$result)) {
              if ($result->{$key} =~ m/$opt_i/) {
      		    my @oid_list = split (/\./,$key);
      		    $interface = pop (@oid_list) ;
      		}
          }
      }
      
      my $OID_IN =$oreon{MIB2}{IF_IN_OCTET}.".".$interface;
      my $OID_OUT = $oreon{MIB2}{IF_OUT_OCTET}.".".$interface;
      my $OID_SPEED = $oreon{MIB2}{IF_SPEED}.".".$interface;
      
      # Get desctiption table
      
      if ($opt_s) {
          my $result = $session->get_table(Baseoid => $OID_DESC);
      if (!defined($result)) {
          printf("ERROR: Description Table : %s.\n", $session->error);
          $session->close;
          exit $ERRORS{'UNKNOWN'};
      }
      foreach my $key ( oid_lex_sort(keys %$result)) {
          my @oid_list = split (/\./,$key);
          my $index = pop (@oid_list) ;
          my $interface_status = $session->get_request(-varbindlist => [$OID_OPERSTATUS.".".$index]);
          if (!defined($result)) {
      	printf("ERROR: Interface Status Request : %s", $session->error);
      	exit $ERRORS{'UNKNOWN'};
      	}
              print "Interface $index :: $$result{$key} :: ".$operstatus[$interface_status->{$OID_OPERSTATUS.".".$index} - 1]."\n";
      }
      exit $ERRORS{'OK'};
      }
      J'ai (no output!) comme information, j'ai !A1!80!90!public!1 comme argument, A1 étant le nom du 1er port et la ligne de commande est : $USER1$/check_centreon_snmp_traffic -H $HOSTADDRESS$ -i $ARG1$ -w $ARG2$ -c $ARG3$ -C $ARG4$ -v $ARG5$

      J'ai testé en changeant la version snmp, l'interface mais toujours pareil.

      Comment


      • #4
        Par contre, si j'utilise un service avec ce plugin : $USER1$/check_snmp_int -H $HOSTADDRESS$ -C public -n $ARG1$ -k -w 200,400 -c 0,600

        Comment


        • #5
          j'ai des informations différentes selon le port indiqué en argument :

          A1 : A18OWN,(ainsi que quelques autres), A1:UP (0.1KBps/3.4KBps), : 10 int NOK : CRITICAL
          A2 : A20:UP (2.7KBps/4.5KBps), A2:UP (29.3KBps/9.4KBps):2 UP: OK
          A20 :A20:UP (2.7KBps/4.5KBps):1 UP: OK

          merci au modérateur de fusionner mes réponses, mais pas moyens tout mettre sur une seule réponses, il me dit que j'ai plus de 4 image dedans. désolé

          Comment


          • #6
            Bizarre ton switch moi mes interfaces ont seulement un numéro. C'est quel modèle ?

            Comment


            • #7
              HP procurve 4104gl - HPJ4887A (c'est le coeur du réseau ne fibre)

              Comment


              • #8
                Dans ton dossier de plugins (de base /usr/local/nagios/libexec) tape cette commande :
                Code:
                ./check_centreon_snmp_traffic -H IPduSwitch -s
                Paste les résultats ici ensuite.
                Last edited by julien60; 11 September 2007, 07:54.

                Comment


                • #9
                  172.16.1.1 étant le switch en question :

                  debian-nagios:/usr/local/nagios/libexec# ./check_centreon_snmp_traffic -H 172.16.1.1 -s
                  Can't locate Config/IniFiles.pm in @INC (@INC contains: /usr/local/nagios/libexec /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/local/nagios/libexec/oreon.pm line 27.
                  BEGIN failed--compilation aborted at /usr/local/nagios/libexec/oreon.pm line 27.
                  Compilation failed in require at ./check_centreon_snmp_traffic line 34.
                  BEGIN failed--compilation aborted at ./check_centreon_snmp_traffic line 34.

                  Comment


                  • #10
                    Ton plugins te colle déja une erreur.... il ne trouve pas le fichier IniFiles.pm
                    Faut que tu corriges ça avant d'aller plus loin.

                    Comment


                    • #11
                      un grand merci pour votre aide, suite à vos remarques, j'ai recherché sur le forum et j'ai trouvé une solution ici : http://forum.oreon-project.org/showthread.php?t=2706

                      je l'ai donc appliqué :

                      perl -MCPAN -e shell
                      cpan> install Config::IniFiles

                      le fichier configIniFiles est alors créé et le plugin fonctionne.

                      Je me permet de reposer une question déjà vu plusieur fois sur ce forum mais à la quelle je n'ai pas vu de solution :

                      quelqu'un a t il une solution pour pouvoir avoir le traffic de tous les ports du switch avec un seul service ?
                      Last edited by Cajiss; 11 September 2007, 09:17.

                      Comment


                      • #12
                        Pour ma part j'ai du crée un service pour chaque port ! Et puis c'est difficile à exploiter un plugins qui te renvoie une centaine d'infos. C'est surement possible a faire néanmoins.

                        Comment


                        • #13
                          C'est interessant comme problème. Je risque de me retrouver dans la mème situation prochainement donc on va essayer de faire avancer le débat ^^

                          Si j'ai bien suivi tu cherche à observer l'utilisation de la capacité de commutation de ton coeur de réseau et récupérer un voyant d'erreur dans le cas ou il arriverait à saturation, juste ?

                          M'est avis que ce n'est pas en monitorant le traffic de chaques interfaces que on pourrait y arriver.

                          Comme le précise julien60 juste au dessus on peut pas vriament exploiter le cumul des stats de centaines d'interfaces...

                          Par contre il y aurait peut etre moyen d'arriver à un résultat en regardant plutot la charge processeur du switch non ? en prime tu pourrait voir sur un graph avec ods les pics de traffic du réseau.

                          J'ai vu qu'avec check_snmp_load on pouvait vérifier la charge d'un cpu d'élément actif cisco. En trouvant l'OID correspondant chez HP ya surement de faire un truc bien.

                          MAJ:"Linux, Windows, Cisco, AS400, HP Procurve, LinkProof, Blucoat, Nokia, Fortinet, Netscreen,HP-UX." plugin compatible procurve ^^
                          Last edited by GLobulle; 12 September 2007, 15:32.
                          Système : Debian 4.0r1 Etch
                          Software : Nagios 2.9, Centreon 1.4.1, ndoutils 1.4b2, Nagvis 1.0.1, SNMPTT 1.1, Nagios Plugins 1.4.9, Manubulon Plugins, NRPE 2.8.1
                          Hébergement Système => VmWare

                          Comment


                          • #14
                            Bonjour,
                            Je cherche à récuperer un max d'info sur un switch HP Procurve J3289A.
                            Du style : Nb de collisions, Tps de réponse, Traffic > tout cela sur chacun des ports si possible.

                            plugin - check_centreon_snmp_traffic :
                            Code:
                            debian:/usr/local/nagios/libexec# ./check_centreon_snmp_traffic -H @IP -s
                            Interface 1 :: ei0 HP ProCurve 10/100 Hub Agent 100Mbit Network Interface :: up
                            Interface 2 :: ei1 HP ProCurve 10/100 Hub Agent 10Mbit Network Interface :: up
                            Interface 3 :: lo0 HP Agent Software Loopback Interface :: up
                            J'ai du mal à comprendre le résultat : s'agit-il des modules installés sur le switch (Interface 1 et 2) ?

                            Code:
                            debian:/usr/local/nagios/libexec# ./check_centreon_snmp_traffic -H @IP -C public -w 80 -c 90 -v 2 -i 1
                            Traffic In : 3.65 Mb/s (3.7 %), Out : 365.09 b/s (0.0 %) - Total RX Bits In : 23.55 GB, Out : 15.35 Gb|traffic_in=3652159,3Bits/s traffic_out=365,1Bits/s
                            debian:/usr/local/nagios/libexec# ./check_centreon_snmp_traffic -H @IP -C public -w 80 -c 90 -v 2 -i 2
                            Traffic In : 3.53 kb/s (0.0 %), Out : 23.94 kb/s (0.2 %) - Total RX Bits In : 4.83 GB, Out : 25.85 Gb|traffic_in=3529,1Bits/s traffic_out=23939,5Bits/s
                            Comment faire pour récuperer des info sur chaque port precisement ?

                            plugin - check_snmp_load.pl :
                            J'ai vu aussi que la surcharge cpu du switch permettait de conclure à une surcharge réseau... pkoi pas :

                            Code:
                            debian:/usr/local/nagios/libexec# ./check_snmp_load.pl -H @IP -C public -2 -w 70 -c 90 -T hp
                            Argument "noSuchObject" isn't numeric in printf at ./check_snmp_load.pl line 508.
                            CPU used 0.0% (<70) : OK
                            On la retrouve dans centreon : **ePN /usr/local/nagios/libexec//check_snmp_load.pl: "Argument "noSuchObject" isn't numeric in sprintf at /usr/local/nagios/bin/p1.pl line 79,".

                            Qqun serait me dire d'où vient cette erreur ?

                            Comment


                            • #15
                              Un ptit Up

                              Comment

                              Working...
                              X