Comment installer/configurer Icinga ?

4 Présentation

Icinga est un projet de supervision libre (open source). Ce dernier effectue une veille des ressources réseaux et averti les utilisateurs en cas d'erreur et/ou de retour à la normale. Il offre une visualisation des performances du système d'informations via la génération de rapports. Évolutif et extensible, Icinga est capable de superviser des environnements complexes et de tailles importantes, implantés sur différents sites géographiques.

Icinga est un fork de Nagios rétro-compatible. Ainsi, les configurations, plugins et addons de Nagios peuvent tous être utilisés avec Icinga. Bien qu'Icinga conserve toutes les caractéristiques existantes de son prédécesseur, il s'appuie sur celles-ci pour ajouter de nombreux correctifs et fonctionnalités longtemps attendues et demandées par la communauté des utilisateurs.

5 Pourquoi le Fork ?

Ces dernière années, la popularité de Nagios, solution de supervision libre (open source), a fait de ce dernier une quasi référence dans ce secteur. Ses capacités de supervision et de grande adaptabilité ont attiré des organisations de toutes tailles, et parmi les plus réputées : Amazon, BMW, Google, T-Mobile, Siemens, et bien d'autres. Bon nombre des caractéristiques qui ont fait l’efficacité de Nagios, ont été intégrées à l'actuelle application développées par de nombreux contributeurs à travers le monde.

A l'inverse, le noyau de ce système - l'application Nagios elle-même - n'était maintenu que par un développeur unique, basé aux États-Unis, et a été, par conséquent, développée très lentement. La communauté Nagios a tenté à plusieurs reprises de sortir de cet étroit chemin en suggérant l'élargissement de la base de développement. Des améliorations attendues de longue date, telles que l'habituelle intégration des propositions de corrections, la connexion à des bases de données ou l'interface web, étaient espérées rapidement. Malheureusement, ces essais n'ont pas eu le succès escompté et l'engagement de la communauté a graduellement décliné.

Sur une période de 6 mois précédant la création du fork, la situation s'est intensifiée, suite à une demande de Nagios Entreprises LLC, souhaitant établir que plusieurs projets de longues dates développés par des communautés n'étaient pas officiellement liés à Nagios. Dans certains de ces cas, ces compagnies ont dû changer le nom de leur projet libre (open source) ou tout simplement abandonner leur domaine. La combinaison du ralentissement du développement de l'application et d'actions disproportionnées contre des supporters de longue date de Nagios, a contrarié de nombreux membres actifs de la communauté.

Afin de surmonter ces obstacles et d'assurer, quoiqu'il arrive, la continuité du développement de ce logiciel de supervision populaire, un groupe de supporters actifs de longue date appartenant à la communauté Nagios a réussi à “forker” Nagios et à élargir sa base de développement. L'équipe de l'époque était composée des membres du précédent comité de consultants de la communauté Nagios, de développeurs de nombreuses évolutions de Nagios et de personnes de NETWAYS, de l'organisateur de la conférence de supervision sur Nagios et du fournisseur de la plate-forme du “MonitoringExchange” (précédemment NagiosExchange). Utilisant le nouveau nom d'“Icinga”, les supporters du fork ont lancé un nouveau projet. Dès la première version, certains bugs persistants ont été supprimés et des connections à des bases de données ont été améliorées. Une nouvelle interface web et une API standardisée ont été ajoutées pour simplifier l'intégration d'addons. Les principaux addons pour la génération de graphiques, la visualisation ou la supervision de l'activité ont été intégrés afin de faciliter le déploiement des prochaines versions d'Icinga.

6 Les différents composants d'Icinga

  • Icinga-Core :

Le noyau Icinga permet le suivi des tâches et la réception des résultats de vérification depuis de nombreux plugins. Il communique ensuite les résultats à IDODB via l'interface IDOMOD, puis le service IDO2DB chiffre ces données au travers du SSL. Bien que l'interface IDOMOD et le service IDO2DB (précédemment connu sous le nom IDOUtils) soient ensemble avec le noyau, se sont des composants indépendants pouvant être séparés afin de distribuer l'information à un ensemble de machines.

  • Icinga-Web :

