Announcement

Collapse
No announcement yet.

perfparse2ods.pl quelqu'un a essayé ?

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

  • perfparse2ods.pl quelqu'un a essayé ?

    Voila j'essai de réinserer en base ODS mes perfdata contenu dans ma base perfparse mais ca ne donne pas grand chose.

    Ca semble fonctionner car le script ne me sort aucune erreur mais quand je vais pour sélectionner dans vues Oreon les machines n'apparaissent pas.

    Peut-être que je dois regénérer les bases rrd ?
    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

  • #2
    Bon et bien j'ai regénéré mais 3 bases mais ca donne keudalle
    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


    • #3
      Essaie celui de la 1.4.1 dans scripts/. Configure le path + les acces SQL a perfparse.

      En gros ca te genere un fichier servvice-perfdata qui sera apres reintegre par ODS.
      Selon la taille de ta base perfparse et la puissance de ta machine, ca peut prendre des heures...

      Si ton SQL plante et ca merde (machine trop molle (VM), mysql trop vieux (timeout)), je te conseille de faire un dump de la base perfparse et de faire la generation depuis une machine plus puissante.

      Ensuite, quand tu as le fichier service-perfdata, tu configures dans les options generales le path vers ce fichier, ods en demarrant va aller le purger et remplir sa base.
      Une fois de plus ca peut etre tres long. Si tu as une machine puissante pour faire cela, je te conseille de dumper oreon+ods et de faire ta reintegration dans ODS sur la machine. (La base Oreon est necessaire pour les id de host/service).
      Ensuite tu as juste a reintegrer le dump ODS a ta vrai mahcine de supervision.

      Je dis dump car c'est la methode la plus rapide a ce jour vis a vis des differentes migration que j'ai eu a faire.

      Finalement, si tu as des trous dans tes graphs, avec la 1.4.1 tu peux regenerer proprement les bases rrd depuis l'interface.

      En dernier recours, et si tu n'es pas presse, envoie moi tes dumps perfparse + oreon + la version d'oreon de depart, je te ferais ta migration de base :-) Mais essaie quand meme tout seul :-)
      Romain Le Merlus
      Centreon Forge
      MERETHIS

      Comment


      • #4
        Je m'en suis sorti en corrigeant un bug et en supprimant une partie du script, au final j'ai ca :

        Code:
        use strict;
        use DBI;
        use POSIX;
        
        my $installedPath = "/usr/local/oreon/ODS/";
        my $LOG ="/var/log/ods/ods.log";
        
        # Init Globals
        use vars qw($len_storage_rrd $RRDdatabase_path $LOG %stat $con_ods $con_oreon $generalcounter);
        
        # Init value
        my ($file, $line, @line_tab, @data_service, $hostname, $service_desc, $metric_id, $configuration);
        %stat = ('0' => 'OK', '1' => 'WARNING', '2' => 'CRITICAL', '3' => 'UNKNOWN', '4' => 'PENDING');
        
        # Init var
        
        my $PFDT = "/root/share/service-perfdata";
        my $mysql_user = "root";
        my $mysql_passwd = "supervision_altares";
        my $mysql_host = "localhost";
        my $mysql_database = "nagios";
        
        
        sub writeLogFile($){
                open (LOG, ">> ".$LOG) || print "can't write $LOG: $!";
                print LOG time()." - ".$_[0];
                close LOG or warn $!;
        }
        
        my $connexion = DBI->connect("DBI:mysql:database=".$mysql_database.";host=".$mysql_host, $mysql_user, $mysql_passwd, {'RaiseError' => 0, 'PrintError' => 0, 'AutoCommit' => 1});
        
        print "- Open Connexion : ok\n";
        if (open (FILE, ">> ".$PFDT) || print "can't write $PFDT: $!"){
                print "- Open File successfull\n";
                print "Preparing MySQL request... (This operation may be very long... be patient).\n";
                my ($sth2, $data);
                $sth2 = $connexion->prepare("SELECT * FROM `perfdata_service_bin`");
                if (!$sth2->execute) {writeLogFile("Error when getting data : " . $sth2->errstr . "\n");}
                print "- Request Executed\n";
                my ($host_name, $service_description, $status, $time, $perfdata, $metric);
                print "- service-perfdata file is creating.... \n";
                while ($data = $sth2->fetchrow_hashref()){
                                if ($time){
                                        print FILE $time."\t".$host_name."\t".$service_description."\tauto insert\t".$stat{$status}."\t".$perfdata."\n";
                                        undef($host_name);
                                        undef($service_description);
                                        undef($status);
                                        undef($perfdata);
                                        undef($metric);
                                }
                                $data->{'ctime'} =~ /([0-9]*)\-([0-9]*)\-([0-9]*)\ ([0-9]*)\:([0-9]*)\:([0-9]*)/;
                                $time = mktime($6, $5, $4, $3, $2 - 1, $1 - 1900);
                                $host_name = $data->{'host_name'};
                                $service_description = $data->{'service_description'};
                                $status = $data->{'state'};
                                $metric =  $data->{'metric'};
        
                                my $sth3 = $connexion->prepare("SELECT unit FROM `perfdata_service_metric` WHERE `host_name` = '".$host_name."' AND `service_description` = '".$service_description."' AND `metric` = '".$metric."' LIMIT 1");
                                if (!$sth3->execute) {writeLogFile("Error when getting data : " . $sth3->errstr . "\n");}
                                my $metric_data = $sth3->fetchrow_hashref();
                                undef($sth3);
        
                                my $unit;
                                if (!defined($metric_data->{'unit'})){
                                        $unit = "";
                                } else {
                                        $unit = $metric_data->{'unit'};
                                }
                                undef($metric_data);
                                $perfdata = $data->{'metric'}."=".$data->{'value'}.$unit;
                                undef($unit);
                        }
        }
        print "- File creation succeded !\n";
        exit;
        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

        Working...
        X