Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1517 connectés 

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Management du SI

  Nagios : Crash du service à cause de downtime.h

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nagios : Crash du service à cause de downtime.h

n°141754
supervizem​e
Posté le 20-08-2016 à 18:36:28  profilanswer
 

Bonjour,
 
Je rencontre un problème sur Nagios. Tous les soirs à minuit, le service Nagios crash automatiquement. J'ai identifié le problème mais ne parvient pas à le corriger.
 
Voici les informations dont je dispose :  
 
Centos 6.5
Nagios 3.5.1
Check-MK 1.2.6p16
 
Le problème est lié à un hôte que j'ai déclaré en "scheduled downtime" : c'est à dire que Nagios ne va pas me générer de notification (par mail) même si l'host est down. Tous les soirs, à minuit, lors de la rotation des logs, Nagios crashe à cause de ce downtime. Il s'agit d'un bug connu : http://lists.mathias-kettner.de/pi [...] 14596.html. Il existe un patch (décrit dans le lien) mais je ne parviens pas à comprendre comment l'appliquer.
 
Une bonne âme pour m'aiguiller ?
 
Merci  :hello:

mood
Publicité
Posté le 20-08-2016 à 18:36:28  profilanswer
 

n°141756
ccp6128
Syntax error
Posté le 20-08-2016 à 20:34:57  profilanswer
 

Il faut que tu télécharges les sources de Nagios, que tu appliques ton diff sur le fichier en question via la commande patch (patch -i 0007-fix_downtime_struct.diff downtime.h) et que tu recompiles Nagios pour obtenir ton binaire patché.

n°141757
supervizem​e
Posté le 20-08-2016 à 21:12:12  profilanswer
 

Merci de l'info ! Donc pour résumé : j'ai installé Nagios via yum. Là, je retelecharge Nagios 3.5.1, par exemple dans /tmp, je patche avec la commande que tu m'indiques et pour recompiler il me suffit d'un make install ? Je ne risque pas de supprimer ce qui est déjà existant ? Il s'agit d'une machine qui est en production ..  
 
Merci !

n°141758
ccp6128
Syntax error
Posté le 20-08-2016 à 21:28:29  profilanswer
 

On fait pas de tests sur une machine en prod :p Je te conseille de refaire les manips sur une VM ou une autre machine, ca t'évitera de tout casser suite a une fausse manip.
 
 
Idéalement tu veux recompiler le Nagios avec exactement les mêmes options de compilations que celles utilisées dans ton RPM, ca t'évitera d'éventuels soucis.
 
Récupère plutôt le source rpm de Nagios, appliques le patch, et tu rebuild a partir du spec fourni dans le srpm.
 
Ensuite tu mets à jour ta machine de prod avec le rpm patché que tu as généré.

n°141760
supervizem​e
Posté le 20-08-2016 à 21:46:43  profilanswer
 

Hmm.. Je sens que ça va piquer ! Je vais tenter ça dès demain matin, je me permets de revenir vers toi si je galère ?

n°141761
ccp6128
Syntax error
Posté le 20-08-2016 à 22:02:56  profilanswer
 

Si tu n'y arrives pas indique moi sur quel repository tu récupères le rpm Nagios (ou les repos que tu as dans /etc/yum.repos.d/) histoire que je me fasse une VM a l'identique de ta conf.

n°141766
supervizem​e
Posté le 21-08-2016 à 19:15:38  profilanswer
 

Hello !
 
J'ai essayé de me débrouiller tout seul, mais visiblement je m'y prends mal ..  
 
Les repos : CentOS-Base.repo  
                                                                                               CentOS-fasttrack.repo  
                                                                                               CentOS-Vault.repo  
                                                                                               epel-testing.repo  
                                                                                               CentOS-Debuginfo.repo  
                                                                                               CentOS-Media.repo epel.repo          
                                                                                               ok.repo
 
 
J'ai récupérer le rpm de Nagios via yumdownloader nagios, dans /tmp.
Ensuite je tente d'extraire le fichier .rpm pour appliquer le patch (via rpm2cpio). Là je bloque !
 
Ensuite je pense que je dois utiliser rpmbuild --rebuild /tmp/nagiosxxx.src.rpm ?
 
Il me reste ensuite à vérifier que ça corrige le problème. Si oui, récupérer le rpm pour le mettre sur la machine de prod'.
 
Correction : CentOS 6.8 et pas 6.5.
 
Merci si tu passes par là :)

n°141769
ccp6128
Syntax error
Posté le 21-08-2016 à 20:33:35  profilanswer
 

Je suis dans le coin oui :p
 
Normalement tu installes le source rpm, tu patches, et tu rebuildes le rpm à partir du .spec
 
J'ai une VM de Centos 6.8 en x86_64, je te refais le rpm un peu plus tard dans la soirée.

n°141770
ccp6128
Syntax error
Posté le 21-08-2016 à 23:31:23  profilanswer
 