Icinga-web est une interface web permettant de consulter les alertes de supervision ainsi que d'envoyer des commandes au noyau Icinga. Vous pouvez consulter, en temps réels, l'état des hôtes et services, l'historique des alertes, les notifications et la carte des disponibilités afin de garder un contrôle sur la santé de votre infrastructure. Il est possible d'intégrer la génération de graphiques de performances dans les rapports grâce à PNP ou GrapherV2. L'interface web, développée en Ajax, est flexible et personnalisable grâce au “glisser-déposer” de composants appelés cronks. Pour plus d'informations, vous pouvez consulter l'interface.

  • Icinga-Mobile :

Si vous avec besoin consulter l'état de votre système d'information lors de vos déplacements, Icinga Mobile est une application fonctionnant sur iPhone, Android et (à venir) Blackberry. Cette interface pour mobile permet de visualiser en détails l'état des hôtes et des services, de trier les données et d'envoyer des commandes comme dans Icinga-Web.

  • Icinga-Reporting :

La génération de rapports est primordiale dans la supervision. Icinga est donc un outil indispensable que ce soit pour consulter l'état des SLA, de l'utilisation des capacités ou tout simplement pour faciliter la compréhension des graphiques pour les managers. Icinga intègre un composant qui utilise JasperServer et iReport afin de générer des rapports visuels exportables en différents formats.

7 Contexte de la documentation

Afin d'éviter des problèmes de compatibilité qui serait du à des versions différentes, je préfère donner quelques informations supplémentaires :

OS CentOS : Comment installer une CentOs 6 ?
Version OS6.1
Version Icinga-core1.6.1
Version Icinga-web1.6.1
Version Icinga-mobile0.1.0
Version Icinga-reports1.6.0
Version nagios-plugins1.4.15
Version nagios-plugins-snmp1.1.1
Version GCCgcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC)
DBMySQL
Version Mysql5.1.52
Version PHPPHP 5.3.3 (cli) (built: Nov 3 2011 12:00:26)
Version de JasperReports4.2.1
Version pnp4nagios0.6.13

8 Installation d'Icinga-Core

8.1 Pré-requis

Afin que l'installation se déroule sans accroc, vous devez respecter ces pré-requis :

  • posséder les droits root
  • installer Apache
  • installer un compilateur GCC
  • posséder les librairies de développement C/C++
  • posséder les librairies de développement GD ()
  • une basse de données MySQL
  • installer snmp (optionnel)

8.2 Installation des pré-requis

  • Packages des prérequis : Apache, GCC, GD
yum install httpd gcc glibc glibc-common gd gd-devel libjpeg libjpeg-devel libpng libpng-devel php-soap
  • Packages des prérequis : MySQL
yum install mysql mysql-server libdbi libdbi-devel libdbi-drivers libdbi-dbd-mysql

8.3 Création du compte système

useradd -m icinga
passwd icinga

8.4 Gestion des groupes

Afin de pouvoir interagir avec Icinga au travers l'interface web, veuillez créer un groupe regroupant le user icinga et apache.

groupadd icinga-cmd
usermod -a -G icinga-cmd icinga
usermod -a -G icinga-cmd apache

8.5 Téléchargement et compilation d'Icinga avec IDOUtils

  • Téléchargement et décompression
cd /usr/src
wget http://mirror.opendoc.net/icinga-repository/icinga-1.6.1.tar.gz
tar xvzf icinga-1.6.1.tar.gz
  • Compilation

Nous allons compiler icinga dans /opt

cd /usr/src/icinga-1.6.1
./configure --prefix=/opt/icinga --enable-idoutils
make all
make fullinstall
make install-config

8.6 Téléchargement et compilation des plugins Nagios

  • Téléchargement et décompression
cd /usr/src
wget http://mirror.opendoc.net/nagios-plugins-repository/nagios-plugins-1.4.15.tar.gz
tar xvzf nagios-plugins-1.4.15.tar.gz
  • Compilation
cd /usr/src/nagios-plugins-1.4.15
./configure --prefix=/opt/icinga --with-cgiurl=/icinga/cgi-bin --with-htmurl=/icinga --with-nagios-user=icinga --with-nagios-group=icinga
make
make install
make install-root

8.7 Téléchargement et installation des plugins Nagios SNMP

* Téléchargement et décompression

cd /usr/src
wget http://mirror.opendoc.net/nagios-plugins-repository/nagios-snmp-plugins.1.1.1.tgz
tar xvzf nagios-snmp-plugins.1.1.1.tgz
  • Installation
yum install perl-Net-SNMP.noarch
cd /usr/src/nagios_plugins
./install.sh

