Installation d’Icinga et d’Icinga-web en version 1.2

Je profite de la sortie de la nouvelle version d’Icinga et d’Icinga-web pour mettre à jour mes articles sur l’installation. Il n’y pas énormément de changement dans l’installation. On commence par l’installation d’Icinga :

Installation d’Icinga

Je vais expliquer ici comment installer Icinga avec les IDOutils. Ils sont nécessaires pour pouvoir utiliser Icinga-web.

Les pré-requis

On commence par installer les pré-requis :

apt-get install apache2 build-essential libgd2-xpm-dev
apt-get install libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev
apt-get install mysql-server mysql-client libdbi0 libdbi0-dev libdbd-mysql

On doit commencer par créer un compte utilisateur pour Icinga :

useradd -m icinga
passwd icinga

On crée un groupe icinga-cmd auquel on ajoute les utilisateurs icinga et www-data :

groupadd icinga-cmd
usermod -a -G icinga-cmd icinga
usermod -a -G icinga-cmd www-data

On télécharge Icinga sur sourceforge :

wget http://sourceforge.net/projects/icinga/files/icinga/1.2.0/icinga-1.2.0.tar.gz

Ensuite on extrait l’archive, on rentre dans le répertoire « Icinga-1.2.0 » et on lance le couple configure/make.

tar xvf ./icinga-1.2.0.tar.gz 
cd ./icinga-1.2.0
./configure --with-command-group=icinga-cmd --enable-idoutils
make all
make fullinstall

On édite le fichier de conf de Icinga pour lui dire de charger idomod à son lancement :

vi /usr/local/icinga/etc/icinga.cfg

Il faut décommenter la ligne 249 qui doit correspondre à celle là :

broker_module=/usr/local/icinga/bin/idomod.o config_file=/usr/local/icinga/etc/idomod.cfg

Nous devons ensuite créer la base de donner pour les IDOutils :

mysql -u root -p
CREATE DATABASE icinga;

On ajoute un utilisateur mysql Icinga et on lui donne les droits sur la base de donnée 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 ;

On quitte Mysql pour le moment.

Nous sommes toujours dans notre répertoire « Icinga-1.2.0 », nous devons nous rendre dans un sous-répertoire et lancer une commande pour créer la structure de la base de donnée Icinga :

cd ./module/idoutils/db/mysql/
mysql -u root -p icinga < mysql.sql
cd /usr/local/icinga/etc/
mv idomod.cfg-sample idomod.cfg
mv ido2db.cfg-sample ido2db.cfg

Nous devons ensuite éditer le fichier de configuration de la base de données utilisé par le module IDOutils.

vi /usr/local/icinga/etc/ido2db.cfg

Dans notre cas, nous devons vérifier que les paramètre suivants soient corrects :

db_servertype=mysql
db_port=3306
db_user=icinga
db_pass=icinga

On retourne à la racine de notre répertoire « Icinga-1.2.0 » et on lance la commande « make install-webconf » qui installera la configuration Apache pour l’interface web.

On rajoute un compte pour avoir accès à l’interface web,

htpasswd -c /usr/local/icinga/etc/htpasswd.users icingaadmin

On doit ensuite redémarrer apache pour que la nouvelle configuration soit prise en compte.

/etc/init.d/apache2 restart

Installation des nagios plugins

Comme pour Nagios, nous devons installer les nagios-plugins, on les récupère sur le site de Nagios. On sort de notre répertoire « Icinga-1.2.0 ».

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz

On extrait ensuite les nagios-plugins :

tar xvf ./nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15

On configure et on installe les plugins :

# On précise à ./configure d'utiliser comme répertoire, le répertoire d'installation d'Icinga
./configure --prefix=/usr/local/icinga --with-nagios-user=icinga
make
make install

On met en place le lancement automatique d’Icinga :

update-rc.d icinga defaults
update-rc.d ido2db defaults

On essaye de lancer le tout :

/etc/init.d/ido2db start
/etc/init.d/icinga start

Installation d’Icinga-web

Les pré-requis

On commence par installer les dépendances :

apt-get install git-core autoconf 
apt-get install php5 php5-cli php5-mysql php5-xmlrpc php5-xsl php-pear php5-gd php5-ldap

Installation d’Icinga-Web

On télécharge l’archive d’Icinga-web qu’on extrait ensuite :

wget http://sourceforge.net/projects/icinga/files/icinga-web/1.2.0/icinga-web-1.2.0.tar.gz
tar xvf ./icinga-web-1.2.0.tar.gz

Nous avons besoin de récupérer les API d’Icinga, c’est pour cela que nous avons installé GIT précédemment :

cd /usr/src/
git clone git://git.icinga.org/icinga-api.git
cd /root/

Ensuite, on va dans le répertoire « Icinga-web » et on lance « autoconf » pour générer la configuration de base :

cd icinga-web-1.2.0
autoconf

Après on passe au fameux couple configure/make. On fait passer en paramètres à « configure » le chemin des API d’Icinga, l’utilisateur web (Apache2) ainsi que l’utilisateur de la base de donnée d’Icinga :

sh configure --prefix=/usr/local/icinga-web --with-web-user=www-data --with-web-group=www-data --with-db-user=icinga --with-db-pass=icinga --with-icinga-api=/usr/src/icinga-api/
make install
make install-apache-config
make testdeps # Cette commande permet de vérifier que toutes les dépendances soient installées.

Préparation de la base de donnée

On prépare le terrain pour la création de la base de donnée.

mysql -uroot -p

