nov 27

Ayant voulu marquer mon indépendance vis à vis des paquets Débian et Ubuntu, j’ai décidé de prendre les versions tarball et de les compiler comme un grand.

Installation de nagios

$ adduser nagios

  • création du répertoire d’installation de nagios

$ mkdir /usr/local/nagios
$ chown nagios:nagios /usr/local/nagios

  • trouver le user apache

www-data pour les Débien et Ubuntu sinon tapez :

$ grep “^User” /etc/apache2/apache2.conf

  • création du groupe de commande

$ /usr/sbin/groupadd nagcmd

On ajoute à ce groupe les users www-data et nagios

$ /usr/sbin/usermod -G nagcmd www-data
$ /usr/sbin/usermod -G nagcmd nagios

  • installation via script

$ tar xzf nagios-version.tar.gz
$ cd nagios-version

$ ./configure –prefix=/usr/local/nagios –with-cgiurl=/nagios/cgi-bin –with-htmurl=/nagios/ –with-nagios-user=nagios –with-nagios-group=nagios –with-command-group=nagcmd

./configure –prefix=prefix –with-cgiurl=cgiurl –with-htmurl=htmurl –with-nagios-user=someuser –with-nagios-group=somegroup –with-command-group=cmdgroup

  • prefix : répertoire d’installation (par défaut /usr/local/nagios)
  • cgiurl : répertoire pour les accès CGI ( par défaut /nagios/cgi-bin). NE PAS METTRE DE / à la fin de l’url
  • htmurl : chemin pour accéder à l’interface d’administration WEB (par défaut /nagios/)
  • someuser : nom du user nagios (par défaut nagios)
  • somegroup : nom du groupe nagios (par défaut nagios)
  • cmdgroup : nom du groupe with the name of the group running the web server (par défault nagios, dans l’exemple actuel nagcmd).

Si tout se passe bien, vous devriez obtenir un message comme :

*** Configuration summary for nagios 2.9 04-10-2007 ***:

General Options:
————————-
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagcmd
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Lock file: ${prefix}/var/nagios.lock
Init directory: /etc/init.d
Host OS: linux-gnu

Web Interface Options:
————————
HTML URL: http://localhost/nagios//
CGI URL: http://localhost/nagios/cgi-bin/

  • $ make all

qui donne comme résultat

make install
- This installs the main program, CGIs, and HTML files

make install-init
- This installs the init script in /etc/init.d

make install-commandmode
- This installs and configures permissions on the
directory for holding the external command file

make install-config
- This installs *SAMPLE* config files in /usr/local/nagios/etc
You’ll have to modify these sample files before you can
use Nagios. Read the HTML documentation for more info
on doing this. Pay particular attention to the docs on
object configuration files, as they determine what/how
things get monitored!

  • $ make install

pour installer nagios, CGI et fichiers HTML

  • $ make install-init

pour installer script de démarrage dans /etc/init.d/

  • $ make install-commandmode

pour installer et configurer les autorisatiosn sur les commandes externes de nagios

  • $ make install-config

pour installer les fichiers de configuration.

Installation de nagios-plugins

voir mon précédent message convernant le plugins NRPE.

Configuration du serveur HTTP

Modification d’Apache

Il faut aller modifier le fichier de configuration d’apache (dans mon cas /etc/apache2/apache2.conf) et y ajouter les éléments suivants :

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Alias /nagios /usr/local/nagios/share


Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Création de l’accès sécurisé

Comme on a protégé l’accès à l’interface HTPP via un fichier .htaccess, il va falloir créer des users (stockés dans un fichier /usr/local/nagios/etc/htpasswd.users) autorisés à y accéder.

$ htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

pour créer le fichier /usr/local/nagios/etc/htpasswd.users qui sera utilisé pour l’authentification de notre fameux user nagiosadmin.

On relance apache et on prie fort !!
Si on tape sur un navigateur http://localhost/nagios/, on devrait arriver sur la fenêtre d’accès à Nagios.

Configuration de Nagios

Les fichiers de nagios sont installés par défaut dans /usr/local/nagios/.
Le répertoire etc/ contient les fichiers de configuration de nagios essentiels.
Si on a demandé l’installation des fichiers de configuration, on trouvera alors dans /usr/local/nagios/etc/ les fichiers de configuration avec l’extension ‘.sample’…..

Test de la configuration de nagios

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

Lancer le daemon nagios

$ /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