###### Nagios snmp scripts installer ######

Will install all script(s)

What is your perl location ? [/usr/bin/perl] 
Net::SNMP module version is 5.002000 [OK]
Module Getopt::Long found [OK]

What is your nagios plugin location ? 
Note : file utils.pm must be present in it [/usr/local/nagios/libexec] /opt/icinga/libexec

Where do you want the plugins to put temporary data (only used by some plugins) ? 
Nagios user must be able to write files in it [/tmp] 
Will now install all script(s) :
 
in directory    : /opt/icinga/libexec
perl            : /usr/bin/perl
temp directory  : /tmp

OK ? [Y/n]Y

8.8 Paramètres post-installation

  • Modification du contact des alertes mail
Emplacement du fichier /opt/icinga/etc/objects/contacts.cfg
Source
define contact{ 
        contact_name                    icingaadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Icinga Admin            ; Full name of user
        email                           icinga@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }
Modification
define contact{
        contact_name                    icingaadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Icinga Admin            ; Full name of user
        email                           supervision@opendoc.net ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }


  • Activation du module idomod
Emplacement du fichier /opt/icinga/etc/icinga.cfg
Modification
broker_module=/opt/icinga/bin/idomod.o config_file=/opt/icinga/etc/idomod.cfg
Emplacement du fichier /opt/icinga/etc/modules/idoutils.cfg
Modification
 cp -av /opt/icinga/etc/idomod.cfg-sample /opt/icinga/etc/idomod.cfg 

8.9 Gestion de la base de données

N'oublier pas démarrer le service MySQL : /etc/init.d/mysqld restart

  • Création de la base, du user et des droits
mysql -u root -p
 mysql> CREATE DATABASE icinga;
 GRANT USAGE ON *.* TO 'icinga'@'localhost'
   IDENTIFIED BY 'icinga'
   WITH MAX_QUERIES_PER_HOUR 0
   MAX_CONNECTIONS_PER_HOUR 0
   MAX_UPDATES_PER_HOUR 0;
 GRANT SELECT , INSERT , UPDATE , DELETE
   ON icinga.* TO 'icinga'@'localhost';
 FLUSH PRIVILEGES ;
 quit
  • Importation du schéma la base
cd /usr/src/icinga-1.6.1/module/idoutils/db/mysql
mysql -u root -p icinga < mysql.sql
  • Copie du fichier de configuration pour IDOUtils
cp -av /opt/icinga/etc/ido2db.cfg-sample /opt/icinga/etc/ido2db.cfg

vérification

tail -f /var/log/messages

