Canalblog
Editer la page Suivre ce blog Administration + Créer mon blog
Des guides, des tutos

Nagios

J'ai dans ma société une pelleté de serveurs, de services, de switchs et autres composants en tout genre.
Pour surveiller le tout, j'ai d'abord utilisé FAN, une distribution avec tout un tas de choses pré-installées, relativement simple à mettre en place.
Ma machine FAN était une VM en GSX, sur une machine physique un peu vieillotte. Du coup, je recevais bon nombre de fausses alertes, dues à la saturation de la VM.
J'ai monté une nouvelle VM sur mon cluster HyperV, qui a beaucoup plus de coffre que ma vieille machine GSX.
J'en ai profité pour installer Nagios "seul", sans tous les autres éléments placés autour, histoire de voir ce que ça donne.
Le résultat est plutôt sympa :)

Pour faire mon tuto entier, je me suis servi des liens ci-dessous :
Utiliser et installer Nagios 4.0.x
Doc Nagios Core
Blog de Nico Largo
The Neighborhood Watch's Blog

Je les ai trouvé incomplets pour MA situation, c'est pourquoi j'ai concaténé le tout pour MON installation. Cela ne veut en aucun cas dire que leurs tutos sont mauvais !
Je suis parti d'un Ubuntu Server en 13.10 64x.

On commence par installer les prérequis :

Préparer un ubuntu propre (ubuntu, openssh-server, ntpdate, apt-get update et upgrade, etc...)

apt-get install apache2
apt-get install apache2-utils
apt-get install libapache2-mod-php5
apt-get install build-essential
apt-get install libgd2-xpm-dev
apt-get install postfix
apt-get install daemon
apt-get install mailutils


Pendant l'install, choisir "Site internet".
En nom de domaine, mettre "mon_domaine.local"

apt-get update
apt-get upgrade

 

Ensuite on crée les utilisateurs et les groupes nécessaires au fonctionnement de Nagios :

Créer un utilisateur

/usr/sbin/useradd -m -s /bin/bash nagios

Lui donner un mot de passe
Perso j'ai mis nagios. C'est ce qu'on doit mettre ensuite dans les clients NSclient++ sur les machines windows à sniffer, et ça apparait en clair.
Donc autant éviter de mettre un mot de passe ultra-confidentiel qui sert par exemple à votre compte admin principal :p

passwd nagios


On crée les groupes qui vont bien et on y rattache nos utilisateurs

/usr/sbin/groupadd nagios
/usr/sbin/usermod -G nagios nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd www-data

 

Installation de Nagios :

Télécharger et copier les sources sur la machine sur http://www.nagios.org/download (Nagios ET Pluggin)
puis "dé-trarer" le fichier :

tar -xzvf nom_du_fichier_téléchargé.tar.gz


On commence par Nagios, CD nagios-xxx

./configure --with-command-group=nagcmd

make all
make install
make install-init
make install-config
make install-commandmode

make install-webconf

-> risque de donner une erreur de type "impossible de créer le fichier standard «/etc/httpd/conf.d/nagios.conf»: Aucun fichier ou dossier de ce type"
Pour contourner, j'ai créé un dossier /etc/httpd/conf.d dans lequel le make install-webconf est venu déposer son #nagios.conf.
Une fois fait, il faut déplacer le nagios.conf au bon endroit : /etc/apache2/conf-available, puis faire le lien #dans conf-enabled
Puis détruire /etc/httpd/conf.d

Dans mod-enabled, faire un lien vers les 3 fichiers CGI présents dans mod-available

Ici je recrée un autre User nagios, qui lui servira à attaquer l'interface.
De préférence, mettre un mdp un peu plus "coton" que le précédent..

/usr/sbin/useradd -m -s /bin/bash nagiosadmin
passwd nagiosadmin
/usr/sbin/usermod -a -G nagcmd nagiosadmin

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
/etc/init.d/apache2 reload


Ensuite, on va compiler le pluggin (se placer dans le bon répertoire)

./configure --with-nagios-user=nagios --with-nagios-group=nagios

make
make install


Démarrage auto de Nagios :

ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios


Vérifier qu'il n'y ait pas d'erreur de conf Nagios :

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


Résolution bug Ubuntu :
Depuis la mise à jour de Nagios vers la version 4.0 (et la version corrective 4.0.1) un bug plutôt gênant peut impacter les machines Debian et Ubuntu.
En effet le script de démarrage de Nagios qui se trouve dans le fichier /etc/init.d/nagios fait un appel à un ensemble de fonctions génériques sous /etc/rc.d/init.d/functions.
Malheureusement, ce fichier n'existe pas sous ce nom sur les dernières versions de Debian/Ubuntu mais il est disponible sous /lib/lsb/init-functions.

sed -i 's/^\.\ \/etc\/rc.d\/init.d\/functions$/\.\ \/lib\/lsb\/init-functions/g' /etc/init.d/nagios
sed -i 's/status\ /status_of_proc\ /g' /etc/init.d/nagios
sed -i 's/daemon\ --user=\$user\ \$exec\ -ud\ \$config/daemon\ --user=\$user\ --\ \$exec\ -d\ \$config/g' /etc/init.d/nagios
sed -i 's/\/var\/lock\/subsys\/\$prog/\/var\/lock\/\$prog/g' /etc/init.d/nagios
sed -i 's/\/sbin\/service\ nagios\ configtest/\/usr\/sbin\/service\ nagios\ configtest/g' /etc/init.d/nagios
sed -i 's/\"\ \=\=\ \"/\"\ \=\ \"/g' /etc/init.d/nagios
sed -i 's/\#\#killproc\ \-p\ \$\{pidfile\}\ \-d\ 10/killproc\ \-p \$\{pidfile\}/g' /etc/init.d/nagios
sed -i 's/runuser/su/g' /etc/init.d/nagios