nov 27

NRPE est un mécanisme qui permet d’éxécuter des commandes locales sur la machine dite “monitorée” et d’envoyer ces résultats à NAGIOS.
Pour cela, il faut installer sur le poste à monitorer le “serveur” NRPE ainsi que les plugins Nagios qui vont s’éxécuter en local puis être transmis via TCP à la machine NAGIOS.

Installation sur la machine à monitorer

Comme j’ai eu pas mal de soucis avec les paquets debian, j’ai décidé de récupérer les sources et de les compiler.

Il faut en fait installer deux composants :

  • nrpe
  • nagios plugins

En préalable, il est judicieux de créer un user et groupe nagios.

Installation nagios plugins

Aller sur le site http://www.nagios.org/download/ et récupérer la dernière version de nagios-plugins. La dernière à ce jour est la 1.4.9.

on décompacte la bête via la commande :

$ tar xzf nagios-plugins-1.4.6.tar.gz
$ cd nagios-plugins-1.4.6
$ ./configure
$ make
$ make install

Normalement, si tout se passe bien, les plugins du type check_smtp sont installés…
Ils sont installés dans /usr/lib/nagios/plugins/.
Il faut modifier les autorisations comme sivant :

chown nagios:nagios /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios/libexec/

Installation NRPE

On récupère les sources de NRPE (2.8.1).
On décompacte tjs de la même façon :

$ tar xzf nrpe-2.8.1.tar.gz

$cd nrpe-2.8.1
$ ./configure –disable-ssl pour désactiver le support ssl

Ca doit donner un truc comme :

*** Configuration summary for nrpe 2.8.1 05-10-2007 ***:

General Options:
————————-
NRPE port: 5666
NRPE user: nagios
NRPE group: nagios
Nagios user: nagios
Nagios group: nagios

Ensuite,

$ make all
$ make install-plugin
$ make install-daemon
$ make install-daemon-config

Par defaut, nrpe se marrie bien avec inetd ou xinetd.
Nous allons donc installer Xinetd.
Installation de Xinetd

$ apt-get install xinetd

Configuration de xinetd pour nrpe

Les fichiers de configuration se trouve dans /etc/xinetd.d/.
On va donc y créer un fichier nommé nrpe qui sera comme suivant :

#default: on
# description: NRPE
service nrpe
{
flags = REUSE
socket_type = stream
wait = no
port = <port TCP nrpe>
user = nagios
group = nagios
server = <chemin d’acces à nrpe>
server_args = -c <chemin du fixhier de coinfig nrpe> -n –inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 <ip_nagios_machine>
}

avec par exemple :

  • <port TCP nrpe> : par défaut, 5666…Il est de bon ton de prendre un autre numéro de port surtout si on n’a pas active le support ssl
  • <chemin d’acces à nrpe> : /usr/local/nagios/bin/nrpe
  • <chemin du fixhier de coinfig nrpe>: /etc/nagios/nrpe.cfg
  • <ip_nagios_machine> : ip de la machine hebergeant Nagios

On relance Xinetd via :

/etc/init.d/xinetd restart

installation directe dans /etc/init.d/

On peut se passer de Xinetd pour lancer automatiquement au démarrage de la machine le fameux nrpe.
Pour cela, il faut créer un fichier, par exemple nrpe dans le répertoire /etc/init.d/.
Les droits dont du genre 755 avec comme user/groupe : root/root

Ce fichier ressemble à

#! /bin/sh
#

### BEGIN INIT INFO
# Provides: nagios-nrpe-server
# Required-Start: $local_fs $remote_fs $syslog $named $network $time
# Required-Stop: $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop the Nagios remote plugin execution daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nagios/bin/nrpe
NAME=nrpe
DESC=nrpe
CONFIG=/usr/local/nagios/etc/nrpe.cfg

test -x $DAEMON || exit 0

if ! [ -x "/lib/lsb/init-functions" ]; then
. /lib/lsb/init-functions
else
echo “E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed”
exit 1
fi

# Include nagios-nrpe defaults if available
if [ -f /etc/default/nagios-nrpe-server ] ; then
. /etc/default/nagios-nrpe-server
fi
# we also used to include this file, so if it’s there
# we include it as well
if [ -f /etc/default/nagios-nrpe ]; then
. /etc/default/nagios-nrpe
fi
if [ "$NICENESS" ]; then NICENESS=”-n $NICENESS”; fi

