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 :
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}
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 ;