Beruflich Dokumente
Kultur Dokumente
1 )Objectifs :
Mettre en place et configurer une station de surveillance nagios charge davertir les administrateurs en cas de dfaillance sur
2 )Remarques :
Pour chaque machine, ou groupe de machines, il faut prciser les services surveiller.
A chaque service correspond un serveur (http,...) ou un plugin Nagios standard.
Afin d'optimiser la charge rseau, il sera inutile de tester les services dune machine si celle-ci ne rpond pas au ping.
Pour Nagios premire version, dans /etc/nagios il n'y a peut-tre pas cgi.cfg, nous pouvons raliser la commande suivante :
sudolns/etc/nagios2/cgi.cfg/etc/nagios/cgi.cfg
TP LP Nagios
notification_interval
notification_period
notification_options
contact_groups
register
}
0
24x7
d,u,r
admins
0
; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
Si on ne configure que ces fichiers, le check-host-alive ne fonctionne pas, il faut au moins un service (service.cfg) configur par
machine pour que cela fonctionne. Par exemple, il ai donc t ncessaire de vrifier que le service PING soit dfini pour chaque
host.
Dans la partie par dfaut de ce fichier generic-hosts_nagios2.cfg, les notifications sont actives au dmarrage.
Dfinition des diffrentes Machines correspondant l'architecture demander pendant le TP ( adapter):
On crera un fichier par machine.
Ajouter le gateway:
Crer le fichier "/etc/nagios3/conf.d/host-gateway_nagios2.cfg" et y placer les lignes suivantes :
# a host definition for the gateway of the default route
define host {
host_name
gateway
alias
Default Gateway
address
xxx.xxx.xxx.xxx
use
generic-host
}
define service {
hostgroup_name
service_description
check_command
use
notification_interval
ping-servers
PING
check_ping!100.0,20%!500.0,60%
generic-service
0
define hostgroup {
hostgroup_name ping-servers
alias
Pingable servers
members
gateway
}
Si le gateway propose un serveur Web, activer le service test http pour cette machine toujours dans ce fichier
Changeons l'image(icon) de ce gateway dans le Status Map de l'interface Web de Nagios3 : dans le fichier
"/etc/nagios3/conf.d/extinfo_nagios2.cfg" ajouter les lignes suivantes :
define hostextinfo{
hostgroup_name
router-servers
notes
Router servers
#/usr/share/nagios/htdocs/images/logos/base/xxxxxxxx.png
icon_image
base/router40.png
icon_image_alt
Router
vrml_image
router40.png
statusmap_image base/router40.gd2
}
Ajoutons un 'switch1'
Crer le fichier "/etc/nagios3/conf.d/host-lynek_nagios2.cfg" et y placer les lignes suivantes :
define host{
use
host_name
generic-host
switch1
; quel patron?
; nom du switch
TP LP Nagios
alias
address
}
3
Switch
xxx.xxx.xxx.xxx
Ajouter une station 'station1' ou tout autre nom de type Ubuntu connect switch1:
Crer le fichier "/etc/nagios3/conf.d/host-station1_nagios2.cfg" et y placer les lignes suivantes :
define host{
use
host_name
alias
address
parents
}
generic-host
station1
Ubuntu station
xxx.xxx.xxx.xxx
switch1
; quel patron?
; nom de la machine
#!/bin/bash
path="/usr/bin"
echo "Usage : $0 img1_sans_extension [img2 ...]"
for arg
do
if [ -f "$arg" ]; then
echo converting $arg
arg="$(echo $arg | sed 's/\.gif$//')"
$path/giftopnm $arg.gif > $arg.pnm
$path/pnmtopng -transparent rgb:ff/ff/ff $arg.pnm > $arg.png
$path/pnmtojpeg -quality=100 -optimize -smooth=0 $arg.pnm > $arg.jpg
$path/pngtogd2 $arg.png $arg.gd2 0 1
fi
done
rm -f *.pnm
Utiliser ce script sur une image Gif n'excdant pas 60 pixels. On obtient ainsi 4 fichiers copier dans le
rpertoire "/usr/share/nagios/htdocs/images/logos/base"
Slectionnons son image(icon) dans le Status Map de l'interface Web de Nagios : dans le fichier
"/etc/nagios3/conf.d/extinfo_nagios2.cfg" ajouter les lignes suivantes :
define hostextinfo{
hostgroup_name
ubuntu-servers
notes
Ubuntu GNU/Linux servers
#
notes_url
http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
#/usr/share/nagios3/htdocs/images/logos/base/.....png
icon_image
base/ubuntu.png
icon_image_alt
Ubuntu GNU/Linux
vrml_image
ubuntu.png
statusmap_image base/ubuntu.gd2
}
define host{
use
host_name
alias
address
parents
}
generic-host
; quel patron?
stationxp1
; nom de la machine
Windows XP Station
xxx.xxx.xxx.xxx
xxxxxx
TP LP Nagios
Y dclarer un host "gatewayiris" d'adresse "XXX.XXX.XXX.XXX" en prcisant qu'il est plac aprs "gateway" en
ajoutant la ligne "parents gateway"
N'ajouter pas ce routeur dans le service ping (il n'est pas configur pour rpondre)
define service {
hostgroup_name
service_description
check_command
use
notification_interval
}
http-servers8000
HTTP8000
check_http!-p . -I .......
generic-service
0 ; set > 0 if you want to be renotified
define hostgroup {
hostgroup_name http-servers8000
alias
http8000
members
clarolineiris
}
Ajoutons le service de test "dhcp" connaissant votre serveur dhcp ou aprs avoir installer un serveur dhcp sur localhost.
tester la commande : "/usr/lib/nagios/plugins/check_dhcp -s XXXXXXX -i eth0" . Le rsultat pourrait tre :
"Erreur: Impossible de connecter le socket l'interface eth0. Vrifiez vos droits... " ou
"OK: Reu 1 DHCPOFFER(s), bail maximum = 43200 sec. " avec "sudo"
Dans le fichier "/etc/nagios3/conf.d/service_nagios2.cfg" ajouter les lignes suivantes :
define service {
hostgroup_name
service_description
check_command
use
notification_interval
}
dhcp-servers
DHCP
check_dhcp
generic-service
0 ; set > 0 if you want to be renotified
define hostgroup {
hostgroup_name dhcp-servers
alias
DHCP Servers
members
xxxxxxxxx,yyyyyyy
}
Tester ce nouveau service. Il est peut-tre ncessaire de donner plus de droit Nagios.
station Nagios, un routeur adsl(gateway), ainsi que tous les services PING.
Dans le fichier commands.cfg, dfinir les commandes excuter pour tester un service. Lensemble de ces commandes est
prsent sous forme dexcutable dans le rpertoire plugin de Nagios. On peut donc tester en ligne de commande si les
paramtres associs aux commandes fonctionnent. De mme, on obtient laide relative cette commande grce loption
h (ex: check_ping h).
Exemple de service tester : pour le test du SNMPGet, voici la dfinition dans commands.cfg:
define command{
command_name
check_snmp
TP LP Nagios
command_line
}
5
$USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$
Ainsi, pour associer le test du service snmp, on utilisera le nom check_snmp. Deux solutions :
soit on indique "en dur" les paramtres de la fonction check_snmp
soit on indique les paramtres utiliser et ces derniers seront crits dans le fichier services.cfg
Certains sont rentrs en dur, comme ladresse de lhte. Dautres seront entrer en complment de la commande, comme ARG1
et ARG2.
If faut configurer des commandes non dfinies dans commands.cfg mais prsentes dans le rpertoire de plugin. Ainsi, on rajoute
la dfinition de check_ssh, check_daytime et check_swap (voir fichier commands.cfg).
Dans le fichier services.cfg, on associe aux htes dj dfinis le service que lon souhaite tester ainsi que les arguments
generic-service
; Name of service template to use
gateway
SNMP
240
check_snmp!public!1.3.6.1.2.1.2.2.1.2.1
On configure ici lhte sur lequel on teste le service, les priodes de test et les priodes de notification ainsi et surtout de la
commande excuter avec ses paramtres (ceux non rentrs en durs).
Les arguments de la commande sont spars par des "!" , dans le cas du SNMPget, largument 1 correspondant ARG1 dans
commands.cfg est 'public', de mme largument 2 (ARG2) est ' 1.3.6.1.2.1.2.2.1.2.1'. Ces paramtres dpendent de la commande
excute.
Ainsi, pour chacune des stations prcdemment dfinies, nous associons les services tester.
7 )Utilisation de NSClient
Surveiller les services disponibles sur une station windows. Pour cela :
utiliser le serveur NSClient installer sur la machine windows,
ainsi que le plugin check_nt, disponible avec NSClient, afin dinterroger le serveur.
complter les fichiers services.cfg et checkcommands.cfg en consquences.
Une fois larchive zip dcompresse, il faut copier les fichiers pNSClient.exe, pdh.dll, psapi.dll et counters.defs dans le
rpertoire o lon veut installer NSClient (par exemple c:\nsclient) puis lancer la commande pNSClient.exe /install dans
un prompt MS-DOS, ce qui installe le service NSClient sur la machine.
On peut alors dmarrer le service.
Du ct de la machine Nagios, il faut utiliser le plugin check_nt qui est fourni dans le fichier zip et le copier dans le
rpertoire des plugins de Nagios.
On modifie le fichier checkcommands.cfg en y ajoutant les blocs suivant:
Test de la mmoire utilise:
define command{
command_name
command_line
}
check_windows_mem
$USER1$/check_nt -H $HOSTADDRESS$ -v MEMUSE -w $ARG1$ -c $ARG2$
check_windows_disk
$USER1$/check_nt -H $HOSTADDRESS$ -v USEDDISKSPACE -l $ARG1$ -w $ARG2$ -c $ARG3$
Puis on ajoute les blocs suivant dans le fichier sercives.cfg pour utiliser ces commandes sur la machine Windows :
Test de la mmoire utilise :
define service{
use
host_name
service_description
is_volatile
check_period
max_check_attempts
normal_check_interval
retry_check_interval
contact_groups
notification_interval
notification_period
generic-service
Non_de_la_Station
MEMORY USED
0
24x7
3
5
1
Windows
240
24x7
TP LP Nagios
notification_options
check_command
}
6
c,r
check_windows_mem!50%!90%
generic-service
; Name of service template to use
Non_de_la_Station
DISK
0
24x7
3
5
1
Windows
240
24x7
c,r
check_windows_disk!c!60%!80%