Installation de Nagios sur FreeBSD

Publié le 16 décembre 2008 par Nicolargo

FreeBSD étant, à mon humble avis, le meilleur “operating system” pour les fonctions réseaux, il était normal qu’un blog comme le mien s’intéresse à l’installation de Nagios, l’outil de supervision open-source, sur ce système.

Le but de ce tutoriel est d’installer Nagios version 3.0.6 sur un serveur FreeBSD 7.0. Je pars sur l’hypothèse ou le lecteur a des connaissances de bases sur FreeBSD.

Avant de commencer…

On s’assure que notre FreeBSD est à jour au niveau de l’arbre des ports (”port tree”).

portsnap fetch
portsnap update

On installe les pre-requis

Avant de se lancer dans l’installation de Nagios, un certain nombre de logiciels doivent être présent sur votre système.

Serveur et client - MySQL

Le serveur MySQL hébergera la base de donnée ou Nagios stockera les informations sur les réseaux supervisés.

cd /usr/ports/databases/mysql50-server
make
make install
make clean

cd /usr/ports/databases/mysql50-client
make
make install
make clean

cd /usr/ports/databases/mysql50-scripts
make
make install
make clean

On édite ensuite le fichier /etc/rc.conf pour y ajouter la ligne suivante:

mysql_enable=”YES”

Puis on lance le daemon:

/usr/local/etc/rc.d/mysql-server start

Enfin on effectue les configurations de base:

mysqladmin -u root password ‘votremotdepasse’

mysql -u root -p

mysql> DROP DATABASE test;

mysql> DELETE FROM mysql.user WHERE user = ”;

mysql> FLUSH PRIVILEGES;

Serveur Web - Lighttpd

J’ai choisi d’utiliser Lighttpd en lieu et place d’Apache pour hébérger l’interface Web de Nagios. En effet, ce seveur est moins gourmant et tout aussi rapide.

cd /usr/ports/www/lighttpd
make
make install
make clean

Pour une installation plus détaillée (avec support PHP), je vous conseille la lecture de ce billet (en Anglais).

On édite ensuite le fichier /etc/rc.conf pour y ajouter la ligne suivante:

lighttpd_enable=”YES”

On configure le serveur:

vi /usr/local/etc/lighttpd.conf

server.document-root   = “/usr/local/www/

# Nagios
alias.url =   (
“/nagios/cgi-bin” => “/usr/local/www/nagios/cgi-bin”,
“/nagios” => “/usr/local/www/nagios”
)

$HTTP["url"] =~ “^/nagios/cgi-bin” {
cgi.assign = ( “” => “” )
}

$HTTP["url"] =~ "^/nagios/cgi-bin" {
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/usr/local/etc/nagios/passwd"
        auth.require = ( "" => (
                "method" => "basic",
                "realm" => "nagios",
                "require" => "user=nagiosadmin"
                )
        )
}

$HTTP["url"] =~ "^/nagios" {
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/usr/local/etc/nagios/passwd"
        auth.require = ( "" => (
                "method" => "basic",
                "realm" => "nagios",
                "require" => "user=nagiosadmin"
                )
        )
}

Avant de lancer le serveur il faut créer le fichier de log avec les bon droits:

touch /var/log/lighttpd.error.log
chown www:www touch /var/log/lighttpd.error.log

touch /var/log/lighttpd.access.log
chown www:www /var/log/lighttpd.access.log

Puis on lance le daemon:

/usr/local/etc/rc.d/lighttpd start

La configuration de Lighttpd est la suivante par défaut:

  • Fichier de configuration: /usr/local/etc/lighttpd.conf
  • Emplacement par défaut du site (”document root”) : /usr/local/www/data/
  • Utilisateur et groupe avec lequel Lighttpd est lancé: www

Installation de Nagios à partir des ports

On doit dans un premier temps se rendre dans le répertoire /usr/port/net-mgmt/nagios. On vérifie la version que l’on va installer en consultant le fichier distinfo:

cd /usr/port/net-mgmt/nagios
cat distinfo
MD5 (nagios-3.0.6.tar.gz) = 900e3f4164f4b2a18485420eeaefe812
SHA256 (nagios-3.0.6.tar.gz) = bedeb2c1ffbf7525ec19ac84a66bad60a19d2b0544cbf050a53bfc363c09bb22
SIZE (nagios-3.0.6.tar.gz) = 2735504

On lance ensuite l’installation du serveur et des plugins Nagios:

cd /usr/port/net-mgmt/nagios
make WITH_MYSQL=”YES”
> EMBEDDED_PERL = X
make install
make clean

cd /usr/port/net-mgmt/nagios-plugins
make
make install

On édite ensuite le fichier /etc/rc.conf pour y ajouter la ligne suivante:

nagios_enable=”YES”

La configuration initiale est la suivante:

  • Script de démarrage du service Nagios: /usr/local/etc/rc.d/nagios
  • Localisation du serveur (executable): /usr/local/bin/nagios
  • Répertoire de configuration: /usr/local/etc/nagios
  • Répertoire des plugins: /usr/local/libexec/nagios
  • Répertoire racine pour le service Web: /usr/local/www/nagios

Avant de lancer le serveur, il faut aller dans le répertoire de configuration et configurer votre serveur en fonction de vos besoins. Vous pouvez lire le billet suivant pour vous aider.

Une fois la configuration faite et validée par la commande suivante:

/usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg

Total Warnings: 0
Total Errors: 0

Il faut ensuite créer le fichier passwd préhalablement configuré dans Lighttpd:

cd /usr/ports/www/rubygem-htauth
make
make install
make clean

htpasswd-ruby -c /usr/local/etc/nagios/passwd admin

Enfin on lance le daemon Nagios:

/usr/local/etc/rc.d/nagios start

Vous pouvez tester le tout en utilisant un navigateur Web et en saisissant l’URL: http://<adresseIPduserveur>/nagios/

Et voili, c’est beau, c’est stable, c’est simple, c’est BSD !!!

Quelques commandes pour finir

Vérifier la syntaxe des fichiers de configurations:

/usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg

Arrêter le daemon Nagios:

/usr/local/etc/rc.d/nagios start

Relancer le daemon Nagios:

/usr/local/etc/rc.d/nagios restart