Auteur Sujet: [Check_logfiles] Could not find logfile  (Lu 712 fois)

Hors ligne ray

  • Newbie Froggy
  • *
  • Messages: 4
  • Karma: 0
[Check_logfiles] Could not find logfile
« le: 24 juin, 2009, 16:05:40 pm »
Bonjour,

Voici mon problème :
J'ai déployé le plugin check_logfiles sur des serveurs pour superviser l'alertlog de bases de données.
J'ai configuré le NRPE, j'ai défini le fichier de paramétrage du check_logfiles, tout fonctionne correctement.

Sur un serveur, j'ai vidé l'alertlog de la base et depuis mon alerte est en carafe.
J'ai le message suivant qui remonte dans Nagios :
UNKNOWN - (1 unknown in cfg_alertlog_DWHFP.protocol-2009-06-24-15-35-40) - could not find logfile /u01/oradata/admin/DWHFP/bdump/alert_DWHFP.log

Pourtant quand j'éxecute le script directement sur le serveur cela fonctionne correctement.

Voici la déclaration de la commande dans le fichier nrpe.cfg :
command[check_OraAlertLog::DWHFP]=/usr/local/nagios/libexec/check_logfiles -f /usr/local/nagios/libexec/cfg_alertlog_DWHFP
Voici le fichier de paramétrage cfg_alertlog_DWHFP :
@searches = (
  {
  tag => "oraalert",
  logfile => '/u01/oradata/admin/DWHFP/bdump/alert_DWHFP.log',
  archivedir => '/u01/oradata/admin/DWHFP/bdump/',
  criticalpatterns => [
      'ORA\-',                         
  ],
  criticalexceptions => [
      'ORA\-01555',                   
      'ORA\-00060',                   
      'ORA\-12570',                   
      'ORA\-06512',                   
      'ORA\-1237',                     
      'ORA\-1119',                     
      'ORA\-19502',                   
      'ORA\-1652',                     
      'ORA\-1031',                     
      'ORA\-00604',                   
      'ORA\-01013',                   
      'ORA\-3297',                     
      'ORA\-3113',                     
      'ORA\-16146',                   
      'ORA\-6501'                     
  ],
  warningpatterns => [
      'ORA\-3113',                     
      'ORA\-16146',                   
      'ORA\-6501'                     
  ],
  end => "A",
});


Quand j'éxecute la commande /usr/local/nagios/libexec/check_logfiles -f /usr/local/nagios/libexec/cfg_alertlog_DWHFP sur le serveur ça fonctionne très bien.

Par contre quand je l'éxecute depuis le serveur Nagios j'ai le message d'erreur suivant :

UNKNOWN - (1 unknown in cfg_alertlog_DWHFP.protocol-2009-06-24-15-35-40) - could not find logfile /u01/oradata/admin/DWHFP/bdump/alert_DWHFP.log [/color]

J'ai regardé tout ce que je pouvais, les fichiers de paramétrages sont identiques à ceux des autres serveurs où ça fonctionne très bien.

Le problème est survenu quand j'ai purgé l'alertlog...

Bref je n'y comprends rien.
Si quelqu'un a une idée...

D'avance merci pour votre aide.

Ray

Hors ligne frankb

  • Modérateur Global
  • Mentor Froggy
  • *****
  • Messages: 476
  • Karma: 32
Re : [Check_logfiles] Could not find logfile
« Réponse #1 le: 24 juin, 2009, 17:22:02 pm »
Bonjour,

Tu as purgé le fichier avec quel utilisateur ?
Les droits d'accès au fichier sont-ils bons ?
--> Merci de préciser si vos problèmes sont résolus pour que l'équipe du forum puisse passer vos topics en [RESOLU].

Hors ligne ray

  • Newbie Froggy
  • *
  • Messages: 4
  • Karma: 0
Re : [Check_logfiles] Could not find logfile
« Réponse #2 le: 24 juin, 2009, 18:15:30 pm »
Bonjour Frank,

L'alertlog a été purgé avec le user oracle.
Les droits sur l'alertlog sont les suivants :

-rw-r--r--  1 oracle dba          0 jun 24 18:04 alert_DWHFP.log
le plugin fonctionne très bien en local sur le serveur. J'en conclue donc que les droits sont bons...
Mais bon comment explique que le même script fonctionne très bien en local et pas via NRPE.
Pourquoi la purge de l'alertlog entraine cette réaction ???

Hors ligne ray

  • Newbie Froggy
  • *
  • Messages: 4
  • Karma: 0
Re : [Check_logfiles] Could not find logfile
« Réponse #3 le: 24 juin, 2009, 18:20:26 pm »
J'ai peut-être une piste mais je ne sais pas quoi en faire :

Dans le plugin check_logfiles j'ai trouvé la condition qui remonte le status UNKNOWN - could not find ...

