Announcement

Collapse
No announcement yet.

légendes de courbe rrd en variable

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

  • légendes de courbe rrd en variable

    Je souhaite faire un graphique des pourcentages d'espace disque utilisé de chaque partitions pour chaque serveurs.

    J'ai modifié le plugin check_graph_remote_storage pour qu'il liste les partitions, puis qu'il interroge l'espace de chaque partitions, les résultats sont sauvés dans 1 fichier RRD (avec plusieurs courbes).
    Jusque là, ca marche, mais le problème est que le nom et l'ordre des partitions est différentes d'un serveur à l'autre.

    Afin de ne pas avoir à paramétrer manuellement chaque partitions de chaque serveurs et lorsque des partitions sont ajoutée ou supprimée, il faudra à nouveau configurer les courbes....

    L'idée est de récupérer le nom de chaque partitions, de le sauver dans le fichier RRD (au lieu des nom de courbes par défaut :a, b, c, etc...).

    Puis de modifier le script de création des graphiques pour détecter si un nom de courbe différent de : a,b,c,d,etc et ensuite l'utiliser comme légende.

    Quelle est le fichier qui lance la création graphique?
    (je vais essayer de faire la modification, puis la poster)

    Qu'en pensez vous?

  • #2
    moi je dis amuse toi bien....

    c'est celui la ... generateRRDImagePlugins.php
    Julien Mathis
    Centreon Project Leader
    www.merethis.com |

    Comment


    • #3
      Re: légendes de courbe rrd en variable

      Originally posted by yann2000
      Je souhaite faire un graphique des pourcentages d'espace disque utilisé de chaque partitions pour chaque serveurs.

      J'ai modifié le plugin check_graph_remote_storage pour qu'il liste les partitions, puis qu'il interroge l'espace de chaque partitions, les résultats sont sauvés dans 1 fichier RRD (avec plusieurs courbes).
      Jusque là, ca marche, mais le problème est que le nom et l'ordre des partitions est différentes d'un serveur à l'autre.

      Afin de ne pas avoir à paramétrer manuellement chaque partitions de chaque serveurs et lorsque des partitions sont ajoutée ou supprimée, il faudra à nouveau configurer les courbes....

      L'idée est de récupérer le nom de chaque partitions, de le sauver dans le fichier RRD (au lieu des nom de courbes par défaut :a, b, c, etc...).

      Puis de modifier le script de création des graphiques pour détecter si un nom de courbe différent de : a,b,c,d,etc et ensuite l'utiliser comme légende.

      Quelle est le fichier qui lance la création graphique?
      (je vais essayer de faire la modification, puis la poster)

      Qu'en pensez vous?
      Moi je dis trés bonne initiative.
      Les graphs manquent encore un peu de souplesse :wink:



      Bon courage aussi !!!
      Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
      Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
      Fedora Core 5 - 2.6.20-1.2320

      Comment


      • #4
        Moi je dis trés bonne initiative.
        Les graphs manquent encore un peu de souplesse Wink
        ouais mais quand on est bien organisé je trouve que c'est quand meme pas mal.

        Apres sur ce genre de truc qui reconnais en auto les DS, on va encore avoir des gens qui vont pleurnicher que eux ils ont un DS qui s'apelle total et un autre aussi mais que c'est pas les meme metric.. Y en a un c'est une taille de dur et l'autre c une taille de memoire vive... et ils veulent un ds différent...

        du coup va falloir encore adapter le truc. Du coup on ne part plus dans ce sens... je part sur de la conf a la main. Si on pense bien ses templates, on ne doit pas avoir de pb a ce niveau.
        Julien Mathis
        Centreon Project Leader
        www.merethis.com |

        Comment


        • #5
          Et voila, explications:

          Le plugin check_graph_xxx.pl va envoyé un tableau supplémentaire @label à la fonction create_rrd de oreon.pm. Ce tableau contiendra les noms des légendes des graphiques. Elles seront sauvées dans le fichier RRD.

          lorsqu'un graphique est demandé, generateRRDImagePlugins.php va tester si les labels sont 'nommé' (sinon = a,b,c,d,e,f,etc) si oui il mettra dans le graph, sinon il prend la légende du template.

          Limitation :
          - Le problème principal va être l'ajout ou pire la suppression de courbe. Actuellement, il faut supprimer le fichier RRD, et ses données.....
          - il reste à ajouter une expression régulière pour vérifier le nom des labels dans la fonction create_rrd de oreon.pm (Nb charactère < 20, pas d'espace, ponctuation, accent). Mais se sera pour la semaine prochaine!!

          Remarque : Je n'ai pas fait de gestion d'erreur. Attention mon plugin check_graph_remote_storage_all_label.pl a été fait 'rapidos', je l'ai mis pour l'exemple.

          Des questions, des idées, des remarques : n'hésitez pas!!!


          Oreon.pm :
          Code:
          ###############################################################################
          #  Create RRD file
          ###############################################################################
          		sub create_rrd([email protected])
          {
          	my @rrd_arg;
          	my ($rrd, $nb_ds ,$start, $step, $min, $max, $type,@label) = @_;
          	$nb_ds = 1 unless($nb_ds);
          	$start = time unless($start);
          	$step = 300 unless($step);
          	$min = "U" unless($min);
          	$max = "U" unless($max);
          	$type = "GAUGE" unless($type);
          
          	my $ERROR = RRDs::error;
          
          	@rrd_arg=($rrd,
          			  "--start",
          			  $start-1,
          			  "--step",
          			  $step);
          	if (scalar(@label) == $nb_ds){
          		for ($i = 0; $i < $nb_ds; $i++) {
                  		push(@rrd_arg,"DS:".$label[$i].":$type:".($step * 2).":".$min.":".$max);
              		}
          	}
          	else {
          		for ($i = 0; $i < $nb_ds; $i++) {
                  		push(@rrd_arg,"DS:".$ds[$i].":$type:".($step * 2).":".$min.":".$max);
              		}
          	}
          	push(@rrd_arg,"RRA:AVERAGE:0.5:1:8640",
                       	  "RRA:MIN:0.5:12:8640",
                       	  "RRA:MAX:0.5:12:8640");
          	RRDs::create (@rrd_arg);
                  $ERROR = RRDs::error;
                  if ($ERROR) {
                      print "unable to create '$rrd' : $ERROR\n" ;
                      exit 3;
                  }
          }

          generateRRDImagePlugins.php :
          Code:
          ligne ~
          		// Partie Ajoutee
          		$tab_return = preg_split("/\n/", $return);
          		foreach ($tab_return as $ligne){
          			if (preg_match("/^ds\[([a-zA-Z0-9]*)\].type.*/", $ligne, $matches)){
          				$label[]=$matches[1];
          				
          			}
          		}
          		
          		$ds = array("a","b","c","d","e","f","g","h","i","j","k","l");
          		$labelNomme ='KO';
          		for ($i=0; $i<count($label); $i++){
          			if ($ds[$i] != $label[$i]){
          				$labelNomme = 'OK';
          			}
          		}
          		
          
          		// Recupe les noms des legendes
          		// Recupe le DS (nombre et name)
          	
          		$ppMetrics = array();	
          		$cpt = 0;
          		foreach ($tab_ds as $t){		
          			# Get Metric Infos 
          			$ppMetrics[$t] = array();
          			$ppMetrics[$t]["ds_id"] = getDefaultDS($template_id, $cpt, 2);
          			# Get DS Data
          			$res_ds =& $pearDB->query("SELECT * FROM giv_components_template WHERE compo_id = '".$ppMetrics[$t]["ds_id"]."'");
          			$res_ds->fetchInto($ds_data);
          			foreach ($ds_data as $key => $ds_d)
          				$ppMetrics[$t][$key] = $ds_d;
          			if ($labelNomme = 'KO'){
          				$ppMetrics[$t]["legend"] = $ds_data["name"];
          			}
          			else {
          				$ppMetrics[$t]["legend"] = $label[$cpt];
          			}
          			$ppMetrics[$t]["legend_len"] = strlen($ppMetrics[$t]["legend"]);
          			$cpt++;
          		}
          check_graph_xxxxx.pl
          Code:
          ##
          ## RRDTools create rrd
          ##
          if ($opt_g) {
              if (! -e $rrd) {
              	create_rrd ($rrd,$nbCourbes,$start,$step,"U","U","GAUGE",@label);
              }
          }
          Exemple de mon plugin check_graph_remote_storage_all_label.pl
          Code:
          #! /usr/bin/perl -w
          #
          # $Id: check_graph_remote_storage.pl,v 1.2 2005/07/27 22:21:49 wistof Exp $
          #
          # Oreon's plugins are developped with GPL Licence :
          # http://www.fsf.org/licenses/gpl.txt
          # Developped by : Julien Mathis - Mathieu Mettre - Romain Le Merlus - Yohann Lecarpentier
          #
          # Modified for Oreon Project by : Mathieu Chateau - Christophe Coraboeuf
          #
          # The Software is provided to you AS IS and WITH ALL FAULTS.
          # OREON makes no representation and gives no warranty whatsoever,
          # whether express or implied, and without limitation, with regard to the quality,
          # safety, contents, performance, merchantability, non-infringement or suitability for
          # any particular or intended purpose of the Software found on the OREON web site.
          # In no event will OREON be liable for any direct, indirect, punitive, special,
          # incidental or consequential damages however they may arise and even if OREON has
          # been previously advised of the possibility of such damages.
          
          ##
          ## Plugin init
          ##
          
          use strict;
          use Net::SNMP qw(:snmp);
          use FindBin;
          use lib "$FindBin::Bin";
          #use lib "/usr/local/nagios/libexec";
          use lib "/usr/lib/nagios/plugins/";
          use utils qw($TIMEOUT %ERRORS &print_revision &support);
          
          if (eval "require oreon" ) {
          	use oreon qw(get_parameters create_rrd update_rrd &is_valid_serviceid);
          	use vars qw($VERSION %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_g $opt_v $opt_C $opt_d $opt_w $opt_c $opt_H $opt_S $opt_D $opt_s $opt_step $step @test $opt_f);
          my $pathtorrdbase = $oreon{GLOBAL}{DIR_RRDTOOL};
          my @label;
          ##
          ## Plugin var init
          ##
          my ($d1, $d2, $d3, $d4, $d5, $d6, $d7, $d8, $d9, $d10, $d11, $d12);
          my ($hrStorageDescr, $hrStorageAllocationUnits, $hrStorageSize, $hrStorageUsed);
          my ($AllocationUnits, $Size, $Used);
          my ($tot, $used, $pourcent, $return_code);
          
          $PROGNAME = "check_graph_remote_storage";
          sub print_help ();
          sub print_usage ();
          Getopt::Long::Configure('bundling');
          GetOptions
              ("h"   => \$opt_h, "help"         => \$opt_h,
               "V"   => \$opt_V, "version"      => \$opt_V,
               "s"   => \$opt_s, "show"         => \$opt_s,
               "g"   => \$opt_g, "rrdgraph"     => \$opt_g,
               "rrd_step=s" => \$opt_step, "f"  => \$opt_f,
               "v=s" => \$opt_v, "snmp=s"       => \$opt_v,
               "C=s" => \$opt_C, "community=s"  => \$opt_C,
               "d=s" => \$opt_d, "disk=s"       => \$opt_d,
               "w=s" => \$opt_w, "warning=s"    => \$opt_w,
               "c=s" => \$opt_c, "critical=s"   => \$opt_c,
               "S=s" => \$opt_S, "ServiceId=s"  => \$opt_S,
               "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'};
          }
          
          $opt_H = shift unless ($opt_H);
          (print_usage() && exit $ERRORS{'OK'}) unless ($opt_H);
          
          
          ($opt_v) || ($opt_v = shift) || ($opt_v = "2");
          my $snmp = $1 if ($opt_v =~ /(\d)/);
          
          ($opt_C) || ($opt_C = shift) || ($opt_C = "public");
          
          ($opt_d) || ($opt_d = shift) || ($opt_d = 2);
          
          my $partition;
          if ($opt_d =~ /([0-9]+)/){
              $partition = $1;
          }
          else{
              print "Unknown -d number expected... or it doesn't exist, try another disk - number\n";
              exit $ERRORS{'UNKNOWN'};
          }
          
          ($opt_S) || ($opt_S = shift) || ($opt_S = "1_1");
          my $ServiceId = is_valid_serviceid($opt_S);
          
          ($opt_c) || ($opt_c = shift) || ($opt_c = 95);
          my $critical = $1 if ($opt_c =~ /([0-9]+)/);
          
          ($opt_w) || ($opt_w = shift) || ($opt_w = 80);
          my $warning = $1 if ($opt_w =~ /([0-9]+)/);
          if ($critical <= $warning){
              print "(--crit) must be superior to (--warn)";
              print_usage();
              exit $ERRORS{'OK'};
          }
          
          ($opt_step) || ($opt_step = shift) || ($opt_step = "300");
          $step = $1 if ($opt_step =~ /(\d+)/);
          
          my $rrd = $pathtorrdbase.$ServiceId.".rrd";
          my $start=time;
          my $name = $0;
          $name =~ s/\.pl.*//g;
          
          ##
          ## RRDTools create rrd
          ##
          #if ($opt_g) {
          #    if (! -e $rrd) {
          #    	create_rrd ($rrd,12,$start,$step,"U","U","GAUGE");
          #    }
          #}
          
          ##
          ## Plugin snmp requests
          ##
          
          my $OID_hrStorageDescr =$oreon{MIB2}{HR_STORAGE_DESCR};
          my $OID_hrStorageAllocationUnits =$oreon{MIB2}{HR_STORAGE_ALLOCATION_UNITS};
          my $OID_hrStorageSize =$oreon{MIB2}{HR_STORAGE_SIZE};
          my $OID_hrStorageUsed =$oreon{MIB2}{HR_STORAGE_USED};
          
          # create a SNMP session
          my ( $session, $error ) = Net::SNMP->session(-hostname  => $opt_H,-community => $opt_C, -version  => $snmp);
          if ( !defined($session) ) {
              print("CRITICAL: SNMP Session : $error");
              exit $ERRORS{'CRITICAL'};
          }
          
          #if ($opt_s) {
              # Get description table
              my $result = $session->get_table(
                  Baseoid => $OID_hrStorageDescr
              );
          
              if (!defined($result)) {
                  printf("ERROR: hrStorageDescr 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) ;
                 # print "hrStorage $index :: $$result{$key}\n";
          	$partition = $index;
              #}
          #exit $ERRORS{'OK'};
          #}
          
          my $result = $session->get_request(
                                             -varbindlist => [$OID_hrStorageDescr.".".$partition  ,
                                                              $OID_hrStorageAllocationUnits.".".$partition  ,
                                                              $OID_hrStorageSize.".".$partition,
                                                              $OID_hrStorageUsed.".".$partition
                                                              ]
                                             );
          if (!defined($result)) {
              printf("ERROR:  %s.\n", $session->error);
              $session->close;
              exit $ERRORS{'UNKNOWN'};
          }
          $hrStorageDescr  =  $result->{$OID_hrStorageDescr.".".$partition };
          $AllocationUnits  =  $result->{$OID_hrStorageAllocationUnits.".".$partition };
          $Size  =  $result->{$OID_hrStorageSize.".".$partition };
          $Used  =  $result->{$OID_hrStorageUsed.".".$partition };
          
          push (@label, $hrStorageDescr);
          ##
          ## Plugins var treatment
          ##
          if (!$Size){
              print "Disk CRITICAL - no output (-p number expected... it doesn't exist, try another disk - number\n";
              exit $ERRORS{'CRITICAL'};
          }
          if (($Size =~  /([0-9]+)/) && ($AllocationUnits =~ /([0-9]+)/)){
              if (!$Size){
                  print "The number of the option -p is not a hard drive\n";
                  exit $ERRORS{'CRITICAL'};
              }
              $tot = 1;
              $tot = $Size * $AllocationUnits;
              if (!$tot){$tot = 1;}
              $used = $Used * $AllocationUnits;
              $pourcent = ($used * 100) / $tot;
          
              if (length($pourcent) > 2){
                  @test = split (/\./, $pourcent);
                  $pourcent = $test[0];
              }
              $tot = $tot / 1073741824;
              $Used = ($Used * $AllocationUnits) / 1073741824;
              
              ##
              ## RRDtools update
              ##
              
             # $start=time;
              my $totrrd = $tot * 1073741824;
              my ($d1, $d2, $d3, $d4, $d5, $d6, $d7, $d8, $d9, $d10, $d11, $d12);
             # if ($opt_g) {
                # 	update_rrd ($rrd,$start,$totrrd,$used);
             # }
          
              ##
              ## Plugin return code
              ##
              if ($pourcent >= $critical){
                  print "Disk CRITICAL - ";
                  $return_code = 2;
              } elsif ($pourcent >= $warning){
                  print "Disk WARNING - ";
          	if ($return_code < 2){
          	        $return_code = 1;
          	}
              } else {
                  print "Disk OK - ";
          	if ($return_code < 1){
          	        $return_code = 0;
          	}
              }
          
              if ($hrStorageDescr){
                  print $hrStorageDescr . " TOTAL: ";
                  printf("%.3f", $tot);
                  print " Go USED: " . $pourcent . "% : ";
                  printf("%.3f", $Used);
                  print " Go";
                  if ($opt_f){
                  	my $size_o = $Used * 1073741824;
                  	my $warn = $opt_w * $size_o;
                  	my $crit = $opt_c * $size_o;
                  	print "|size=".$totrrd."o used=".$size_o.";".$warn.";".$crit;
                  }
                  print "\n";
                #  exit $return_code;
              } else {
                  print "TOTAL: ";
                  printf("%.3f", $tot);
                  print " Go USED: " . $pourcent . "% : ";
                  printf("%.3f", $Used);
                  print " Go\n";
                 # exit $return_code;
              }
          } else {
              print "Disk CRITICAL - no output (-d number expected... it doesn't exist, try another disk - number\n";
              exit $ERRORS{'CRITICAL'};
          }
          
          if ($partition == 1){$d1 = $pourcent;}
          if ($partition == 2){$d2 = $pourcent;}
          if ($partition == 3){$d3 = $pourcent;}
          if ($partition == 4){$d4 = $pourcent;}
          if ($partition == 5){$d5 = $pourcent;}
          if ($partition == 6){$d6 = $pourcent;}
          if ($partition == 7){$d7 = $pourcent;}
          if ($partition == 8){$d8 = $pourcent;}
          if ($partition == 9){$d9 = $pourcent;}
          if ($partition == 10){$d10 = $pourcent;}
          if ($partition == 11){$d11 = $pourcent;}
          if ($partition == 12){$d12 = $pourcent;}
          
          }
          
          ##
          ## RRDTools create rrd
          ##
          if ($opt_g) {
              if (! -e $rrd) {
              	create_rrd ($rrd,$partition,$start,$step,"U","U","GAUGE",@label);
              }
          }
          
           ##
              ## RRDtools update
              ##
              
              $start=time;
              
              if ($opt_g) {
          	if ($partition == 12){
                 		update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$d10,$d11,$d12);
          	}
          	elsif ($partition == 11){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$d10,$d11);
          	}
          	elsif ($partition == 10){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$d10);
          	}
          	elsif ($partition == 9){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9);
          	}
          	elsif ($partition == 8){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8);
          	}
          	elsif ($partition == 7){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6,$d7);
          	}
          	elsif ($partition == 6){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5,$d6);
          	}
          	elsif ($partition == 5){
          	       	update_rrd ($rrd,$start,$d1,$d2,$d3,$d4,$d5);
          	}
              }
          
          
          
          exit $return_code;
          
          sub print_usage () {
              print "\nUsage:\n";
              print "$PROGNAME\n";
              print "   -H (--hostname)   Hostname to query - (required)\n";
              print "   -C (--community)  SNMP read community (defaults to public,\n";
              print "                     used with SNMP v1 and v2c\n";
              print "   -v (--snmp_version)  1 for SNMP v1 (default)\n";
              print "                        2 for SNMP v2c\n";
              print "   -d (--disk)       Set the disk (number expected) ex: 1, 2,... (defaults to 2 )\n";
              print "   -s (--show)       Describes all disk (debug mode)\n";
              print "   -g (--rrdgraph)   create a rrd base and add datas into this one\n";
              print "   --rrd_step	    Specifies the base interval in seconds with which data will be fed into the RRD (300 by default)\n";
              print "   -D (--directory)  Path to rrdatabase (or create the .rrd in this directory)\n";
              print "                     by default: ".$pathtorrdbase."\n";
              print "                     (The path is valid with spaces '/my\ path/...')\n";
              print "   -w (--warn)       Signal strength at which a warning message will be generated\n";
              print "                     (default 80)\n";
              print "   -c (--crit)       Signal strength at which a critical message will be generated\n";
              print "                     (default 95)\n";
              print "   -f                Perfparse Compatible\n";
              print "   -S (--ServiceId)  Oreon Service Id\n";
              print "   -V (--version)    Plugin version\n";
              print "   -h (--help)       usage help\n";
          
          }
          
          sub print_help () {
              print "##########################################\n";
              print "#  Copyright (c) 2004-2006 Oreon         #\n";
              print "#  Bugs to http://www.oreon-project.org/ #\n";
              print "##########################################\n";
              print_usage();
              print "\n";
          }

          Comment


          • #6
            alors comment je fais avec mon serveur qui a 170 points de montage ?

            et l'inconvénient : mes warning et critical sont identiques sur toutes les partoches ?
            Julien Mathis
            Centreon Project Leader
            www.merethis.com |

            Comment


            • #7
              Originally posted by julio
              alors comment je fais avec mon serveur qui a 170 points de montage ?

              et l'inconvénient : mes warning et critical sont identiques sur toutes les partoches ?
              C'est souvent comme ca que ca se passe, non ?

              -w 90 -c 95 et voilou ... :lol:
              Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
              Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
              Fedora Core 5 - 2.6.20-1.2320

              Comment


              • #8
                mouais... ca depend... il va falloir mettre des options pour pouvoir spécifier des partitions a ignorer.... sinon en plus il va prendre le lecteur de deisquette et autres non utiles...
                Julien Mathis
                Centreon Project Leader
                www.merethis.com |

                Comment


                • #9
                  Originally posted by julio
                  mouais... ca depend... il va falloir mettre des options pour pouvoir spécifier des partitions a ignorer.... sinon en plus il va prendre le lecteur de deisquette et autres non utiles...
                  le plugin de manubulon le fait trés bien
                  StatusMap Module - NDO Tools Module - ImportCSV Module - SNMP-UI Module - PDFReports Module
                  Dons Paypal

                  Comment


                  • #10
                    Originally posted by wistof
                    Originally posted by julio
                    mouais... ca depend... il va falloir mettre des options pour pouvoir spécifier des partitions a ignorer.... sinon en plus il va prendre le lecteur de deisquette et autres non utiles...
                    le plugin de manubulon le fait trés bien
                    Ca s'apelle des regex
                    Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
                    Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
                    Fedora Core 5 - 2.6.20-1.2320

                    Comment


                    • #11
                      aller donki au boulot alors... sort le notepad !
                      Julien Mathis
                      Centreon Project Leader
                      www.merethis.com |

                      Comment


                      • #12
                        vi plugin de manubulon
                        Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
                        Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
                        Fedora Core 5 - 2.6.20-1.2320

                        Comment


                        • #13
                          Je vais m'attaquer au correction...la semaine prochaine..

                          Comment

                          Working...
                          X