On crée notre base de donnée « icinga-web » et on donne des droits à l’utilisateur MySQL « icinga » sur cette base.

CREATE DATABASE icinga_web;
GRANT SELECT , INSERT , UPDATE , DELETE ON icinga_web.* TO 'icinga'@'localhost';

On quitte MySQL. Puis on lance la création de la structure via la commande suivante :

make db-initialize

Lors de l’exécution de cette commande, on va vous demander si vous voulez utiliser l’utilisateur spécifié dans le fichier database.xml pour créer la base de donnée. Tapez « n » puis valider en tappant sur la touche entrée. Vous devez alors spécifier le nom d’utilisateur pour la connexion à la base. Ici j’ai utilisé l’utilisateur « root » enfin le mot de passe pour l’utilisateur « root » va vous être demandé.

bin/phing -f etc/build.xml db-initialize
Buildfile: /root/icinga-web-1.2.0/etc/build.xml
 [property] Loading /root/icinga-web-1.2.0/etc/build.properties
 
icinga-web > db-initialize:
 
[phingcall] Calling Buildfile '/root/icinga-web-1.2.0/etc/build.xml' with target 'db-create'
 [property] Loading /root/icinga-web-1.2.0/etc/build.properties
 
icinga-web > prepare:
 
icinga-web > db-prepare:
 
Use the db-user specified in icinga-webs database.xml (Needs create Database/create Table rights)?(n,y)? n
Name of the db-user (needs Create Database/Tables permission) root
Root pass: 
 
icinga-web > db-create:
 
BUILD FINISHED

On peut se connecter à MySQL pour vérifier que les tables aient bien été crées :

use icinga_web;
mysql> show tables;
+----------------------+
| Tables_in_icinga_web |
+----------------------+
| nsm_db_version       | 
| nsm_log              | 
| nsm_principal        | 
| nsm_principal_target | 
| nsm_role             | 
| nsm_session          | 
| nsm_target           | 
| nsm_target_value     | 
| nsm_user             | 
| nsm_user_preference  | 
| nsm_user_role        | 
+----------------------+
11 rows in set (0.00 sec)

Configuration d’Apache et de PHP

Nous devons désactiver les « magic_quotes_gpc » dans la configuration de PHP, nous éditons donc les 2 fichiers suivants :

vi /etc/php5/apache2/php.ini
vi /etc/php5/cli/php.ini

Dans ces fichiers, nous cherchons la ligne suivante « magic_quotes_gpc = On » et on remplace la valeur « On » par « Off ».

Il ne nous reste plus qu’à charger le module d’url_rewriting d’Apache et à redémarrer Apache.

a2enmod rewrite #charge le module d'url_rewriting
/etc/init.d/apache2 restart

Enfin, nous pouvons nous connecter à l’adresse suivante http://mon-serveur/icinga-web avec le compte « root » et comme mot de passe « password » et vous arriverez sur cet écran :

Articles similaires :

2 thoughts to “Installation d’Icinga et d’Icinga-web en version 1.2”

  1. Bonjour,j ‘ai un petit probleme lorsque je lance icinga-web dans le navigateur il m’affiche:
    A critical exception occured!
    Uncaught Doctrine_Connection_Exception thrown:

    PDO Connection Error: SQLSTATE[28000] [1045] Access denied for user ‘icinga’@’localhost’ (using password: YES)

    Stacktrace:

    #0 /usr/local/icinga-web/lib/doctrine/lib/Doctrine/Connection/Mysql.php(101): Doctrine_Connection->connect()
    #1 /usr/local/icinga-web/lib/doctrine/lib/Doctrine/Connection.php(1009): Doctrine_Connection_Mysql->connect()
    #2 /usr/local/icinga-web/lib/doctrine/lib/Doctrine/Query/Abstract.php(976): Doctrine_Connection->execute(‘SELECT n.sessio…’, Array)
    #3 /usr/local/icinga-web/lib/doctrine/lib/Doctrine/Query/Abstract.php(1026): Doctrine_Query_Abstract->_execute(Array)
    #4 /usr/local/icinga-web/app/modules/AppKit/lib/storage/AppKitDoctrineSessionStorage.class.php(108): Doctrine_Query_Abstract->execute()
    #5 [internal function]: AppKitDoctrineSessionStorage->sessionRead(‘ttk25tutihic8gf…’)
    #6 /usr/local/icinga-web/lib/agavi/src/storage/AgaviSessionStorage.class.php(132): session_start()
    #7 /usr/local/icinga-web/app/cache/config/factories.xml_development_web_2162cbc77fe71e15b8bfa2c719bb3ca8113cda5a.php(77): AgaviSessionStorage->startup()
    #8 /usr/local/icinga-web/app/cache/config/compile.xml_development__033d402eaeb08f42e4e3d5f8474e444805e2c7c6.php(384): include(‘/usr/local/icin…’)
    #9 /usr/local/icinga-web/app/cache/config/compile.xml_development__033d402eaeb08f42e4e3d5f8474e444805e2c7c6.php(3550): AgaviContext->initialize()
    #10 /usr/local/icinga-web/app/cache/config/compile.xml_development__033d402eaeb08f42e4e3d5f8474e444805e2c7c6.php(370): AppKitAgaviContext->initialize()
    #11 /usr/local/icinga-web/pub/index.php(44): AgaviContext::getInstance(‘web’)
    #12 {main}

    1. Bonjour,

      Tu as une erreur au niveau des droits de ta base MySQL pour ton utilisateur icinga.

      Relances les commandes suivantes dans MySQL :

      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 ;

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.