Nagios

De Wiki_DR13
Révision datée du 11 mai 2010 à 10:59 par Julien.garnier (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Attention document NON VALIDE


This howto provides a step by step walkthrough on installing the required components, and setting the default parameters (file paths, etc.) for Oreon to work with the default Nagios from Debian.

Installer le serveur virtuel[modifier]

Creation de l'image :

# xen-create-image --hostname nagios --debootstrap --ip 193.49.133.77 --memory 1024MB --swap 2048Mb --vcpu 2

Demarrage de l'image :

# xm create -c nagios.cfg

Mot de passe root :

# passwd

Install required Debian packages[modifier]

apache2[modifier]
# apt-get install sudo apache2
mysql[modifier]
# apt-get install mysql-server-5.0
php5[modifier]
# apt-get install php5
# apt-get install php-db php-date
# apt-get install php5-gd php5-mysql php5-snmp php5-ldap
# apt-get install php-mail php-mail-mime php-net-smtp php-net-socket
# apt-get install php5-xmlrpc
rrdtool[modifier]
# apt-get install rrdtool librrds-perl
snmp[modifier]
# apt-get install snmp snmpd libnet-snmp-perl

Eventually configure snmpd on this machine:

# vi /etc/snmp/snmpd.conf
com2sec readonly  default         public
# /etc/init.d/snmpd restart
# snmpwalk -v1 -c public localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux debian 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1339340) 3:43:13.40
[...]
IPV6-MIB::ipv6IfAdminStatus.2 = INTEGER: up(1)
IPV6-MIB::ipv6IfOperStatus.1 = INTEGER: up(1)
IPV6-MIB::ipv6IfOperStatus.2 = INTEGER: up(1)
Additionnal PEAR modules[modifier]
# pear upgrade pear
# pear install -o -f --alldeps DB_DataObject DB_DataObject_FormBuilder MDB2 Numbers_Roman \
Numbers_Words HTML_Common HTML_QuickForm HTML_QuickForm_advmultiselect HTML_Table Auth_SASL \
HTTP Image_Canvas Image_Color Image_Graph Image_GraphViz Net_Traceroute Net_Ping Validate XML_RPC SOAP

Nagios[modifier]

telecharger les archives :

# wget http://switch.dl.sourceforge.net/sourceforge/nagios/nagios-3.0b3.tar.gz
# wget http://belnet.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.9.tar.gz

decompresser nagios

# tar xvzf nagios-3.0b3.tar.gz
# cd nagios-3.0b3

on install :

# adduser nagios 
# groupadd nagcmd
# usermod -G nagcmd www-data
# usermod -G nagcmd nagios
# apt-get install gcc make g++ libpar-perl  
# apt-get install libcache-cache-perl libcache-memcached-perl libcache-perl libmemcache-dev memcached libsdl-perl
 

Il y a un probleme avec des librairies :

# ln -s /usr/lib/libperl.so.5.8.8 /usr/lib/libperl.so


# ./configure --with-command-group=nagcmd --with-default-perfdata --enable-embedded-perl --with-perlcache
# make all
# make full install

Installation des plugins :

# cd ..
# tar xvzf nagios-plugins-1.4.9.tar.gz
# cd nagios-plugins-1.4.9
# ./configure
# make
# make install


Mise a jour centreon

telecharger la derniere version sur le site


Command :
tar xvzf centreon-X
cd centreon-X
./install.sh -u /etc/centreon/



Repondre y a toutes les questions


Aller sur la page de centreon et mettre a jour les bases de données.











Installation Nagios 2 & 3 sur Ubuntu 6.0.6, 8.0.4 et 10.0.4 LTS[modifier]

<note tip>L'ensemble de cette installation reste valable pour Ubuntu 8.0.4 L.T.S Hardy Heron et Ubuntu 10.04 Lucid Lynx.</note>

Préambule[modifier]

Ce document couvre l'installation d'un serveur Nagios version 2 ou 3 sur Linux Ubuntu 6.0.6 LTS, Ubuntu 8.04 LTS et 10.0.4 LTS. Il doit être possible de suivre ces instructions pour d'autres distributions avec quelques modifications. Néanmoins, l' Ubuntu Server LTS est intéressante pour sa dimension "Entreprise Ready" et son suppport gratuit assuré par Canonical pour une durée de 5 ans. Cette distribution représente un bon compromis paquets récents, sécurité (le compte root est désactivé) et stabilité.

A la fin de l'installation, le serveur doit contenir l'ensemble des programmes et librairies nécessaires au fonctionnement de Nagios en production. Ne sera pas abordé l'installation des programmes satellites de la supervision comme la gestion des configurations, des changements, ntop, smokeping...) Par contre, pour nos besoins, nous couvrirons l'installation à partir des sources de :

 * Nagios
 * Nagios plugins officiels
 * Nagios NRPE pour la surveillance active
 * Nagios NSCA pour la surveillance passive
 * Nagios NDOutils pour stocker les données de Nagios dans MySQL

Notre serveur comprendra un mix de programmes installés par la commande apt-get mais aussi de paquets compilés à partir des sources de façon à contrôler les paramètres d'installation de ces programmes et de pouvoir les mettre à jour plus rapidement (patches et correctifs mineurs)





Installation Ubuntu Server 6.0.6, 8.0.4 et 10.0.4 LTS[modifier]

Nous n'allons pas couvrir en détail l'installation de la distribution Linux. Il suffit de choisir une installation de serveur LAMP et de suivre les indications. Pour que cette installation soit opérationnelle, il convient d'exécuter les commandes suivantes :

sudo apt-get update sudo apt-get upgrade sudo apt-get install openssh-server

Ces commandes mettent à jour l'ensemble de la distribution installée et installe le serveur ssh pour la prise en main à distance.

Préparation des dépôts apt pour l'installation

sudo nano /etc/apt/sources.list

Le contenu désiré est le suivant: deb http://fr.archive.ubuntu.com/ubuntu/ dapper main universe restricted deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper main universe restricted deb http://fr.archive.ubuntu.com/ubuntu/ dapper-updates main universe restricted deb-src http://fr.archive.ubuntu.com/ubuntu/ dapper-updates universe restricted deb http://security.ubuntu.com/ubuntu dapper-security main universe restricted deb-src http://security.ubuntu.com/ubuntu dapper-security main universe restricted

Nous installons quelques utilitaires de base pour notre serveur de supervision

sudo apt-get install php5-gd mailx fping snmp ntp smbclient nmap saidar traceroute php5-snmp curl gettext syslog-ng

Installation de l'environnement de compilation

sudo apt-get install build-essential
















Installation Nagios[modifier]

Création de l'utilisateur nagios

sudo groupadd -g 9000 nagios sudo groupadd -g 9001 nagcmd sudo useradd -u 9000 -g nagios -G nagcmd -d /usr/local/nagios -c "Nagios Admin" nagios

Avant de pouvoir compiler Nagios le plus complètement possible, il faut installer quelques librairies de développement. Les en-têtes du noyau sont facultatifs :

sudo apt-get install libperl-dev libgd2-xpm-dev libltdl3-dev linux-headers-`uname -r`

Pour la version 3 de Nagios, ajouter la librairie libglib2

sudo apt-get install libglib2.0-dev

Quelques corrections pour que Nagios trouve les librairies que le configure a du mal à détecter

sudo ln -s /usr/include/sys/uio.h /usr/include/ sudo ln -s /usr/include/sys/socket.h /usr/include/

Ensuite compilation de Nagios, des plugins, de NRPE et NSCA.

wget http://freefr.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz tar -xzf nagios-3.2.0.tar.gz pushd nagios-3.2.0 ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd --enable-event-broker --enable-nanosleep --enable-embedded-perl --with-perlcache make all sudo make install sudo make install-init sudo make install-commandmode sudo make install-config popd

Configurer apache2 pour Nagios

sudo nano /etc/apache2/conf.d/nagios.conf

Coller dans le fichier ouvert la configuration suivante :

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"

<Directory "/usr/local/nagios/sbin">

  1. SSLRequireSSL
  Options ExecCGI
  AllowOverride None
  Order allow,deny
  Allow from all
  1. Order deny,allow
  2. Deny from all
  3. Allow from 127.0.0.1
  AuthName "Nagios Access"
  AuthType Basic
  AuthUserFile /usr/local/nagios/etc/htpasswd.users
  Require valid-user

</Directory>

Alias /nagios "/usr/local/nagios/share"

<Directory "/usr/local/nagios/share">

  1. SSLRequireSSL
  Options None
  AllowOverride None
  Order allow,deny
  Allow from all
  1. Order deny,allow
  2. Deny from all
  3. Allow from 127.0.0.1
  AuthName "Nagios Access"
  AuthType Basic
  AuthUserFile /usr/local/nagios/etc/htpasswd.users
  Require valid-user

</Directory>

Avec Nagios 3, un simple install-webconf suffit

sudo make install-webconf

Création du fichier d'utilisateur

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin sudo chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users

Ajouter l'utilisateur apache au groupe nagcmd pour pouvoir exécuter les commandes externes de Nagios depuis l'interface (ex : nagcmd:x:9001:www-data)

sudo adduser www-data nagcmd sudo /etc/init.d/apache2 restart

Pour que Nagios démarre automatiquement au boot de la machine

sudo update-rc.d nagios defaults





Installation plugins[modifier]

Librairies complémentaires[modifier]

sudo apt-get install libgnutls-dev libmysqlclient15-dev libssl-dev libsnmp-perl libkrb5-dev libldap2-dev libsnmp-dev libnet-snmp-perl gawk libwrap0-dev libmcrypt-dev fping snmp gettext smbclient dnsutils

Quelques corrections pour que le configure trouve les librairies qu'il a du mal à détecter

sudo ln -s /usr/include/inttypes.h /usr/include/sys/ sudo ln -s /usr/include/mntent.h /usr/include/sys/

Compilation[modifier]

wget http://freefr.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz tar -xzf nagios-plugins-1.4.14.tar.gz pushd nagios-plugins-1.4.14/ ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-libtap --enable-extra-opts --enable-perl-modules make sudo make install





Installation NRPE[modifier]

Installation de openssl

sudo apt-get install openssl

wget http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz tar -xzf nrpe-2.12.tar.gz pushd nrpe-2.12/ ./configure --enable-ssl --with-log-facility --enable-command-args --enable-threads=posix --with-trusted-path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/nagios/bin:/usr/local/nagios/libexec make sudo make install sudo cp sample-config/nrpe.cfg /usr/local/nagios/etc/

Pas de script de démarrage fourni, aussi en voici un minimal

  1. !/bin/sh

start() {

               rm -f /var/run/nrpe.pid
               /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

}

stop() {

               nrpe=`pgrep nrpe`
               kill -9 $nrpe

}

if [ -f /etc/rc.d/init.d/functions ]; then

       . /etc/rc.d/init.d/functions

fi

case "$1" in

start)
 echo 'Le service nrpe est demarrer'
 start
 exit 0
 ;;