service nagios start
Installation de Postfix :

On indique par quel serveur SMTP on passe (chez moi, un relaying interne)

postconf -e 'relayhost = 172.16.0.67'


nécessite une authentification ? Rajouter ces lignes

postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options ='


Qui va s’authentifier

echo "172.16.0.67 nagios@mon_domaine.local:nagios" >> /etc/postfix/sasl_passwd


Avoir les droits root sur ces 2 fichiers

chown root:root /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd


Compilation du fichier mdp

postmap /etc/postfix/sasl_passwd


Toujours dans le cadre de l’authentification

echo "nagios nagios@mon_domaine.local" > /etc/postfix/canonical
echo "canonical_maps = hash:/etc/postfix/canonical" >> /etc/postfix/main.cf


On compile encore

postmap /etc/postfix/canonical


On relance le service postfix

/etc/init.d/postfix restart


Pour tester, faire :

sendmail monadresse@mon_domaine.com


Taper le contenu du mail, puis terminer avec CTRL-D
A l'avenir, surveiller /var/mail/username, potentiellement à purger.
Dans commands.cfg, changer les commandes "notify-host-by-email" et "notify-service-by-email" en remplaçant "/bin/mail" par "/usr/bin/mailx"

Pour faire marcher NSClient++ sur une machine Windows :

Regardez ensuite le fichier suivant :

/usr/local/nagios/etc/objects/commands.cfg


Modifier la commande Check_nt en ajoutant "-s password" (ou password = votre mot de passe)

define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ -s PASSWORD
}


ATTENTION : le mdp apparaitra en clair dans le fichier ini de NSClient++ sur la machine où il sera installé !

Pour Checker l'espace disque d'une machine linux distante (autre que localhost) :

Installer le plugin sur le serveur Nagios :

apt-get install nagios-nrpe-plugin

Attention, il sera demandé le mdp d'accès à l'interface web de Nagios

Rajouter ensuite dans "command.cfg" ceci :

######
# NRPE
######
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}



ATTENTION !!!
Vérifier où le plugin a été installé, et où se trouve vos plugin Nagios !
Dans mon cas, les plugins sont installés ici :
/usr/local/nagios/libexec
et le plugin NRPE est parti s'installer ici :
/usr/lib/nagios/plugins
Je ne l'ai pas bougé ni touché, mais j'ai créé un lien symbolique dans /usr/local/nagios/libexec qui pointe vers le check_nrpe de /usr/lib/nagios/plugins, et le tour est joué.
(sous winscp, clic droit, nouveau lien)

Puis rebootez le service Nagios

Sur le Pc client à surveiller :

apt-get install nagios-nrpe-server
apt-get install nagios-plugins



Puis éditer le fichier /etc/nagios/nrpe.cfg pour modifier la ligne suivante:

allowed_hosts = Mettre ici l'adresse IP de votre serveur Nagios


ATTENTION au disque à surveiller :
Faire un df -h pour voir quel est le disque à surveiller
/dev/sda1 ou /dev/hda1 ou autre
puis modifier la ligne en fonction :

command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda1


Perso je ne modifie que la fin, comme ça la config nagios reste toujours "check_nrpe!check_hda1" pour toutes les machines

Faire en sorte que le daemon démarre automatiquement :

ln -s /etc/init.d/nagios-nrpe-server /etc/rcS.d/S98nagios-nrpe-server
/etc/init.d/nagios-nrpe-server restart


Installer SNMP :

Dans notre cas, avec Ubuntu 13.10, SNMP est déjà présent. sinon apt-get install fera son office.
MAIS, comme pour NRPE, le plugin est présent au mauvais endroit. -> création d'un lien symbolique.

ln -s /usr/lib/nagios/plugins/check_snmp /usr/local/nagios/libexec/check_snmp

apt-get install snmp-mibs-downloader


Plugin pour Terrastation :
apt-get install php5-snmp


Télécharger check_terastation_storage.php ici :
Le placer dans le dossier des plugins (/usr/local/nagios/libexec)
Mettre les droits Nagios et 777, comme les autres plugins.

Dans Command.cfg, rajouter :

#Snif Terrastation
define command{
command_name check_terastation_storage
command_line php $USER1$/check_terastation_storage.php $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$
}


Et dans votre fichier Windows.CFG :

define host{
use windows-server
hostgroups NASS
host_name Nass05 ; The name we're giving to this host
alias Nass05 ; A longer name associated with the host
address 172.16.0.32 ; IP address of the host
}
define service{
use generic-service
host_name Nass05
service_description Espace disque
check_command check_terastation_storage!public 10 5
}

 

Publicité
Publicité
Des guides, des tutos
  • Quelques guides informatiques variés, pour les novices et les plus calés. N'hésitez pas à laisser des commentaires, si vous voyez des corrections ou des améliorations à apporter, vous êtes les bienvenus !
  • Accueil du blog
  • Créer un blog avec CanalBlog
Publicité
Archives
Publicité