sub collectfiles {
  my $self = shift;
  my @rotatedfiles = ();
  if ($self->{logmodified}) {
        my $fh = new IO::File;
    # cygwin lets you open files even after chmodding them to 0000, so double check with -r
    if ($self->getfileisreadable($self->{logfile})) {
      $fh->open($self->{logfile}, "r");
      $self->trace("opened logfile %s", $self->{logfile});
      push(@rotatedfiles,
          { filename => $self->{logfile}, fh => $fh, seekable => 1 });
      $self->trace("logfile %s (modified %s / accessed %s / inode %d / inode changed %s)",
          $self->{logfile},
          scalar localtime((stat $self->{logfile})[9]),
          scalar localtime((stat $self->{logfile})[8]),
          (stat $self->{logfile})[1],
          scalar localtime((stat $self->{logfile})[10]));
    } else {
      if (-e $self->{logfile}) {
        #  permission problem
        $self->trace("could not open logfile %s", $self->{logfile});
        $self->addevent('CRITICAL', sprintf "could not open logfile %s",
            $self->{logfile});
      } else {
        if ($self->{options}->{logfilenocry}) {
          # logfiles which are not rotated but deleted and re-created may be missing
          #  maybe a rotation situation, a typo in the configfile,...
          $self->trace("could not find logfile %s", $self->{logfile});
          $self->addevent('UNKNOWN', sprintf "could not find logfile %s",
              $self->{logfile});
        } else {
          # dont care.
          $self->trace("could not find logfile %s, but that's ok",
              $self->{logfile});
        }
     }
    }
  }
  $self->trace(sprintf "relevant files: %s", join(", ", map { basename $_->{filename} } @rotatedfiles));
  $self->{relevantfiles} = \@rotatedfiles;
}

On retrouve bien le "could not find ...". Cela serait donc lié à cette histoire de rotation de log...
Mais bon pourquoi ça marche en local !!!

Si quelqu'un a une idée...

Je suis dépité  :(

Merci d'avance


Hors ligne Romuald

  • Administrateur
  • Super Froggy
  • *
  • Messages: 1 583
  • Karma: 73
Re : [Check_logfiles] Could not find logfile
« Réponse #4 le: 25 juin, 2009, 09:39:01 am »
Pour l'exécuter à distance, tu l'as bien mis à la sauce NRPE

Exemple :

check_command           check_nrpe!check_OraAlertLog::DWHFP
Fronteau Romuald / Administrateur Forum


--> Merci de préciser si vos problèmes sont résolus pour que l'équipe du forum puisse passer vos topics en [RESOLU].

Hors ligne ray

  • Newbie Froggy
  • *
  • Messages: 4
  • Karma: 0
Re : [Check_logfiles] Could not find logfile
« Réponse #5 le: 25 juin, 2009, 11:14:19 am »
Bonjour Romuald,

Oui tout à fait.

Et quand je l'exécute manuellement depuis le serveur Nagios en faisant la commande suivante :

./check_nrpe_CAM -H IP_SERVEUR -p 5656 -c check_OraAlertLog::DWHFP

J'ai le même message d'erreur :

UNKNOWN - (1 unknown in cfg_alertlog_DWH.protocol-2009-06-25-11-11-25) - could not find logfile /u01/oradata/admin/DWHFP/bdump/alert_DWHFP.log |oraalert_lines=0 oraalert_warnings=0 oraalert_criticals=0 oraalert_unknowns=1
Le problème vient peut-être de NRPE étant donné qu'en local ça passe...

Hors ligne frankb

  • Modérateur Global
  • Mentor Froggy
  • *****
  • Messages: 476
  • Karma: 32
Re : Re : [Check_logfiles] Could not find logfile
« Réponse #6 le: 25 juin, 2009, 15:18:30 pm »
Bonjour Romuald,

Oui tout à fait.

Et quand je l'exécute manuellement depuis le serveur Nagios en faisant la commande suivante :

./check_nrpe_CAM -H IP_SERVEUR -p 5656 -c check_OraAlertLog::DWHFP

J'ai le même message d'erreur :

UNKNOWN - (1 unknown in cfg_alertlog_DWH.protocol-2009-06-25-11-11-25) - could not find logfile /u01/oradata/admin/DWHFP/bdump/alert_DWHFP.log |oraalert_lines=0 oraalert_warnings=0 oraalert_criticals=0 oraalert_unknowns=1
Le problème vient peut-être de NRPE étant donné qu'en local ça passe...

Le numéro de port de nrpe est le 5666, mais je pense que c'est une erreur de frappe lors de la saisie du message. Redémarre le service xinetd à tout hasard, on ne sait jamais.  Sinon avant de le redémarrer, as-tu d'autres commandes qui interroge ton serveur via nrpe ? (disque, charge...)
C'est juste pour vérifier si nrpe fonctionne bien.
--> Merci de préciser si vos problèmes sont résolus pour que l'équipe du forum puisse passer vos topics en [RESOLU].