Dec 20 13:51:11 localhost icinga: Icinga 1.6.1 starting... (PID=10978)
Dec 20 13:51:11 localhost icinga: Local time is Tue Dec 20 13:51:11 CET 2011
Dec 20 13:51:11 localhost icinga: LOG VERSION: 2.0
Dec 20 13:51:11 localhost icinga: idomod: IDOMOD 1.6.1 (12-02-2011) Copyright(c) 2005-2008 Ethan Galstad, Copyright(c) 2009-2011 Icinga Development Team (https://www.icinga.org)
Dec 20 13:51:11 localhost ido2db: Client connected, data available.
Dec 20 13:51:11 localhost icinga: idomod: Successfully connected to data sink.  0 queued items to flush.
Dec 20 13:51:11 localhost icinga: Event broker module '/opt/icinga/bin/idomod.o' initialized successfully.
Dec 20 13:51:11 localhost ido2db: Handling client connection...
Dec 20 13:51:11 localhost icinga: Finished daemonizing... (New PID=10980)
Dec 20 13:51:11 localhost ido2db: Successfully connected to mysql database
Dec 20 13:51:11 localhost icinga: Event loop started...

8.10 Configuration de l'interface web classique

  • Création des CGIs
cd /usr/src/icinga-1.6.1
make cgis
make install-cgis
make install-html
  • Importation de configuration pour Apache
make install-webconf

Le fichier de configuration est importé dans /etc/httpd/conf.d/icinga.conf

  • Création d'un utilisateur pour l'interface
htpasswd -c /opt/icinga/etc/htpasswd.users icingaadmin
  • Désactivation du SELinux

afin de pouvoir exécuter le CGI via apache, veuillez faire la modification suivante :

Emplacement du fichier /etc/selinux/config
Source
SELINUX=enforcing
Modification
SELINUX=disabled

8.11 Accès à l'interface

Avant de vous authentifier sur l'interface, assurez vous d'avoir démarré tous les services et en respectant un certain ordre :

  1. MySQL : /etc/init.d/mysqld start
  2. Ido2db : /etc/init.d/ido2db start
  3. Icinga : /etc/init.d/icinga start
  4. Apache : /etc/init.d/httpd start

ou

for i in mysqld ido2db icinga httpd; do /etc/init.d/$i start; done

Vous pouvez maintenant vous identifier et utiliser l'interface classique d'Icinga : http://localhost/icinga

8.12 Ajout des services au démarrage

for svc in mysqld ido2db icinga httpd; do chkconfig --add $svc; chkconfig $svc on; done

9 Installation d'Icinga-Web

9.1 Pré-requis

Afin de préparer l'installation d'Icinga-Web, il faut respecté les pré-requis suivants :

  • MySQL
  • PHP (avec PEAR et CLI)
  • Icinga-API et IDOUtils fonctionnel

Assurez-vous d'avoir bien activer les dépôts de Rémi situé dans /etc/yum.repos.d/remi.repo si vous n'utilisez pas une CentOS 6

9.2 Installation des pré-requis

yum install php php-cli php-pear php-xmlrpc php-xsl php-pdo php-gd php-ldap php-mysql

9.3 Téléchargement et compilation d'Icinga-web

  • Téléchargement et décompression
cd /usr/src
wget http://mirror.opendoc.net/icinga-repository/icinga-web-1.6.1.tar.gz
tar xvzf icinga-web-1.6.1.tar.gz
  • Compilation
cd /usr/src/icinga-web-1.6.1
./configure --prefix=/opt/icinga-web --with-web-user=apache --with-web-group=apache --with-web-path=/icinga-web --with-web-apache-path=/etc/httpd/conf.d --with-db-type=mysql --with-db-host=localhost --with-db-port=3306 --with-db-name=icinga_web --with-db-user=icinga_web --with-db-pass=icinga_web  --with-enable-sla
make install
  • Validation de l'installation
[root@icinga icinga-web-1.5.2]# make install-done
Installation if icinga-web succeeded.
Please check the new Apache2 configuration (etc/apache2/icinga-web.conf).
You can install it simply by invoking 'make install-apache-config'.
If you don't want this you can restore its old behavior by
typing 'make install-javascript'. This will install the old symlinks
Have fun!
  • Importation de la configuration Apache
make install-apache-config
  • Remise à zéro du mot de passe pour Icinga-web (Optionnel)
make icinga-reset-password

9.4 Validation de dépendances de PHP

make testdeps

/usr/bin/php bin/testdeps.php
Icinga-web dependencies (running 23 test)

PHP (core) tests
	1/23 Test php version >= 5.2.3 (REQUIRED) ... (version 5.3.2 >= 5.2.3) OK
	2/23 Test for PEAR (REQUIRED) ... OK

PHP extensions
	3/23 Test php5-xsl (REQUIRED) ... (xsl found v0.1) OK
	4/23 Test php5-ldap ... (ldap found) OK
	5/23 Test php5-pdo (REQUIRED) ... (PDO found v1.0.4dev) OK
	6/23 Test php5-dom (REQUIRED) ... (dom found v20031129) OK
	7/23 Test php5-session (REQUIRED) ... (session found) OK
	8/23 Test php5-spl (REQUIRED) ... (SPL found v0.2) OK
	9/23 Test php5-pcre (REQUIRED) ... (pcre found) OK
	10/23 Test php5-tokenizer (REQUIRED) ... (tokenizer found v0.1) OK
	11/23 Test php5-libxml (REQUIRED) ... (libxml found) OK
	12/23 Test php5-reflection (REQUIRED) ... (Reflection found v$Revision: 293036 $) OK
	13/23 Test php5-gettext (REQUIRED) ... (gettext found) OK

Optional pdo drivers
	14/23 Test php5-pdo-mysql ... (pdo_mysql found v1.0.2) OK
	15/23 Test php5-pdo-pgsql ... (Extension pdo_pgsql does not exist) FAIL

Optional php extension
	16/23 Test php5-soap ... (soap found) OK
	17/23 Test php5-xmlrpc ... (xmlrpc found v0.51) OK
	18/23 Test php5-iconv ... (iconv found) OK
	19/23 Test php5-gd ... (gd found) OK
	20/23 Test php5-ctype ... (ctype found) OK
	21/23 Test php5-json ... (json found v1.2.1) OK
	22/23 Test php5-hash ... (hash found v1.0) OK
	23/23 Test php.ini memory_limit ... (memory_limit='134217728') OK

All over result: PASS (required 12/12, optional 10/11, all 22/23, time 0.01s)

Exit (status=0)

Si vous avez suivi la procédure d'installation de CentOS : Comment installer une CentOs 6 ? avec les dépôt de Rémi, vous n'aurez aucun problème. Si ce n'est pas le cas, activez le dépôt et faites une mise à jour de votre distribution (yum update). Noter que si vous utilisez une CentOS 6 les dépôts de remi n'est pas obligatoire.

9.5 Gestion de la base de données

  • création de l'utilisateur et des droits
mysql -uroot -p
GRANT USAGE ON *.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON icinga_web.* TO 'icinga_web'@'localhost';
  • création de la base
cd /usr/src/icinga-web-1.6.1
make db-initialize

9.6 Accès à l'interface

Assurez-vous que les services Apache, MySQL, Ido2db et Icinga sont lancés. Vous pouvez vous connecter à l'interface http://localhost/icinga-web avec comme identifiant :

  • user : root
  • mdp : password

10 Installation d'Icinga-mobile

10.1 Téléchargement et compilation d'Icinga-mobile

  • Prérequis
    • java
  • Installation des prérequis
yum install install java-1.6.0-openjdk.x86_64 java-1.6.0-openjdk-src.x86_64
  • Téléchargement et décompression
cd /usr/src
wget http://mirror.opendoc.net/icinga-repository/icinga-mobile.tgz
tar xvzf icinga-mobile.tgz
  • Compilation
cd /usr/src/icinga-mobile
./configure --with-web-user=apache --with-web-group=apache --with-web-apache-path=/etc/httpd --prefix=/opt/icinga-mobile
make
make install
/etc/init.d/httpd restart

10.2 Accès à l'interface

11 Installation d'Icinga-Reporting avec JasperReports

11.1 Pré-requis

Plusieurs pré-requis sont indispensable au bon fonctionnement du reporting

11.2 Installation des pré-requis

Grâce à JasperServer nous allons gagner du temps en installant par le même occasion un Tomcat

cd /usr/src
wget http://mirror.opendoc.net/icinga-repository/jasperreports-server-cp-4.2.1-linux-x64-installer.run
chmod 775 jasperreports-server-cp-4.2.1-linux-x64-installer.run
./jasperreports-server-cp-4.2.1-linux-x64-installer.run

Par défaut, l'installation se trouve dans /opt. Importer les samples et installer iReport.

11.3 Téléchargement et installation d'Icinga-reporting

  • Téléchargement et décompression
cd /usr/src
wget http://mirror.opendoc.net/icinga-repository/icinga-reports-1.6.0.tar.gz
tar xvzf icinga-reports-1.6.0.tar.gz
  • Installation
cd /usr/src/icinga-reports-1.6.0
./configure --with-jasper-server=/opt/jasperreports-server-cp-4.2.1
make install

11.4 Génération des rapports

  • Accès à l'interface

Connectez vous à http://localhost:8080/jasperserver avec les identifiants suivants : jasperadmin/jasperadmin

Afin de générer le rapport vous devez sélectionner les paramètres suivants :

  • Changed by anyone
  • Reports
  • Any tinme
  • Any schedule
  • Exemple de rapport

Voici un exemple de rapport généré : service.activity.pdf

12 Intégration de Pnp4nagios

  • Installation

Si vous souhaitez intégrer Pnp4nagios, vous pouvez suivre la procédure suivante : Comment installer/configurer pnp4nagios ?

  • Intégration

L'intégration de Pnp4nagios avec Icinga est très simple. Rendez-vous dans le répertoire source et lancer le script d'installation :

cd /usr/src/icinga-web/etc/contrib/PNP_Integration/
./install.sh 

Vous devriez avoir la présentation des graphiques dans l'interface web.

13 Intégration D'Icingen

Icingen est un générateur de configuration pour Icinga écrit en bash : Comment installer/configurer Icingen ?

14 Icinga Virtual Server (IVS)

Projet en cours de création.

solutions/comment-installer-configurer-icinga.txt · Dernière modification: 2013/07/14 17:19 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki