Vous êtes ici:

Menu


Installation du broker MK Livestatus et de l'interface Web Thruk sur Rapsberry

Stacks Image 1426
Cette partie est la plus difficile à mettre en oeuvre. Suivez bien les points pas à pas, avant d'y arriver convenablement il m'a fallu plusieurs soirée pour comprendre le fonctionnement.

- Installation de Centreon-Clib
- Installation de Centreon-Connector
- Installation de Centreon-engine
- Installation des plugins
- Installation du broker MK livestatus et de l'interface Web Thruk
- Installation de l'interface Web et finalisation de la configuration de Thruk
- Installation de PNP4nagios et intégration avec Thruk

Installation du broker MK Livestatus

cd /home/pi
wget http://mathias-kettner.de/download/mk-livestatus-1.2.2p3.tar.gz
tar -xvzf mk-livestatus-1.2.2p3.tar.gz 
cd mk-livestatus-1.2.2p3
./configure
make
Une fois la compilation terminée, vous devrez placer le binaire du broker dans le dossier du moteur de supervision.
sudo cp src/livestatus.o /usr/local/centreon-engine/bin

Configuration du moteur Centreon-Engine

Il faut modifier les fichiers de configuration du moteur. Rajoutez ces deux lignes dans le fichier /usr/local/centreon-engine/etc/centengine.cfg. N'oubliez pas d'utiliser sudo pour modifier les fichiers.
sudo vi /usr/local/centreon-engine/etc/centengine.cfg
broker_module=/usr/local/centreon-engine/lib/centreon-engine/externalcmd.so
broker_module=/usr/local/centreon-engine/bin/livestatus.o /var/lib/centreon-engine/rw/live
Modifiez le chemin des plugins pour centreon-engine dans le fichier /usr/local/centreon-engine/etc/resource.cfg
sudo vi /usr/local/centreon-engine/etc/resource.cfg
$USER1$=/usr/local/plugins/libexec
Modifiez le chemin du paramètre lock_file dans le fichier de démarrage /etc/init.d/centengine
sudo vi /etc/init.d/centengine
lock_file=/var/lock/centengine.lock
Démarrez Centren-Engine
sudo service centengine start
Vérifier le bon fonctionnement
sudo /usr/local/centreon-engine/bin/centenginestats | grep Active
Vous devriez avoir un résultat comme ci-dessous
Services Actively Checked:              8
Active Service Latency:                 0.009 / 0.206 / 0.111 sec
Active Service Execution Time:          0.096 / 4.026 / 0.679 sec
Active Service State Change:            0.000 / 0.000 / 0.000 %
Active Services Last 1/5/15/60 min:     4 / 8 / 8 / 8
Hosts Actively Checked:                 1
Active Host Latency:                    0.193 / 0.193 / 0.193 sec
Active Host Execution Time:             4.224 / 4.224 / 4.224 sec
Active Host State Change:               0.000 / 0.000 / 0.000 %
Active Hosts Last 1/5/15/60 min:        0 / 1 / 1 / 1
Active Host Checks Last 1/5/15 min:     1 / 3 / 3
Active Service Checks Last 1/5/15 min:  4 / 9 / 9

Installation de Thruk

Pré requis

Tout d'abord, installons les paquets nécessaires au fonctionnement de Thruk

sudo apt-get install yui-compressor libgd2-xpm-dev libgd-gd2-perl libcairo-perl liblocal-lib-perl libmodule-install-perl libtest-base-perl libconfig-yaml-perl


Normalement git est déjà installé sinon installez le package git pour pouvoir récupérer les librairies perl nécessaires au fonctionnement de Thruk.

sudo apt-get install git-core

Installation de Thruk Library

