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.
Préparer un ubuntu propre (ubuntu, openssh-server, ntpdate, apt-get update et upgrade, etc...)
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 upgrade
Créer un utilisateur
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
On crée les groupes qui vont bien et on y rattache nos utilisateurs
/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
Télécharger et copier les sources sur la machine sur http://www.nagios.org/download (Nagios ET Pluggin)
puis "dé-trarer" le fichier :
On commence par Nagios, CD nagios-xxx
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..
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)
make
make install
Démarrage auto de Nagios :
Vérifier qu'il n'y ait pas d'erreur de conf Nagios :
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/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
On indique par quel serveur SMTP on passe (chez moi, un relaying interne)
nécessite une authentification ? Rajouter ces lignes
postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options ='
Qui va s’authentifier
Avoir les droits root sur ces 2 fichiers
chmod 600 /etc/postfix/sasl_passwd
Compilation du fichier mdp
Toujours dans le cadre de l’authentification
echo "canonical_maps = hash:/etc/postfix/canonical" >> /etc/postfix/main.cf
On compile encore
On relance le service postfix
Pour tester, faire :
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"
Regardez ensuite le fichier suivant :
Modifier la commande Check_nt en ajoutant "-s password" (ou password = votre mot de passe)
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é !
Installer le plugin sur le serveur Nagios :
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-plugins
Puis éditer le fichier /etc/nagios/nrpe.cfg pour modifier la ligne suivante:
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 :
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 :
/etc/init.d/nagios-nrpe-server restart
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.
apt-get install snmp-mibs-downloader
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 :
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 :
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
}