stop)
 echo 'Le serviec nrpe est arreter'
 stop
 exit 0
 ;;
restart)
 echo 'Le serviec nrpe est arreter'
 stop
 echo 'Le service nrpe est demarrer'
 start
 exit 0
 ;;
*)
 echo 'Usage: nrpe {start|stop|restart}'
 exit 1
 ;;

esac




Installation NSCA[modifier]

Quelques fichiers mal linkés

sudo apt-get install libbind-dev libdb-dev sudo ln -s /usr/include/linux/config.h /usr/include/sys/ sudo ln -s /usr/include/dns/db.h /usr/include/

Compilation

wget http://downloads.sourceforge.net/project/nagios/nsca-2.x/nsca-2.7.2/nsca-2.7.2.tar.gz tar -xzf nsca-2.7.2.tar.gz pushd nsca-2.7.2/ ./configure make

copier les exécutables et le fichier de configuration pour finir l'installation

sudo cp src/nsca /usr/local/nagios/bin/ sudo cp src/send_nsca /usr/local/nagios/libexec/ sudo cp sample-config/nsca.cfg /usr/local/nagios/etc/

Le script de démarrage fourni fonctionnant, nous avons utilisé le code ci-dessous qui est un dérivé du script nrpe comme script de démarrage

  1. !/bin/sh
  2. Start/stop the nsca daemon.
  3. Contributed by Andrew Ryder 06-22-02
  4. Slight mods by Ethan Galstad 07-09-02

NscaBin=/usr/local/nagios/bin/nsca NscaCfg=/usr/local/nagios/etc/nsca.cfg

test -f $NscaBin || exit 0

case "$1" in start) echo -n "Starting nagios service check acceptator daemon: nsca"

       start-stop-daemon --start --quiet --exec $NscaBin -- -c $NscaCfg --daemon
       echo "."
       ;;

stop) echo -n "Stopping nagios service check acceptator daemon: nsca"

       start-stop-daemon --stop --quiet --exec $NscaBin
       echo "."
       ;;

restart) echo -n "Restarting nagios service check acceptator daemon: nsca"

       start-stop-daemon --stop --quiet --exec $NscaBin
       start-stop-daemon --start --quiet --exec $NscaBin -- -c $NscaCfg --daemon
       echo "."
       ;;

reload|force-reload) echo -n "Reloading configuration files for nagios service check acceptator daemon: nsca"

       # nsca reloads automatically
       echo "."
       ;;
  • ) echo "Usage: /etc/init.d/nsca start|stop|restart|reload|force-reload"
       exit 1
       ;;

esac exit 0

Pour l'activer

sudo update-rc.d nsca defaults




Installation NDOUtils[modifier]

Compilation et installation de NDOUtils

wget http://puzzle.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz tar -xzf ndoutils-1.4b7.tar.gz pushd ndoutils-1.4b7/ ./configure --enable-mysql make cd src sudo cp log2ndo file2sock sockdebug /usr/local/nagios/bin sudo cp ndomod-3x.o /usr/local/nagios/bin/ndomod.o sudo cp ndo2db-3x /usr/local/nagios/bin/ndo2db cd ../config/ sudo cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc

Ne reste plus qu'à créer une base de données "nagios", un utilisateur possédant les droits SELECT, INSERT, UPDATE, et DELETE sur cette base et à y insérer le fichier de structure fourni.

CREATE USER 'nagios'@'localhost' IDENTIFIED BY '****';

GRANT USAGE ON * . * TO 'nagios'@'localhost' IDENTIFIED BY '****' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE DATABASE IF NOT EXISTS `nagios` ;

GRANT SELECT , INSERT , UPDATE , DELETE ON `nagios` . * TO 'nagios'@'localhost';

Insertion du fichier de structure

cd ../ mysql -uroot -ppaswd nagios < db/mysql.sql Modifier le fichier de configuration /usr/local/nagios/etc/nagios.cfg

event_broker_options=-1 broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg

Démarrage du démon

/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

ndo2db étant fourni sans script de démarrage, le suivant a été utilisé

  1. !/bin/sh
  2. Start/stop the nsca daemon.
  3. Contributed by Andrew Ryder 06-22-02
  4. Slight mods by Ethan Galstad 07-09-02

Ndo2dbBin=/usr/local/nagios/bin/ndo2db Ndo2dbCfg=/usr/local/nagios/etc/ndo2db.cfg

test -f $Ndo2dbBin || exit 0

case "$1" in start) echo -n "Starting ndo2db daemon: ndo2db"

       start-stop-daemon --start --quiet --exec $Ndo2dbBin -- -c $Ndo2dbCfg
       echo "."
       ;;

stop) echo -n "Stopping ndo2db daemon: ndo2db"

       start-stop-daemon --stop --quiet --exec $Ndo2dbBin
       echo "."
       ;;

restart) echo -n "Restarting ndo2db daemon: ndo2db"

       start-stop-daemon --stop --quiet --exec $Ndo2dbBin
       start-stop-daemon --start --quiet --exec $Ndo2dbBin -- -c $Ndo2dbCfg --daemon
       echo "."
       ;;

reload|force-reload) echo -n "Reloading configuration files for ndo2db daemon: ndo2db"

       # ndo2db reloads automatically
       echo "."
       ;;
  • ) echo "Usage: /etc/init.d/ndo2db start|stop|restart|reload|force-reload"
       exit 1
       ;;

esac exit 0

Pour l'activer

sudo update-rc.d ndo2db defaults

Il y a certains cas où il n'est pas nécessaire d'envoyer toutes les données gérées par Nagios dans la base NDOUtil. Il existe une [| petite calculette] en ligne pour aider à déterminer quoi envoyer et surtout avoir la valeur à renseigner dans ndomod.cfg.

Installation SNMPTT[modifier]

Commençons par compléter notre couche SNMP et librairie perl pour faire fonctionner SNMPTT

sudo apt-get install snmpd libconfig-inifiles-perl

Installation SNMPTT

wget http://switch.dl.sourceforge.net/sourceforge/snmptt/snmptt_1.2.tgz tar -xzf snmptt_1.2.tgz pushd snmptt_1.2/ sudo mv snmpttconvert snmpttconvertmib snmptt-net-snmp-test /usr/local/bin/ sudo mv snmptt snmptthandler /usr/local/sbin/ sudo mkdir -p /usr/local/etc/snmptt.d sudo cp snmptt.ini /usr/local/etc/ sudo cp examples/snmptt.conf.generic /usr/local/etc/snmptt.d/

Il faut ensuite convertir les MIBS dont on a besoin. Afin de tester la validité de notre installation SNMPTT, nous générons une trap SNMP que nous lui passons

sudo snmptt < /home/system/src/snmptt_1.2/examples/sample-trap.generic

Modifier le fichier /etc/default/snmpd pour activer le démon trap

TRAPDRUN=yes

  1. snmptrapd options (use syslog).

TRAPDOPTS='-Lsd -On -p /var/run/snmptrapd.pid'

Modifier le fichier de configuration /etc/snmp/snmptrapd.conf

traphandle default /usr/local/sbin/snmptt disableAuthorization yes donotlogtraps yes

Pour convertir au format snmptt des MIB, il faut utiliser snmpttconvertmib et c'est long. Voilà une moulinette qui accepte en entrée un répertoire et qui convertit chacun des fichiers qui s'y trouvent au format snmptt.

  1. !/bin/bash

ls $1 > /tmp/mibs.txt

while read enreg; do

/usr/local/snmptt/bin/snmpttconvertmib --in=/usr/share/snmp/mibs/$enreg --out=/etc/snmp/snmptt.d/$enreg echo "processing $enreg..."

done < /tmp/mibs.txt rm /tmp/mibs.txt


exit 0

Il suufit de l'appeler ensuite avec le répertoire en argument

mibs-directory-convert.sh /usr/share/snmp/mibs/

Installation Nagtrap[modifier]

NagTrap est une interface bien pratique pour voir les traps snmp reçus et injectés dans une base de données MySQL. Il fournit également un plugin Nagios pour requêter cette base.

Installation

wget http://surfnet.dl.sourceforge.net/sourceforge/nagtrap/nagtrap-0.1.2.tar.gz tar xzf nagtrap-0.1.2.tar.gz cd nagtrap mysql -u root -p snmptt < db/snmptt-1.2.sql

Création d'une nouvelle table pour stocker les traps reçues mais inconnues

CREATE TABLE `snmptt`.`snmptt_unknown` ( `id` mediumint( 9 ) NOT NULL AUTO_INCREMENT , `eventname` varchar( 50 ) default NULL , `eventid` varchar( 50 ) default NULL , `trapoid` varchar( 100 ) default NULL , `enterprise` varchar( 100 ) default NULL , `community` varchar( 20 ) default NULL , `hostname` varchar( 100 ) default NULL , `agentip` varchar( 16 ) default NULL , `category` varchar( 20 ) default NULL , `severity` varchar( 20 ) default NULL , `uptime` varchar( 20 ) default NULL , `traptime` varchar( 30 ) default NULL , `formatline` varchar( 255 ) default NULL , `trapread` int( 11 ) default '0', PRIMARY KEY ( `id` ) ) ENGINE = MYISAM DEFAULT CHARSET = latin1;

INSERT INTO `snmptt`.`snmptt_unknown` SELECT * FROM `snmptt`.`snmptt` ;

Mise en place des fichiers pour l'interface PHP

sudo mv nagtrap/ /usr/local/nagios/share/ sudo chown -R www-data:www-data /usr/local/nagios/share/nagtrap/ sudo cp -p /usr/local/nagios/share/nagtrap/etc/config.ini.php-dist /usr/local/nagios/share/nagtrap/etc/config.ini.php

Editer le fichier config.ini.php et renseigner les valeurs pour la connexion MySQL. C'est prêt !

Contrôle installation[modifier]

Une fois l'installation de l'ensemble des composants terminés, il ne reste qu'à vérifier que les processes ont bien été démarré.

ps aux | grep nagios

nagios 3679 0.0 0.3 20820 1848 ? Ssl Jul11 1:55 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg nagios 10670 0.0 0.1 1984 744 ? Ss Jul11 0:00 /usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca.cfg --daemon nagios 309 0.0 0.0 3604 320 ? Ss 13:39 0:00 /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg nagios 3683 0.0 0.1 3348 968 ? Ss Jul11 0:17 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d