Announcement

Collapse
No announcement yet.

Problème dans log ODS

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

  • Problème dans log ODS

    Bonjour,
    je suis actuellement confronté à un souci de graphs sous Oreon.

    J'ai remarqué un problème dans le fichier /usr/local/oreon/ODS/var/ods.log

    Il y a une multitude de
    Error in Drain function 2 : Unknown column 'hg_id' in 'where clause'

    J'ai appliqués les cinq patchs mais si je me souviens bien il y a eu un petit problème lors de l'application de l'un d'eux mais je n'ai aucune idée duquel.

    J'aimerai donc savoir si quelqu'un sait d'où peut provenir ce problème et comment le résoudre ?
    J'aimerai savoir aussi si il est possible de réappliquer certains patchs (pas forcément dans l'ordre) pour essayer de voir si ça corrige quelques problèmes sans en créer de nouveaux.

    Merci d'avance.

    EDIT : Quelqu'un pourrait-il me copier son fichier parsing_log.pl patché 5 et fonctionnel svp ? (/usr/local/oreon/cron/parsing_log.pl)
    Last edited by Gio; 6 July 2007, 16:11.
    Fedora Core 6
    Nagios 2.6 + Nagios Plugins 1.4.6
    Oreon 1.3.3 -> 1.4-5

  • #2
    Salut c'est surement l'erreur due au patch 3 :
    Note: it's possible to have an error with "cron/parsing_log.pl". The patch procedure indication the patch was rejected in cron/parsing_log.pl.rej. You must edit cron/parsing_log.pl and delete the line specified in cron/parsing_log.pl.rej (line begins with "-")
    Voila comment j'ai procédé :

    Code:
    $ cd /root
    $ sudo wget http://download.oreon-project.org/patch/oreon-patch-1.4-1.tgz
    $ sudo wget http://download.oreon-project.org/patch/oreon-patch-1.4-2.tgz
    $ sudo wget http://download.oreon-project.org/patch/oreon-patch-1.4-3.tgz
    $ sudo wget http://download.oreon-project.org/patch/oreon-patch-1.4-4.tgz
    $ sudo wget http://download.oreon-project.org/patch/oreon-patch-1.4-5.tgz
    $ sudo mkdir oreon-patch-1.4-2           / * pas besoin pour le patch 1  4 et 5*/
    $ sudo mkdir oreon-patch-1.4-3
    $ sudo tar -xvzf oreon-patch-1.4-1.tgz
    $ sudo mv oreon-patch-1.4-2.tgz oreon-patch-1.4-2/
    $ cd oreon-patch-1.4-2/
    $ sudo tar -xvzf oreon-patch-1.4-2.tgz
    $ cd ..
    $ sudo mv oreon-patch-1.4-3.tgz oreon-patch-1.4-3/
    $ cd oreon-patch-1.4-3/
    $ sudo tar -xvzf oreon-patch-1.4-3.tgz
    $ cd ..
    
    
    $ sudo tar -xvzf oreon-patch-1.4-4.tgz
    
    $ sudo tar -xvzf oreon-patch-1.4-5.tgz
    $ cd ..
    
    
    /********************************************** PATCH 1 ************************************/
    $ cd /usr/local/oreon
    $ for i in $(ls /root/oreon-patch/*.patch); do patch -p1 --dry-run  < ${i}; done
    / * S il n'y a pas d'erreur faite la commande suivante */
    $ for i in $(ls /root/oreon-patch/*.patch); do sudo patch -p1  < ${i}; done
    
    /********************************************** PATCH 2 ***********************************/
    $ patch -p1 --dry-run < /root/oreon-patch-1.4-2/22-oreon-2004_04_05_-_17_55.patch
    / * si aucune erreur */
    $ sudo patch -p1 < /root/oreon-patch-1.4-2/22-oreon-2004_04_05_-_17_55.patch
    
    /********************************************** PATCH 3 ***********************************/
    
    $ patch -p1 --dry-run < /root/oreon-patch-1.4-3/23-oreon-2007_04_10_-_16_27.patch
    
    >> Une erreur sur cron/parsing_log.pl doit apparaitre pour y remedier faite cela :
    $ cd /usr/local/oreon/cron/
    $ sudo cp parsing_log.pl parsing_log.pl.bak
    $ cd ..
    $ sudo patch -p1 < /root/oreon-patch-1.4-3/23-oreon-2007_04_10_-_16_27.patch
    $ sudo nano /usr/local/oreon/cron/parsing_log.pl.rej
    supprimer la ligne 
    - #my $installedPath = "/usr/local/oreon";
    ctrl + o  Entrée  /*sauvegarder*/
    ctrl + x          /*quitter*/
    
    
    
    /********************************************** PATCH 4 ***********************************/
    
    $ cd /usr/local/oreon
    $ patch -p1 --dry-run < /root/oreon-patch-1.4-4/24-oreon-2007_04_13_-_19_28.patch
    /* si pas d'erreur */
    $ sudo patch -p1 < /root/oreon-patch-1.4-4/24-oreon-2007_04_13_-_19_28.patch
    
    /* patch ODS service */
    
    $ cd /etc/init.d/
    $ patch -p0 --dry-run < /root/oreon-patch-1.4-4/25-oreon-init_ods_2007_04_13.patch
    /* si pas d'erreur */
    $ sudo patch -p0 < /root/oreon-patch-1.4-4/25-oreon-init_ods_2007_04_13.patch
    
    
    /********************************************** PATCH 5 ***********************************/
    
    $ cd /usr/local/oreon
    $ patch -p1 --dry-run < /root/oreon-patch-1.4-5/26-oreon-2007_04_24.patch
    
    /* si pas d'erreur */
    $ sudo patch -p1 < /root/oreon-patch-1.4-5/26-oreon-2007_04_24.patch
    Regarde la partie sur patch3

    En espérant que ca puisse t'aider.

    Comment


    • #3
      J'ai donc essayé de réappliqué le patch 3 et voici les messages que j'ai obtenu :
      Code:
      patching file cron/parsing_log.pl
      Hunk #1 FAILED at 30.
      Hunk #2 FAILED at 71.
      2 out of 2 hunks FAILED -- saving rejects to file cron/parsing_log.pl.rej
      ...
      Voici le contenu du fichier cron/parsing_log.pl.rej
      Code:
      *** 30,36 ****
        use vars qw($mysql_user $mysql_passwd $mysql_host $mysql_database_oreon $mysql_database_ods $opt_h $opt_a $data);
        
        my $installedPath = "@[email protected]";
      - #my $installedPath = "/usr/local/oreon";
        require $installedPath."/ODS/etc/conf.pm";
        
        ## Init Date
      --- 30,35 ----
        use vars qw($mysql_user $mysql_passwd $mysql_host $mysql_database_oreon $mysql_database_ods $opt_h $opt_a $data);
        
        my $installedPath = "@[email protected]";
        require $installedPath."/ODS/etc/conf.pm";
        
        ## Init Date
      ***************
      *** 72,108 ****
        		}
            }
            while (<FILE>) {
      - 		if ($_ =~ /^\[([0-9]*)\]\sSERVICE ALERT\:\ ([a-zA-Z0-9\.\-\_\ \%\'\"\(\[\]\)\{\}\,\;\:\/\=\<\>\*\$\^\~\@\+\#\!\?]*)/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[5] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `service_description`, `status`, `type`, `retry`, `output`) VALUES ('0', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".$tab[4]."','".$tab[5]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      - 		} elsif ($_ =~ /^\[([0-9]*)\]\sHOST ALERT\:\ ([a-zA-Z0-9\.\-\_\ \%\'\"\(\[\]\)\{\}\,\;\:\/\=\<\>\*\$\^\~\@\+\#\!\?\*]*)/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[4] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `status`,  `type`, `retry`, `output`) VALUES ('1', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."','".$tab[3]."','".$tab[4]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      - 		} elsif ($_ =~ /^\[([0-9]*)\]\sSERVICE NOTIFICATION\:\ ([a-zA-Z0-9\.\-\_\ \%\'\"\(\[\]\)\{\}\,\;\:\/\=\<\>\*\$\^\~\@\+\#\!\?\*]*)/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[5] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `service_description`, `status`, `notification_cmd`, `notification_contact`, `output`) VALUES ('2', '$ctime', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."', '".$tab[4]."','".$tab[0]."','".$tab[5]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      - 		} elsif ($_ =~ /^\[([0-9]*)\]\sHOST NOTIFICATION\:\ ([a-zA-Z0-9\.\-\_\ \%\'\"\(\[\]\)\{\}\,\;\:\/\=\<\>\*\$\^\~\@\+\#\!\?\*]*)/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[4] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `notification_contact`, `host_name` , `status`, `notification_cmd`,  `output`) VALUES ('3', '$ctime', '".$tab[0]."','".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".$tab[4]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      - 		} elsif ($_ =~ /^\[([0-9]*)\]\sWarning\:\ ([a-zA-Z0-9\.\-\_\ \%\'\"\(\[\]\)\{\}\,\;\:\/\=\<\>\*\$\^\~\@\+\#\!\?\*]*)/){
        		    my $tab = $2;
        		    $ctime = $1;
        		    $tab =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `output`) VALUES ('4','$ctime', '".$tab."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      - 		} elsif ($_ =~ /^\[([0-9]*)\]\ ([a-zA-Z0-9\.\-\_\ \%\'\"\(\[\]\)\{\}\,\;\:\/\=\<\>\*\$\^\~\@\+\#\!\?\*]*)/) {
        		    $ctime = $1;
        		    my $tab = $2;
        		    $tab =~ s/\'/\\\'/g; 
      --- 71,107 ----
        		}
            }
            while (<FILE>) {
      + 		if ($_ =~ m/^\[([0-9]*)\]\sSERVICE ALERT\:\s(.*)$/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[5] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `service_description`, `status`, `type`, `retry`, `output`) VALUES ('0', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".$tab[4]."','".$tab[5]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      + 		} elsif ($_ =~ m/^\[([0-9]*)\]\sHOST ALERT\:\s(.*)$/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[4] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `status`,  `type`, `retry`, `output`) VALUES ('1', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."','".$tab[3]."','".$tab[4]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      + 		} elsif ($_ =~ m/^\[([0-9]*)\]\sSERVICE NOTIFICATION\:\s(.*)$/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[5] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `service_description`, `status`, `notification_cmd`, `notification_contact`, `output`) VALUES ('2', '$ctime', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."', '".$tab[4]."','".$tab[0]."','".$tab[5]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      + 		} elsif ($_ =~ m/^\[([0-9]*)\]\sHOST NOTIFICATION\:\s(.*)$/){
        		    my @tab = split(/;/, $2);
        		    $ctime = $1;
        		    $tab[4] =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `notification_contact`, `host_name` , `status`, `notification_cmd`,  `output`) VALUES ('3', '$ctime', '".$tab[0]."','".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".$tab[4]."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      + 		} elsif ($_ =~ m/^\[([0-9]*)\]\sWarning\:\s(.*)$/){
        		    my $tab = $2;
        		    $ctime = $1;
        		    $tab =~ s/\'/\\\'/g; 
        		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `output`) VALUES ('4','$ctime', '".$tab."')");
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
      + 		} elsif ($_ =~ m/^\[([0-9]*)\]\s(.*)$/) {
        		    $ctime = $1;
        		    my $tab = $2;
        		    $tab =~ s/\'/\\\'/g;
      Fedora Core 6
      Nagios 2.6 + Nagios Plugins 1.4.6
      Oreon 1.3.3 -> 1.4-5

      Comment


      • #4
        Et le contenu de mon fichier parsing_log.pl :
        Code:
        #! /usr/bin/perl -w
        
        use strict;
        use warnings;
        use DBI;
        use File::stat;
        use Getopt::Long;
        use POSIX;
        
        use vars qw($mysql_user $mysql_passwd $mysql_host $mysql_database_oreon $mysql_database_ods $opt_h $opt_a $data);
        
        my $installedPath = "/usr/local/oreon";
        require $installedPath."/ODS/etc/conf.pm";
        
        ## Init Date
        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
        
        # Init MySQL Connexion
        my $dbh = DBI->connect("DBI:mysql:database=".$mysql_database_ods.";host=".$mysql_host, $mysql_user, $mysql_passwd, {'RaiseError' => 1});
        
        Getopt::Long::Configure('bundling');
        GetOptions
            ("h" => \$opt_h,            "help" => \$opt_h,
             "a" => \$opt_a,            "archives" => \$opt_a);
        
        if($opt_h) {
            print "Usage : $0 :\n";
            print "       -a (--archives) load data from log archives to database\n";
            print "       -h (--help) show help\n";
            exit(0);
        }
        
        # Get conf Data
        my $sth = $dbh->prepare("SELECT archive_log, archive_retention, nagios_log_file  FROM config");
        if (!$sth->execute) {die "Error:" . $sth->errstr . "\n";}
        $data = $sth->fetchrow_hashref();
        
        
        my $cpt = 0;
        my $ctime = 0;
        my $last_line_read;
        
        # Parsing nagios.log
        sub parseFile ($) {
        	 if (!open (FILE, $_[0])) {
        		print "Cannot open file : $_[0]\n";
            }
            if (!$opt_a) {
        		while ($cpt < $last_line_read && <FILE>){
        		    $cpt++;
        		}
              }
              while (<FILE>) {
         		if ($_ =~ m/^\[([0-9]*)\]\sSERVICE ALERT\:\s(.*)$/){
          		    my @tab = split(/;/, $2);
          		    $ctime = $1;
          		    $tab[5] =~ s/\'/\\\'/g; 
          		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `service_description`, `status`, `type`, `retry`, `output`) VALUES ('0', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".$tab[4]."','".$tab[5]."')");
          		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
         		} elsif ($_ =~ m/^\[([0-9]*)\]\sHOST ALERT\:\s(.*)$/){
          		    my @tab = split(/;/, $2);
          		    $ctime = $1;
          		    $tab[4] =~ s/\'/\\\'/g; 
          		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `status`,  `type`, `retry`, `output`) VALUES ('1', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."','".$tab[3]."','".$tab[4]."')");
          		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
         		} elsif ($_ =~ m/^\[([0-9]*)\]\sSERVICE NOTIFICATION\:\s(.*)$/){
          		    my @tab = split(/;/, $2);
          		    $ctime = $1;
          		    $tab[5] =~ s/\'/\\\'/g; 
          		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `host_name` , `service_description`, `status`, `notification_cmd`, `notification_contact`, `output`) VALUES ('2', '$ctime', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."', '".$tab[4]."','".$tab[0]."','".$tab[5]."')");
          		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
         		} elsif ($_ =~ m/^\[([0-9]*)\]\sHOST NOTIFICATION\:\s(.*)$/){
          		    my @tab = split(/;/, $2);
          		    $ctime = $1;
          		    $tab[4] =~ s/\'/\\\'/g; 
          		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `notification_contact`, `host_name` , `status`, `notification_cmd`,  `output`) VALUES ('3', '$ctime', '".$tab[0]."','".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".$tab[4]."')");
          		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
         		} elsif ($_ =~ m/^\[([0-9]*)\]\sWarning\:\s(.*)$/){
          		    my $tab = $2;
          		    $ctime = $1;
          		    $tab =~ s/\'/\\\'/g; 
          		    $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`, `output`) VALUES ('4','$ctime', '".$tab."')");
          		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
         		} elsif ($_ =~ m/^\[([0-9]*)\]\s(.*)$/) {
          		    $ctime = $1;
          		    my $tab = $2;
          		    $tab =~ s/\'/\\\'/g; 
        		    if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}	    	
        		}
        		$cpt++;
            }
            close(FILE);
        }
        
        
        my $retention = $data->{'archive_retention'};
        
        sub parseArchive() {
            my $dbh1 = DBI->connect("DBI:mysql:database=".$mysql_database_oreon.";host=".$mysql_host, $mysql_user, $mysql_passwd, {'RaiseError' => 1});
            my $sth1 = $dbh1->prepare("SELECT log_archive_path  FROM cfg_nagios where nagios_activate = '1'");
            if (!$sth1->execute) {die "Error:" . $sth->errstr . "\n";}
            my $data1 = $sth1->fetchrow_hashref(); 
            my $archives = $data1->{'log_archive_path'};
            if (!$archives) {
        		print "log archive path not found.\n";
        		exit;
            }
            if (!($archives =~ /\/$/)) {
        		$archives .= "/";
            }
            my @log_files = split /\s/,`ls $archives`;
            my $last_log = time() - ($retention * 24 * 60 * 60);
            foreach(@log_files) {
        		$_ =~ /nagios\-([0-9\-]+).log/;
        		my @time = split /\-/, $1;
        		my $temp = $time[0]."/".$time[1]."/".$time[2];
        		$temp = `date -d $temp +%s`;
        		if ($temp > $last_log) {
        		    if(!(-r $archives.$_)) {
        				print "Error : cannot read file $archives$_\n";
        		    }else {
        				print $archives.$_."\n";
        				parseFile($archives.$_);
        		    }
        		}
            }
        }
        
        sub parseLogFile() {
        	my $LOG_FILE = $data->{'nagios_log_file'};
            if (!(-r $LOG_FILE)) {
        		print "Error : cannot open $LOG_FILE\n";
        		exit(0);
            }
            if (!$data->{'archive_log'}){exit();}
            # Decide if we have to read the nagios.log from the begining 
            if ($hour eq 0 && $min eq 0){
        		$last_line_read = 0;
        		$sth = $dbh->prepare("UPDATE config SET `last_line_read` = '0'");
        		if (!$sth->execute) {die "Error:" . $sth->errstr . "\n";}
        		$data = $sth->fetchrow_hashref();
            }
        
           	$sth = $dbh->prepare("SELECT last_line_read FROM config");
           	if (!$sth->execute) {die "Error:" . $sth->errstr . "\n";}
           	$data = $sth->fetchrow_hashref();
         	$last_line_read = $data->{'last_line_read'};
           	if (!defined($last_line_read)){$last_line_read = 0;} 
           	parseFile($LOG_FILE);
        	# Update statistics and flags
           	my $sth1 = $dbh->prepare("UPDATE `config` SET `last_line_read` = '".$cpt."'");
           	if (!$sth1->execute) {die "Error:" . $sth1->errstr . "\n";}
        }
        
        if ($opt_a) {
            parseArchive;
        } else {
        	parseLogFile();
        }
        
        # if ($retention ne 0){
        #     my $last_log = time() - ($retention * 24 * 60 * 60);
        #     my $sth1 = $dbh->prepare("DELETE FROM log WHERE ctime < '$last_log'");
        #     if (!$sth1->execute) {die "Error:" . $sth1->errstr . "\n";}
        # }
        exit;
        A noter que le fichier parsing_log.pl.rej n'a pas été modifié puisque sa date de dernière modification est celle de la première application du patch.

        Je l'ai donc supprimé et réappliqué le patch j'ai obtenu les même messages (avec la création d'un fichier parsing_log.pl.rej) mais le fameux fichier contenant les rejects n'a pas été créée.

        Si quelqu'un voit ce que je pourrais faire ? L'erreur continue dans le fichier /usr/local/oreon/ODS/var/ods.log
        Si quelqu'un pouvait me poster son fichier parsing_log.pl que je puisse comparer avec le mien, Merci d'avance.
        Last edited by Gio; 9 July 2007, 09:03.
        Fedora Core 6
        Nagios 2.6 + Nagios Plugins 1.4.6
        Oreon 1.3.3 -> 1.4-5

        Comment


        • #5
          As-tu supprimé la ligne commencant par - dans ton fichier cron/parsing_log.pl.rej ?

          Comment


          • #6
            J'ai bien supprimé les lignes commençant par un - et ajoutés à la place celles qui commencent par un +.

            D'ailleurs comme précisé sur le post précédent, lorsque j'ai essayé de réappliqué le patch il m'a dit qu'il y avait des erreurs et qu'il avait fait un fichier parsing_log.pl.rej mais il n'a rien fait de cela.

            J'ai tout de même testé de supprimé la ligne
            my $installedPath = "/usr/local/oreon";

            même si elle ne correspondait pas exactement à l'erreur indiquée dans le fichier .rej et cela ne change rien, toujours le même message d'erreur dans les logs.

            Personne pour me copier son fichier parsing_log.pl patché et qui fonctionne svp ?
            Fedora Core 6
            Nagios 2.6 + Nagios Plugins 1.4.6
            Oreon 1.3.3 -> 1.4-5

            Comment


            • #7
              Code:
              #! /usr/bin/perl -w
              ###################################################################
              # Oreon is developped with GPL Licence 2.0
              #
              # GPL License: http://www.gnu.org/licenses/gpl.txt
              #
              # Developped by : Julien Mathis - [email protected]
              #
              ###################################################################
              # 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]
              ####################################################################
              
              use strict;
              use warnings;
              use DBI;
              use File::stat;
              use Getopt::Long;
              use POSIX;
              
              use vars qw($mysql_user $mysql_passwd $mysql_host $mysql_database_oreon $mysql_d                                              atabase_ods $opt_h $opt_a $data);
              
              my $installedPath = "/usr/local/oreon";
              #my $installedPath = "/usr/local/oreon";
              require $installedPath."/ODS/etc/conf.pm";
              
              ## Init Date
              my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
              
              # Init MySQL Connexion
              my $dbh = DBI->connect("DBI:mysql:database=".$mysql_database_ods.";host=".$mysql                                              _host, $mysql_user, $mysql_passwd, {'RaiseError' => 1});
              
              Getopt::Long::Configure('bundling');
              GetOptions
                  ("h" => \$opt_h,            "help" => \$opt_h,
                   "a" => \$opt_a,            "archives" => \$opt_a);
              
              if($opt_h) {
                  print "Usage : $0 :\n";
                  print "       -a (--archives) load data from log archives to database\n";
                  print "       -h (--help) show help\n";
                  exit(0);
              }
              
              # Get conf Data
              my $sth = $dbh->prepare("SELECT archive_log, archive_retention, nagios_log_file                                                FROM config");
              if (!$sth->execute) {die "Error:" . $sth->errstr . "\n";}
              $data = $sth->fetchrow_hashref();
              
              
              my $cpt = 0;
              my $ctime = 0;
              my $last_line_read;
              
              # Parsing nagios.log
              sub parseFile ($) {
                       if (!open (FILE, $_[0])) {
                              print "Cannot open file : $_[0]\n";
                  }
                  if (!$opt_a) {
                              while ($cpt < $last_line_read && <FILE>){
                                  $cpt++;
                              }
                  }
                  while (<FILE>) {
                              if ($_ =~ m/^\[([0-9]*)\]\sSERVICE ALERT\:\s(.*)$/){
                                  my @tab = split(/;/, $2);
                                  $ctime = $1;
                                  $tab[5] =~ s/\'/\\\'/g;
                                  $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`,                                               `host_name` , `service_description`, `status`, `type`, `retry`, `output`) VALUE                                              S ('0', '$ctime', '".$tab[0]."', '".$tab[1]."', '".$tab[2]."', '".$tab[3]."','".                                              $tab[4]."','".$tab[5]."')");
                                  if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}                                               
                              } elsif ($_ =~ m/^\[([0-9]*)\]\sHOST ALERT\:\s(.*)$/){
                                  my @tab = split(/;/, $2);
                                  $ctime = $1;
                                  $tab[4] =~ s/\'/\\\'/g;
                                  $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`,                                               `host_name` , `status`,  `type`, `retry`, `output`) VALUES ('1', '$ctime', '".$                                              tab[0]."', '".$tab[1]."', '".$tab[2]."','".$tab[3]."','".$tab[4]."')");
                                  if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}                                               
                              } elsif ($_ =~ m/^\[([0-9]*)\]\sSERVICE NOTIFICATION\:\s(.*)$/){
                                  my @tab = split(/;/, $2);
                                  $ctime = $1;
                                  $tab[5] =~ s/\'/\\\'/g;
                                  $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`,                                               `host_name` , `service_description`, `status`, `notification_cmd`, `notificatio                                              n_contact`, `output`) VALUES ('2', '$ctime', '".$tab[1]."', '".$tab[2]."', '".$t                                              ab[3]."', '".$tab[4]."','".$tab[0]."','".$tab[5]."')");
                                  if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}                                               
                              } elsif ($_ =~ m/^\[([0-9]*)\]\sHOST NOTIFICATION\:\s(.*)$/){
                                  my @tab = split(/;/, $2);
                                  $ctime = $1;
                                  $tab[4] =~ s/\'/\\\'/g;
                                  $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`,                                               `notification_contact`, `host_name` , `status`, `notification_cmd`,  `output`)                                               VALUES ('3', '$ctime', '".$tab[0]."','".$tab[1]."', '".$tab[2]."', '".$tab[3]."'                                              ,'".$tab[4]."')");
                                  if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}                                               
                              } elsif ($_ =~ m/^\[([0-9]*)\]\sWarning\:\s(.*)$/){
                                  my $tab = $2;
                                  $ctime = $1;
                                  $tab =~ s/\'/\\\'/g;
                                  $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`,                                               `output`) VALUES ('4','$ctime', '".$tab."')");
                                  if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}                                               
                              } elsif ($_ =~ m/^\[([0-9]*)\]\s(.*)$/) {
                                  $ctime = $1;
                                  my $tab = $2;
                                  $tab =~ s/\'/\\\'/g;
                                  $sth = $dbh->prepare("INSERT INTO `log` (`msg_type`,`ctime`,                                               `output`) VALUES ('5','$ctime', '".$tab."')");
                                  if (!$sth->execute) {print "Error:" . $sth->errstr . "\n";}                                               
                              }
                              $cpt++;
                  }
                  close(FILE);
              }
              
              
              my $retention = $data->{'archive_retention'};
              
              sub parseArchive() {
                  my $dbh1 = DBI->connect("DBI:mysql:database=".$mysql_database_oreon.";host="                                              .$mysql_host, $mysql_user, $mysql_passwd, {'RaiseError' => 1});
                  my $sth1 = $dbh1->prepare("SELECT log_archive_path  FROM cfg_nagios where na                                              gios_activate = '1'");
                  if (!$sth1->execute) {die "Error:" . $sth->errstr . "\n";}
                  my $data1 = $sth1->fetchrow_hashref();
                  my $archives = $data1->{'log_archive_path'};
                  if (!$archives) {
                              print "log archive path not found.\n";
                              exit;
                  }
                  if (!($archives =~ /\/$/)) {
                              $archives .= "/";
                  }
                  my @log_files = split /\s/,`ls $archives`;
                  my $last_log = time() - ($retention * 24 * 60 * 60);
                  foreach(@log_files) {
                              $_ =~ /nagios\-([0-9\-]+).log/;
                              my @time = split /\-/, $1;
                              my $temp = $time[0]."/".$time[1]."/".$time[2];
                              $temp = `date -d $temp +%s`;
                              if ($temp > $last_log) {
                                  if(!(-r $archives.$_)) {
                                              print "Error : cannot read file $archives$_\n";
                                  }else {
                                              print $archives.$_."\n";
                                              parseFile($archives.$_);
                                  }
                              }
                  }
              }
              
              sub parseLogFile() {
                      my $LOG_FILE = $data->{'nagios_log_file'};
                  if (!(-r $LOG_FILE)) {
                              print "Error : cannot open $LOG_FILE\n";
                              exit(0);
                  }
                  if (!$data->{'archive_log'}){exit();}
                  # Decide if we have to read the nagios.log from the begining
                  if ($hour eq 0 && $min eq 0){
                              $last_line_read = 0;
                              $sth = $dbh->prepare("UPDATE config SET `last_line_read` = '0'")                                              ;
                              if (!$sth->execute) {die "Error:" . $sth->errstr . "\n";}
                              $data = $sth->fetchrow_hashref();
                  }
              
                      $sth = $dbh->prepare("SELECT last_line_read FROM config");
                      if (!$sth->execute) {die "Error:" . $sth->errstr . "\n";}
                      $data = $sth->fetchrow_hashref();
                      $last_line_read = $data->{'last_line_read'};
                      if (!defined($last_line_read)){$last_line_read = 0;}
                      parseFile($LOG_FILE);
                      # Update statistics and flags
                      my $sth1 = $dbh->prepare("UPDATE `config` SET `last_line_read` = '".$cpt                                              ."'");
                      if (!$sth1->execute) {die "Error:" . $sth1->errstr . "\n";}
              }
              
              if ($opt_a) {
                  parseArchive;
              } else {
                      parseLogFile();
              }
              
              # if ($retention ne 0){
              #     my $last_log = time() - ($retention * 24 * 60 * 60);
              #     my $sth1 = $dbh->prepare("DELETE FROM log WHERE ctime < '$last_log'");
              #     if (!$sth1->execute) {die "Error:" . $sth1->errstr . "\n";}
              # }
              exit;
              PS : tu peut tenter de reinstaller depuis le debut

              Comment


              • #8
                Merci pour le fichier, je viens de le tester et ça ne change rien.

                Je pense que je vais tenter plus tard une nouvelle installation car tout fonctionne à part ces satanés graphs ODS et ça m'embêterai de tout casser pour ça.

                Enfin, si il n'y à que ça à faire.
                Fedora Core 6
                Nagios 2.6 + Nagios Plugins 1.4.6
                Oreon 1.3.3 -> 1.4-5

                Comment


                • #9
                  J'ai réussi à résoudre mon problème.
                  J'ai retéléchargé la version 1.4 d'Oreon afin de récupérer le fichier parsing_log.pl d'origine.

                  Je l'ai copié dans mon répertoire d'install.
                  Appliqué le patch 1.4-3 et fait les modifications demandées dans le fichier parsing_log.pl.rej

                  Redémarrer ODS.

                  Par contre j'avais un petit oubli aussi dans la commande que j'exécutai pour grapher, l'argument -g était oublié

                  Magie, ça graphe bien et plus d'erreurs dans le fichier ods.log

                  Problème résolu, merci pour vos conseils.
                  Fedora Core 6
                  Nagios 2.6 + Nagios Plugins 1.4.6
                  Oreon 1.3.3 -> 1.4-5

                  Comment

                  Working...
                  X