On part du principe que tu as installé déja les outils de compilation + quelques trucs utiles (j'ai eu la main lourde sur l'install des prérequis Perl, ca installe aussi des prérequis inutiles => avoir une machine de compilation et pas le faire en prod directement).
 

yum groupinstall "Development tools"
yum install mock rpmbuild git
useradd mockbuild
yum install gd-devel libjpeg-devel libpng-devel perl-CPAN perl-ExtUtils-* perl-Test-* perl-HTML-Lint


 
Alors : j'ai activé le source repository de epel.repo, et on commence par récupérer le source rpm :
 

[root@Centos6 yum.repos.d]# yumdownloader --source nagios
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink                                                                                                                          |  22 kB     00:00
epel-source/metalink                                                                                                                   |  21 kB     00:00
epel-source                                                                                                                            | 3.5 kB     00:00
epel-source/primary_db                                                                                                                 | 1.8 MB     00:05
nagios-3.5.1-1.el6.src.rpm                                                                                                             | 1.7 MB     00:04


 
On installe le rpm. Les étapes de compilation et de rebuild du rpm ne se font pas en root.

[root@Centos6 ~]#su - mockbuild
[mockbuild@Centos6 ~]$ rpm -ivh nagios-3.5.1-1.el6.src.rpm
   1:nagios                 ########################################### [100%]
 
[mockbuild@Centos6 ~]$ ls
nagios-3.5.1-1.el6.src.rpm  rpmbuild


 
Tu obtiens les sources de Nagios + les patches RedHat + le spec qui permet de tout recompiler dans le répertoire rpmbuild du $HOME de ton utilisateur
 
Maintenant on place le patch Nagios ;

[mockbuild@Centos6 ~]$  vi rpmbuild/SOURCES/nagios-0012-Fix-downtime-crash.patch


 
Le contenu du fichier sera :

diff --git a/include/downtime.h b/include/downtime.h
--- a/include/downtime.h
+++ b/include/downtime.h
@@ -39,24 +39,26 @@
  char *service_description;
  time_t entry_time;
  time_t start_time;
- time_t flex_downtime_start;  /* Time the flexible downtime started */
  time_t end_time;
  int fixed;
  unsigned long triggered_by;
  unsigned long duration;
  unsigned long downtime_id;
- int is_in_effect;
- int start_notification_sent;
  char *author;
  char *comment;
 #ifdef NSCORE
  unsigned long comment_id;
+#endif
+ int is_in_effect;
+#ifdef NSCORE
  int start_flex_downtime;
  int incremented_pending_downtime;
 // int start_event;  
 // int stop_event;
 #endif
  struct scheduled_downtime_struct *next;
+ time_t flex_downtime_start;  /* Time the flexible downtime started */
+ int start_notification_sent;
  } scheduled_downtime;


 
On édite le .SPEC pour y placer la ligne qui va appliquer le patch lors du build :

[mockbuild@Centos6 ~]$ vi rpmbuild/SPECS/nagios.spec


On ajoute les lignes suivantes :
 

Ligne 35 : Patch12: nagios-0012-Fix-downtime-crash.patch
Ligne 141 : %patch12 -p1 -b .fix_downtime


 
On va aussi éditer le début du fichier pour changer la version et éviter de confondre le RPM modifié avec le RPM de base
 

Name: nagios
Version: 3.5.1
Release: 1%{?dist}.patched
Summary: Host/service/network monitoring program


 
Yapluka rebuilder le rpm
 

[mockbuild@Centos6 ~]$ rpmbuild -ba rpmbuild/SPECS/nagios.spec


 
Et tu obtiens un joli set de RPM :

[mockbuild@Centos6 ~]$ ls rpmbuild/RPMS/x86_64/nagios-
nagios-3.5.1-1.el6.patched.x86_64.rpm            nagios-debuginfo-3.5.1-1.el6.patched.x86_64.rpm
nagios-common-3.5.1-1.el6.patched.x86_64.rpm     nagios-devel-3.5.1-1.el6.patched.x86_64.rpm


 
Que j'ai mis à disposition la pendant quelques jours.
 
Et voila :)
 
Edit - Correction d'une faute de frappe


Message édité par ccp6128 le 22-08-2016 à 18:02:19

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Management du SI

  Nagios : Crash du service à cause de downtime.h

 

Sujets relatifs
Plugins Nagios[HELP]après crash NAS,mount iSCSI sous linux+reparer le Filesystem
Suite Sysprep → Échec de l'ouverture de session par le service...VPN logiciel permanent Win serveur 2012 (as a service ?)
Droit utilisateur Executer service (Domaine)Nagios/EON problème fuseau horaire
probleme de désynchronisation du service temps sur PDCCoupure Nagios Centreon
service cluster s'arrete - exchange 2010 DAG[FINI] Mon projet Shinken (Supervision + graphite + notifs + nagvis)
Plus de sujets relatifs à : Nagios : Crash du service à cause de downtime.h



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR