Blog

Installation de Icinga + Incinga-web + idoutils sur une debian squeeze avec virtualmin

Écrit le 29 12 2012 par Kévin MET _

Un titre looooooooong pour quelque chose de simple : L'installation de Inciga avec les modules idoutils et inciga-web en utilisant la création d'un sous domaine avec virtualmin. En gros, on va créer un sous domaine avec virtualmin, on va éditer le vhost pour que la config fonctionne bien avec FastCGI et suexec qui sont des options par défauts dans virtualmin.

A là fin, on aura 2 vhosts, un avec icinga classique et l'autre avec icinga new web.

Pour commencer, on va créer un groupe icinga :


groupadd -g 6000 icinga

Ensuite l'user qui aura comme home le dossier ou l'on va installer icinga :


useradd -u 6000 -g icinga -d /usr/local/icinga -c "Icinga User" icinga

On lui attribue un password :


passwd icinga

On fait un groupe icinga-cmd et on l'attribue à icinga :


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

On va commencer la compil. Déja on télécharge la dernière version de icinga-core avec git :


cd /usr/src/
git clone git://git.icinga.org/icinga-core.git

On télécharge le reste du merdier :


cd icinga-core/
git submodule init
git submodule update

On lance le ./configure avec les options qui vont bien :


./configure --with-nagios-user=icinga --with-nagios-group=icinga --with-command-user=icinga --with-command-group=icinga-cmd --prefix=/usr/local/icinga --enable-idoutils --enable-ssl

Et on envoie la compile et l'install :


make all
make install
make install-init
make install-commandmode
make install-idoutils
make install-config
make install-webconf
make install-api

Puis on installe les plugins nagios par défaut histoire d'avoir un peu quelque chose à utiliser pour nos sondes :


cd /tmp
wget http://downloads.sourceforge.net/project/nagiosplug/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz
tar xvf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
./configure --prefix=/usr/local/icinga --with-cgiurl=/icinga/cgi-bin --with-htmurl=/icinga --with-nagios-user=icinga --with-nagios-group=icinga
make
make install

On bouge les fichiers de config de idoutils :


mv /usr/local/icinga/etc/idomod.cfg-sample /usr/local/icinga/etc/idomod.cfg
mv /usr/local/icinga/etc/ido2db.cfg-sample /usr/local/icinga/etc/ido2db.cfg

On édite ido2db.cfg et on vérifie que les paramètres suivant sont comme ceci :

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

use_ssl=1
socket_type=tcp
db_servertype=mysql
db_port=3306
db_user=icinga
db_pass=icinga

On édite idomod.cfg et on vérifie que les paramètres suivant sont comme ceci :


vim /usr/local/icinga/etc/idomod.cfg

use_ssl=1
output_type=tcpsocket
output=127.0.0.1

Éditez le fichier de configuration principal d'Icinga, recherchez le champ "broker_module" et décommentez l'exemple:


vim /usr/local/icinga/etc/icinga.cfg

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

Éditez le fichier de configuration des modules pour IDO et décommentez les lignes suivantes:


vim /usr/local/icinga/etc/modules/idoutils.cfg

define module{
	module_name		ido_mod
	path			/usr/local/icinga/bin/idomod.o
	module_type		neb
	args			config_file=/usr/local/icinga/etc/idomod.cfg
}

Ensuite on va créer la base de données pour icinga :


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';
mysql> FLUSH PRIVILEGES;
mysql> quit

Et on importe le schéma de la base de données dans la base qu'on vient de créer :


mysql -u root -p icinga < /usr/src/icinga-core/base/module/idoutils/db/mysql/mysql.sql

On se fait la compilation de l'interface web classique :


cd /usr/src/icinga-core
make cgis
make install-cgis
make install-html

Création de l'utilisateur de l'interface web d'Icinga :


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

Redémarrage des services pour une relecture des fichiers de configuration :


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

Activation de Icinga au démarrage de la machine :


update-rc.d icinga defaults

Ensuite on supprime le fichier de conf apache que vient d'ajouter icinga :


rm /etc/apache2/conf.d/icinga.conf

On se connecte sur virtualmin et on fait deux sous-domaines comme on a l'habitude de le faire. Pour la suite du tutoriel, on va imaginer que le domaine principale est domaine.fr et que icinga classique est sur icinga.domaine.fr et icinga new web est sur icinga-web.domaine.fr.

On édite notre vhost pour qu'il ressemble à ceci : (évidemment il faut remplacer 192.168.1.1 par l'IP qui correspond à votre entrée DNS)

vim /etc/apache2/sites-available/icinga.domaine.fr


	ServerName icinga.domaine.fr
	DocumentRoot /usr/local/icinga/share/
	ErrorLog /var/log/virtualmin/icinga.domaine.fr_error_log
	CustomLog /var/log/virtualmin/icinga.domaine.fr_access_log combined
	DirectoryIndex index.html
	ScriptAlias /icinga/cgi-bin "/usr/local/icinga/sbin"
	Alias /icinga/stylesheets "/usr/local/icinga/share/stylesheets"
	Alias /icinga/images "/usr/local/icinga/share/images"
	Alias /icinga/js "/usr/local/icinga/share/js"
	
		Options +ExecCGI
		AllowOverride None
		Order allow,deny
		Allow from all
		AuthName "Icinga Access"
		AuthType Basic
		AuthUserFile /usr/local/icinga/etc/htpasswd.users
		Require valid-user
	
	
		Options None
		AllowOverride All
		Order allow,deny
		Allow from all
		AuthName "Icinga Access"
		AuthType Basic
		AuthUserFile /usr/local/icinga/etc/htpasswd.users
		Require valid-user
	

Ensuite on relance apache :

/etc/init.d/apache2 restart

Logiquement vous devriez avoir accès à icinga classique en utilisant votre nouveau vhost : http://icinga.domain.fr

Ce domaine va être utile pour configurer un client icinga sous android comme aNag par exemple (je l'utilise, il est bien sympa).

Maintenant, on va voir comment installer la partie icinga-web pour superviser ses serveurs en ayant la grosse classe 😉

On commence par télécharger icinga-web avec git :


cd /usr/src/
git clone git://git.icinga.org/icinga-web.git
cd icinga-web

Et on va lancer le ./configure

Dans l'exemple suivant on va imaginer que l'user qui fait tourner apache en suexec est domaine (domaine.fr) et que l'id de son groupe est 1000.


./configure --with-db-type=mysql --with-db-host=localhost --with-db-port=3306 --with-db-name=icinga_web --with-db-user=icinga_web --with-bin-user=icinga --with-bin-group=icinga --with-web-user=domaine --with-web-group=domaine

Et on lance l'installation :


make install
make install-apache-config

On vire le fichier de conf apache créer par icinga-web

rm -rf /etc/apache2/conf.d/icinga-web.conf

On continue l'installation :


make install-javascript
make install-done

Il faut ensuite créer la base de données :

mysql -u root -p

mysql>CREATE DATABASE icinga_web;
mysql>GRANT USAGE ON icinga_web.* TO 'icinga_web'@'localhost' IDENTIFIED BY 'icinga_web' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
mysql>GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX ON icinga_web.* TO 'icinga_web'@'localhost';
mysql>FLUSH PRIVILEGES;

On envoie le schéma dans la base


make db-initialize

On change le mot de passe du premier user (au début, il faut utiliser root, vous pourrez le supprimer par la suite)


make icinga-reset-password

Il ne reste plus qu'a modifier notre vhost pour qu'il ressemble à celui-ci :


vim /etc/apache2/sites-available/icinga-web.domaine.fr


	SuexecUserGroup "#1000" "#1000"
	ServerName icinga-web.domaine.fr
	AliasMatch /icinga-web/modules/([A-Za-z0-9]*)/resources/styles/([A-Za-z0-9]*.css)$ /usr/local/icinga-web/app/modules/$1/pub/styles/$2
	AliasMatch /icinga-web/modules/([A-Za-z0-9]*)/resources/images/([A-Za-z_-0-9]*.(png|gif|jpg))$ /usr/local/icinga-web/app/modules/$1/pub/images/$2
	Alias /icinga-web/js/ext3 /usr/local/icinga-web/lib/ext3
	Alias /icinga-web /usr/local/icinga-web/pub
	ErrorLog /var/log/virtualmin/icinga-web.domaine.fr_error_log
	CustomLog /var/log/virtualmin/icinga-web.domaine.fr_access_log combined
	DocumentRoot  /usr/local/icinga-web/pub
	DirectoryIndex index.php
	
		DirectoryIndex index.php
		Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
		Order allow,deny
		allow from all
		AllowOverride All
		AddHandler fcgid-script .php
		FCGIWrapper /home/domaine/domains/icinga-web.domaine.fr/fcgi-bin/php5.fcgi .php
	
	
		Order allow,deny
		Allow from all
	
	
		Order allow,deny
		Allow from all
	
	
		Order allow,deny
		Allow from all
	
	FileETag none
	FcgidMaxRequestLen 1073741824

Et voilà, en vous rendant sur http://icinga-web.domaine.fr, vous avez un icinga super beau, super propre. Le login à utiliser est donc root avec le mot de passe que vous avez créé.

Il ne reste plus qu'à configurer tout ça pour superviser vos services.

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.