set -e

case “$1″ in
start)
log_daemon_msg “Starting $DESC” “$NAME”
start_daemon $NICENESS $DAEMON -n -c $CONFIG -d $DAEMON_OPTS
log_end_msg $?
;;
stop)
log_daemon_msg “Stopping $DESC” “$NAME”
start-stop-daemon –stop –quiet –oknodo –exec $DAEMON
log_end_msg $?
;;
reload|force-reload)
log_daemon_msg “Reloading $DESC configuration files” “$NAME”
start-stop-daemon –stop –signal HUP –quiet –exec $DAEMON
log_end_msg $?
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
log_failure_msg “Usage: $N {start|stop|restart|reload|force-reload}”
exit 1
;;
esac

exit 0

Il suffit ensuite, après avoir testé le script /etc/init.d/nrpe, automatiser son démarrage avec celui de la machine.

update-rc.d nrpe defaults 99

defaults utilise les paramètres par défaut, et 99 sert à indiquer que ce service démarrera après tous les autres……

Test du fonctionnement en local

On doit aussi ajouter le service nrpe/tcp dans le fichier /etc/services.
On edite ce fichier et on y ajoute nrpe

nrpe 5666/tcp

On verifie que le daemon NRPE tourne en regardant le résultat de la commande

$ netstat -at | grep nrpe

Ca doit donner :

tcp 0 0 *:nrpe *:* LISTEN

Ca montre que le daemon est bien en action !!

Puisqu’on a installer le fameux chek_nrpe (issue de la ligne de commande make install-plugin) pour tester la configuration en local, on va lancer :

$ /usr/local/nagios/libexec/check_nrpe -H localhost

qui doit nous retourner du genre

NRPE v2.8.1

Si tout ca est bon, alors, il ne reste plus qu’à autoriser le port tcp/5666 entre les deux machines si présence de firewall : la machine nagios et le machine à monitorée (celle sur laquelle on a installer less éléments précédents).

Configuration de nrpe.local

Il se trouve chez moi dans /etc/nagios/nrpe.cfg

# PID FILE
pid_file=/var/run/nrpe.pid

# PORT NUMBER
server_port=5666

# SERVER ADDRESS
server_address=<ip machin nagios>

# NRPE USER
nrpe_user=nagios
nrpe_group=nagios

# ALLOWED HOST ADDRESSES
allowed_hosts=127.0.0.1,<ip machine nagios>

# Values: 0=do not allow arguments, 1=allow command arguments
dont_blame_nrpe=0

# DEBUGGING OPTION
# Values: 0=debugging off, 1=debugging on
debug=1

command_timeout=60

# COMMAND DEFINITIONS
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_disk1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda1
command[check_disk2]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hdb1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200

# local configuration:
# if you’d prefer, you can instead place directives here
include=/etc/nagios/nrpe_local.cfg

C’est dans la zone #COMMAND DEFINITIONS que l’on va pouvoir mettre nos petites fonctions comme ci dessous si l’on veut vérifier par exemple les mises à jour disponibles :

command[check_apt]=/usr/lib/nagios/plugins/check_apt

Configuration de la machine Nagios

Sur la machine Nagios, comme on suppose que celui-ci est deja installé, il ne nous reste qu’à installer le fameux check_nrpe qui se trouve dans les sources de nrpe comme décrit plus haut.

$ tar xzf nrpe-2.8.1.tar.gz
$ cd nrpe-2.8.1
$ ./configure
$ make all
$ make install-plugin

On teste l’installation en local via la commande :

$ /usr/local/nagios/libexec/check_nrpe -H localhost

Maintenant, on teste la connexion avec la machine à monitorer :

$ /usr/lib/nagios/plugins/check_nrpe -H -n -p

-c -t 100

__Remarque :__
* le “-n” correspond à la non activation des supports SSL.
* le ‘t 100′ est le temps de temporisation (par defaut, 10).

Si tout marche alors, il ne reste plus qu’à créer les commandes spécifiques pour que la machine à monitorer par Nagios.

Les fichiers de configuration pour Nagios 2 sur ma bécane sont dans /etc/nagios2/
Le fichier nagios.cfg contient notamment une entrée pour cfg_dir qui spécifie le répertoire des fichiers de configuration.

exemple : cfg_dir=/etc/nagios2/maconfamoi.

C’est dans ce répertoire que je vais coller les fichiers spécifiques à ma machine à monitorer.