Récupérez les paquets nécessaires au fonctionnement de Thruk du dépôt GIT de Sven Nierlein.
cd /tmp
git clone git://github.com/sni/thruk_libs.git
Attention, le programme de compilation n'est pas adapté au Raspberry. Du fait de sa lenteur en compilation, les valeurs de Timeout doit être augmentées, sinon vous aurez droit à ce type de message d'erreur.
Stacks Image 6613
Message d'erreur Timeout
Modifiez le fichier suivant :
cd /tmp/thruk_libs/lib
sudo vi BuildHelper.pm
Modifier la valeur alarm à 1800
Il y a
alarm(120); # single module should not take longer than 1 minute
        if( -f "Build.PL" ) {
            `$PERL Build.PL >> $LOG 2>&1 && ./Build >> $LOG 2>&1 && ./Build install >> $LOG 2>&1`;
Il faut
alarm(1800); # single module should not take longer than 1 minute
        if( -f "Build.PL" ) {
            `$PERL Build.PL >> $LOG 2>&1 && ./Build >> $LOG 2>&1 && ./Build install >> $LOG 2>&1`;
Modifier la valeur $duration à 1800
Il y a
if($duration > 60) {
        chomp(my $pwd = `pwd`);
        print "installation took too long, see $pwd/$dir/$LOG for details\n";
Il faut
if($duration > 1800) {
        chomp(my $pwd = `pwd`);
        print "installation took too long, see $pwd/$dir/$LOG for details\n";
Vous pouvez compiler la librairie pour thruk. Prenez votre deuxième café :-) et prenez votre mal en patience, il vous faudra plusieurs heures de compilation. Cela me rappelle le temps ou je réalisais des images raytracing avec un 486 !
cd /tmp/thruk_libs
make
Stacks Image 6659
La préparation des librairies est terminée après quelques heures de compilation...

Installation de Thruk

Créez un utilisateur thruk
sudo groupadd -g 6002 thruk
sudo useradd -u 6002 -g thruk -m -r -d /home/thruk -c "thruk Admin" thruk -s /bin/bash
Stacks Image 6692
Donner les droits d'administration à l'utilisateur thruk
Pour vous simplifier les manipulations de configuration, vous pouvez octroyer les droits d'administration à l'utilisateur thruk. Pour cela, vous devez l"ajouter au groupe sudo de votre Raspberry et lui affectez un mot de passe.
sudo usermod -aG sudo thruk
sudo passwd thruk
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
Lancez une session en utilisateur thruk pour récupérer le binaire thruk.
sudo su - thruk
thruk@raspberrypi$ git clone https://github.com/sni/Thruk.git
Revenez en utilisateur pi et copiez la ligne suivante dans le fichier .profile de l'utilisateur thruk. Si vous avez ajouté le groupe sudo à l'utilisateur thuk, vous pouvez réaliser cette manipulation sans quitter la session thruk. Par contre, il faudra tout de même se ré-authentifier pour appliquer les variables d'environnement Perl nécessaire à la compilation de Thruk.
sudo vi /home/thruk/.profile
la ligne à rajouter à la fin du fichier
eval $(perl -I$HOME/Thruk/local-lib/lib/perl5 -Mlocal::lib=$HOME/Thruk/local-lib)
Revenez de nouveau en utilisateur thruk. Le dossier spécial pour les librairies Perl va se créer dans le dossier Thruk.
sudo su - thruk
Revenez de nouveau en utilisateur pi (ou pas si thruk est dans le groupe sudo). Copiez les librairies Perl précédemment compilées dans le dossier /home/thruk/Thruk/local-lib/lib/perl5.
pi@raspberrypi $ sudo cp -R /tmp/thruk_libs/local-lib/dest/* /home/thruk/Thruk/local-lib/
Il est temps enfin de compiler Thruk.
sudo su - thruk
cd Thruk
perl Makefile.PL && make
Si tout ce passe bien :-) vous devriez avoir à peu près ce résultat :
include /home/thruk/Thruk/inc/Module/Install.pm
include inc/Module/Install/Metadata.pm
include inc/Module/Install/Base.pm
include inc/Module/Install/Makefile.pm
include inc/Module/Install/Catalyst.pm
include inc/Module/Install/Include.pm
include inc/File/Copy/Recursive.pm
*** Module::Install::Catalyst
*** Module::Install::Catalyst finished.
include inc/Module/Install/Scripts.pm
include inc/Module/Install/AutoInstall.pm
include inc/Module/AutoInstall.pm
*** Module::AutoInstall version 1.06
*** Checking for Perl dependencies...
*** Since we're running under CPAN, I'll just let it take care
    of the dependency's installation later.
[Core Features]
- parent                                                                  ...loaded. (0.226)
- JSON::XS                                                                ...loaded. (2.34)
- Config::General                                                         ...loaded. (2.52)
- Config::Any                                                             ...loaded. (0.23)
- Class::Data::Inheritable                                                ...loaded. (0.08)
- MRO::Compat                                                             ...loaded. (0.12)
- LWP::UserAgent                                                          ...loaded. (6.05)
- Net::HTTP                                                               ...loaded. (6.06 >= 6.02)
- Class::C3::Adopt::NEXT                                                  ...loaded. (0.13)
- Class::C3::XS                                                           ...loaded. (0.13)
- URI::Escape                                                             ...loaded. (3.31)
- Moose                                                                   ...loaded. (2.1005)
- Socket                                                                  ...loaded. (2.011)
- GD                                                                      ...loaded. (2.50 >= 2.44)
- Template                                                                ...loaded. (2.25)
- Template::Plugin::Date                                                  ...loaded. (2.78)
- Date::Calc                                                              ...loaded. (6.3 >= 6.3)
- Date::Calc::XS                                                          ...loaded. (6.3)
- Data::Page                                                              ...loaded. (2.02)
- File::Slurp                                                             ...loaded. (9999.19)
- Date::Manip                                                             ...loaded. (6.40)
- Excel::Template::Plus                                                   ...loaded. (0.05)
- Class::Accessor::Fast                                                   ...loaded. (0.34)
- Catalyst                                                                ...loaded. (5.90042 >= 5.9001)
- Catalyst::Runtime                                                       ...loaded. (5.90042)
- Catalyst::Utils                                                         ...loaded. (undef)
- Catalyst::Controller                                                    ...loaded. (undef)
- Catalyst::Exception                                                     ...loaded. (undef)
- Catalyst::ScriptRunner                                                  ...loaded. (undef)
- Catalyst::Authentication::User::Hash                                    ...loaded. (undef)
- Catalyst::View                                                          ...loaded. (undef)
- Catalyst::View::TT                                                      ...loaded. (0.41)
- Catalyst::View::GD                                                      ...loaded. (0.01)
- Catalyst::View::JSON                                                    ...loaded. (0.33)
- Catalyst::View::Excel::Template::Plus                                   ...loaded. (0.03)
- Catalyst::Plugin::ConfigLoader                                          ...loaded. (0.32)
- Catalyst::Plugin::Static::Simple                                        ...loaded. (0.30 >= 0.3)
- Catalyst::Plugin::Authorization::Roles                                  ...loaded. (0.09)
- Catalyst::Plugin::CustomErrorMessage                                    ...loaded. (0.06)
- Catalyst::Plugin::Redirect                                              ...loaded. (0.02)
- Catalyst::Plugin::Compress                                              ...loaded. (0.005)
- Log::Log4perl                                                           ...loaded. (1.42 >= 1.34)
- Log::Dispatch::File                                                     ...loaded. (2.41)
- FCGI                                                                    ...loaded. (0.74)
- FCGI::ProcManager                                                       ...loaded. (0.24)
- FCGI::ProcManager::MaxRequests                                          ...loaded. (0.02)
- namespace::autoclean                                                    ...loaded. (0.13)
- Plack::Handler::CGI                                                     ...loaded. (undef)
- Storable                                                                ...loaded. (2.45)
- threads                                                                 ...loaded. (1.87)
- Thread::Queue                                                           ...loaded. (3.02)
- Thread::Semaphore                                                       ...loaded. (2.12)
[plugin_shinken]
- MongoDB                                                                 ...loaded. (0.45)
- Tie::IxHash                                                             ...loaded. (1.23)
[plugin_dashboard]
- List::Compare                                                           ...loaded. (0.37)
- List::MoreUtils                                                         ...loaded. (0.33)
[plugin_reports2]
- MIME::Lite                                                              ...loaded. (3.029)
- Class::Inspector                                                        ...loaded. (1.28)
[https_backends_support]
- LWP::Protocol::https                                                    ...loaded. (6.04)
- LWP::Protocol::connect                                                  ...loaded. (6.06)
[mysql_support]
- DBI                                                                     ...loaded. (1.628)
- DBD::mysql                                                              ...loaded. (4.023)
[author_test]
- Catalyst::Devel                                                         ...loaded. (1.39)
- Catalyst::Plugin::StackTrace                                            ...loaded. (0.12)
- CatalystX::LeakChecker                                                  ...loaded. (0.06)
- HTML::Lint                                                              ...loaded. (2.20)
- File::BOM                                                               ...loaded. (0.14)
- Test::Simple                                                            ...loaded. (0.98)
- Test::Cmd                                                               ...loaded. (1.05)
- Test::Pod                                                               ...loaded. (1.48 >= 1.4)
- Test::Perl::Critic                                                      ...loaded. (1.02)
- Test::Pod::Coverage                                                     ...loaded. (1.08)
- Perl::Critic::Policy::Dynamic::NoIndirect                               ...loaded. (0.06)
- Perl::Critic::Policy::NamingConventions::ProhibitMixedCaseSubs          ...loaded. (1.108)
- Perl::Critic::Policy::ValuesAndExpressions::ProhibitAccessOfPrivateData ...loaded. (v1.0.0)
- WWW::Mechanize::Firefox                                                 ...missing.
- Test::JavaScript                                                        ...missing.
==> Auto-install the 2 optional module(s) from CPAN? [n] 
*** Module::AutoInstall configuration finished.
include inc/Module/Install/WriteAll.pm
include inc/Module/Install/Win32.pm
include inc/Module/Install/Can.pm
include inc/Module/Install/Fetch.pm
Writing Makefile for Thruk
Writing MYMETA.yml and MYMETA.json
Writing META.yml
patched Makefile
created cached js/css files
finished

Première vérification de Thruk

On peut maintenant faire une première vérification de Thruk. La commande suivante doit nous retourner un message d'attente de connection sur le port 3000 du raspberry.
./script/thruk_server.pl 
HTTP::Server::PSGI: Accepting connections at http://0:3000/
Utilisez un navigateur et saisissez l'adresse suivante http://[IP Serveur Raspberry]:3000. Vous devriez avoir la vue suivante. Cette solution ne doit pas être utilisée en permanence, nous devons installer un serveur Web.
Stacks Image 6654
Essai de connexion avec le port 3000
Ne touchez pas aux paramètres pour l'instant. Il nous reste à finir la configuration de Thruk et l'installation d"un serveur Web.
Stacks Image 6695
Création du dossier var
Lors du premier lancement avec le script thruk_server.pl, un dossier var va être créé dans le dossier /home/thruk/Thruk avec les droits de l'utilisateur thruk. Ce dossier contient le fichier secret.key nécessaire au fonctionnement de thruk. Il contiendra plus tard tous les profiles de chaque utilisateur. Il faudra modifier les droits de ce dossier lorsque nous utiliserons un serveur Web.
Nous verrons qu'il est possible et même conseillé de modifier le chemin de ce dossier.

Références

Site en allemand expliquant le problème du timeout pour la compilation de la librairie : http://kenntwas.de/2012/linux/monitoring/omd-0-56-ist-da-jetzt-auch-fuer-raspberry-pi/
comments powered by Disqus
 Vous êtes ici: