Table of Contents

Supervision Nagios SNMP

Documentation à lire uniquement si on a fait le choix d'utiliser SNMP au lieu des agents installés sur les machines. Sinon, se reporter à la documentation nommé Supervision Nagios Agent.

Convention de nom des communautés SNMP

Installer les plugins SNMP sur le serveur

Afin de récolter les informations des systèmes, il est nécessaire d'utiliser des plugins supplémentaires plus précis. J'ai utilisé les plugins du site manubulon (http://nagios.manubulon.com). Un paquetage est à télécharger et à installer.

Installer les dépendances perl nécessaires.

yum install perl-Net-SNMP

Aller sur le site http://nagios.manubulon.com/ pour récupérez la liste de scripts suivante disponible sur le site dans une archive.

check_snmp_boostedge.pl
check_snmp_cpfw.pl
check_snmp_css.pl
check_snmp_env.pl
check_snmp_int.pl
check_snmp_linkproof_nhr.pl
check_snmp_load.pl
check_snmp_mem.pl
check_snmp_nsbox.pl
check_snmp_process.pl
check_snmp_processus_loaded.pl
check_snmp_script_result.pl
check_snmp_storage.pl
check_snmp_vrrp.pl
check_snmp_win.pl

Positionner ces scripts dans le dossier /usr/lib/nagios/plugins et leurs appliquer les droits.

chmod 755  check_snmp_*

Vous remarquerez qu'un script check_snmp est déjà présent. Cependant, il est un peu moins simple et précis à utiliser que les autres que nous venons d'installer. On va tout de même s'en servir pour l'uptime des systèmes par exemple.

Récupérer le script PERL nommé check_snmp_netint.pl développé par William Leibzon et disponible à cette adresse : http://wleibzon.bol.ucla.edu/nagios/. Il a été créé à partir du script de Patrick Proy. Le positionner aussi dans le dossier /usr/lib/nagios/plugins de manière manuelle.

cp /root/nagios-server/check_snmp_supp/check_snmp_netint.pl /usr/lib/nagios/plugins

Lui appliquer les droits.

chmod 755  check_snmp_netint.pl

et il est opérationnel.

Une fois cette opération réalisée, il faut créer les commandes avec les paramètres qu'on passe pour que nous puissions utiliser ces commandes dans la définition des services.

Les paramètres entre des Windows, des Linux ou des ESX sont différents, pour contrer cela, une définition de commande par type de système a été créée. On obtient les commandes suivantes.

check_win_storage
check_win_load
check_win_mem
...

check_lin_storage
check_lin_load
check_lin_mem
...
##########################################
# Commandes ajoutées en SNMP et normales #
##########################################

############ Windows ############

define command{
        command_name check_win_storage
        command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_win_load
        command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_win_mem
        command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_win_int
        command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -m -k -M -w $ARG4$ -c $ARG5$
}

############# Linux ############
define command{
        command_name check_lin_storage
        command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_lin_load
        command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_lin_mem
        command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_lin_int
        command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -m -k -M -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_lin_procs
        command_line $USER1$/check_procs -u $ARG1$ -m $ARG2$ -w $ARG3$ -c $ARG4$
}

############# ESX ############
define command{
        command_name check_esx_storage
        command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_esx_load
        command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_esx_mem
        command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_esx_int
        command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -m -k -M -w $ARG4$ -c $ARG5$
}

############# Network ############
define command{
        command_name check_net_int
        #command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -k -M -w $ARG4$ -c $ARG5$
        command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -k -y -M -w $ARG4$ -c $ARG5$
}

La convention de nommage que j'ai utilisée permet de facilement savoir si le système du serveur est Windows, Linux ou ESX par les trois lettres au milieu du nom de commande.

Vérifier la configuration pour éliminer les éventuelles erreurs.

nagios -v /etc/nagios/nagios.cfg

Redémarrer le service Nagios.

/etc/init.d/nagios restart

Accéder à l'interface web de nagios : http://srv-supervision.domaine.local/nagios/

Méthode de création de commandes

Cf. documentation creation_commandes_services.

Installer SNMP sous Windows

Cf. documentation installer_activer_snmp.

Valider et la réception d'information SNMP par Nagios commence directement au prochain check.

Ajout d'un système Windows en SNMP

Au lieu d'utiliser NSClient++, nous pouvons utiliser SNMP pour récupérer les informations que nous voulons récolter.

Si le service SNMP n'est pas dans la liste des services du serveur, il faut l'installer comme expliqué dans la section précédente.

Ensuite, il faut créer les commandes dans le fichier de définition des commandes : commands.cfg. On choisit les arguments en fonction de ce qu'on va passer dans l'appel de la commande.

Je m'explique, si on veut avoir une valeur warning et critique, et qu'on passe les deux en paramètres lors de l'appel d'une commande, on doit intercepter le premier argument ($ARG1$) en le donnant à l'option -w (option des warnings) et le deuxième argument ($ARG2) en le donnant à l'option -c (option des critiques).

templates.cfg

# Windows host definition template - This is NOT a real host, just a template!

define host{
	name			windows-server	; The name of this host template
	use			generic-host	; Inherit default values from the generic-host template
	check_period		24x7		; By default, Windows servers are monitored round the clock
	check_interval		3		; Actively check the server every 3 minutes
	retry_interval		1		; Schedule host check retries at 1 minute intervals
	max_check_attempts	10		; Check each server 10 times (max)
	check_command		check-host-alive	; Default command to check if servers are "alive"
	notification_period	24x7		; Send notification out at any time - day or night
	notification_interval	0		; Resend notifications every 5 hours
	notification_options	d,r		; Only send notifications for specific host states
	contact_groups		admins		; Notifications get sent to the admins by default
	hostgroups		grp-win		; Host groups that Windows servers should be a member of
	register		0		; DONT REGISTER THIS - ITS JUST A TEMPLATE
	}

commands.cfg

############ Windows ############

define command{
	command_name check_win_storage
	command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
	command_name check_win_load
	command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
	command_name check_win_mem
	command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
	command_name check_win_int
	command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -m -k -M -w $ARG4$ -c $ARG5$
}

grp-srv.cfg

define hostgroup{
	hostgroup_name	grp-win			; The name of the hostgroup
	alias		Global Windows Servers Group	; Long name of the group
	#This group contain all the other Windows groups
	hostgroup_members	grp-win-vm, grp-win-ph
	}

define hostgroup{
	hostgroup_name	grp-win-vm		; The name of the hostgroup
	alias		VM Windows Servers Group	; Long name of the group
	}

define hostgroup{
	hostgroup_name	grp-win-ph		; The name of the hostgroup
	alias		Physical Windows Servers Group	; Long name of the group
	}

hst-win.cfg

define host{
	use		windows-server	; Inherit default values from a template
	host_name	srv-w2k3-sup	; The name we're giving to this host
	address		@IP     	; IP address of the host
	hostgroups	grp-win-vm	; Host belong group
	parents		win
	}

Ensuite, il faut utiliser ces commandes dans les services. Extrait du fichier ser-win.cfg qui défnit les services associés au serveurs Windows.

# Create a service for monitoring Windows C: disks with SNMP
define service{
        use                     generic-service
        hostgroup_name          windows-servers
        service_description     chk-win-disk
	check_command           check_win_storage!COMMUNAUTE_SERVEUR_srv!--v2c!^[CDEFGHIJKLMNOPQRSTUVWXYZ]:!85!95
        servicegroups           ser-win-base
        }

# Create a service for monitoring Windows CPU load with SNMP
define service{
        use                     generic-service         ;Use generic-service template
        hostgroup_name          windows-servers           ;Apply this service to hostgroup
        service_description     chk-win-load            ;Description of service
        check_command           check_win_load!COMMUNAUTE_SERVEUR_srv!--v2c!stand!85!95 ;Command
        servicegroups           ser-win-base            ;Service belong servicegroup
        }

# Create a service for monitoring Windows Memory (RAM physique + virtuelle) load with SNMP
define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          windows-servers
        service_description     chk-win-mem
        check_command           check_win_mem!COMMUNAUTE_SERVEUR_srv!--v2c!"^Virtual Memory$"!85!99
        servicegroups           ser-win-base     ; Service belong servicegroup
        }

# Create a service for monitoring Windows Uptime SNMP
define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          windows-servers
        service_description     chk-win-up
        check_command           check_snmp!-C COMMUNAUTE_SERVEUR_srv -P 2c -o sysUpTime.0
        servicegroups           ser-win-base     ; Service belong servicegroup
        }

Comme d'habitude, vérifier la configuration pour éliminer les éventuelles erreurs.

nagios -v /etc/nagios/nagios.cfg

Redémarrer le service Nagios.

/etc/init.d/nagios restart

Accéder à l'interface web de nagios : http://srv-supervision.domaine.local/nagios/

Installer SNMP sous Linux

Cf. documentation installer_activer_snmp.

Ajout d'un système Linux en SNMP

Au lieu d'utiliser NRPE, nous pouvons utiliser SNMP pour récupérer les informations que nous voulons récolter.

templates.cfg

# Linux host definition template - This is NOT a real host, just a template!

define host{
	name				linux-server	; The name of this host template
	use				generic-host	; This template inherits other values from the generic-host template
	check_period			24x7		; By default, Linux hosts are checked round the clock
	check_interval			3		; Actively check the host every 3 minutes
	retry_interval			1		; Schedule host check retries at 1 minute intervals
	max_check_attempts		10		; Check each Linux host 10 times (max)
        check_command           	check-host-alive ; Default command to check Linux hosts
	notification_period		workhours	; Linux admins hate to be woken up, so we only notify during the day
							; Note that the notification_period variable is being overridden from
							; the value that is inherited from the generic-host template!
	notification_interval		0		; Resend notifications every 5 hours
	notification_options		d,u,r		; Only send notifications for specific host states
	contact_groups			admins		; Notifications get sent to the admins by default
	hostgroups			grp-lin 	; Host groups that Linux servers should be a member of
	register			0		; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
	}

commands.cfg

############# Linux ############

define command{
	command_name check_lin_storage
	command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
	command_name check_lin_load
	command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
	command_name check_lin_mem
	command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
	command_name check_lin_int
	command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -m -k -M -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_lin_procs
        command_line $USER1$/check_procs -u $ARG1$ -m $ARG2$ -w $ARG3$ -c $ARG4$

}

grp-srv.cfg

define hostgroup{
        hostgroup_name  grp-lin			; The name of the hostgroup
        alias           Global Linux Servers Group     ; Long name of the group
	#This group contain all the other Linux groups
	hostgroup_members	grp-lin-vm, grp-lin-ph
        }

define hostgroup{
        hostgroup_name  grp-lin-vm			; The name of the hostgroup
        alias           VM Linux Servers Group     ; Long name of the group
        }

define hostgroup{
        hostgroup_name  grp-lin-ph		; The name of the hostgroup
        alias           Physical Linux Servers Group     ; Long name of the group
        }

hst-lin.cfg

define host{
	use		linux-server	; Inherit default values from a template
	host_name	srv-lin-test	; The name we're giving to this host
	address		@IP     	; IP address of the host
	hostgroups	grp-lin-vm	; Host belong group
	parents		lin
	}

ser-lin.cfg

# Create a service for monitoring Linux partitions levels with SNMP
# Checks that "/", "/tmp", "/usr", "/var" mountpoints usage is < 85 and 95%
define service{
	use                     generic-service		;Use generic-service template
	hostgroup_name          grp-lin		;Apply this service to hostgroup
	service_description     chk-lin-disk		;Description of service
	check_command           check_lin_storage!COMMUNAUTE_SERVEUR!--v2c!"^/$|tmp|usr|var|data"!85!95	;Command
	servicegroups		ser-lin-base		;Service belong servicegroup
	}

# Create a service for monitoring Linux load (CPU + processus + disk charge confondu) with SNMP
#3 values : load average on 1 min, 5 min, 15 min (absolute)
define service{
	use                     generic-service		;Use generic-service template
	hostgroup_name          grp-lin		;Apply this service to hostgroup
	service_description     chk-lin-load		;Description of service
	check_command           check_lin_load!COMMUNAUTE_SERVEUR!--v2c!netsl!2,1,1!3,2,2	;Command
	servicegroups		ser-lin-base		;Service belong servicegroup
	}

# Create a service for monitoring Linux memory (RAM + Swap) with SNMP
# Linux_memory : warning at 95% memory used and 20% swap used, critical at 99% mem and 70% swap
define service {
        use                     generic-service         ;Use generic-service template
        hostgroup_name          grp-lin           ;Apply this service to hostgroup
        service_description     chk-lin-mem            ;Description of service
	check_command 		check_lin_mem!COMMUNAUTE_SERVEUR!--v2c!-N!95,20!99,70		;Command
	servicegroups		ser-lin-base		;Service belong servicegroup
	} 

define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          grp-lin
        service_description     chk-lin-up
        check_command           check_snmp!-C COMMUNAUTE_SERVEUR -P 2c -o sysUpTime.0
        servicegroups           ser-lin-base     ; Service belong servicegroup
        }

# Network interfaces checks
define service {
        use                     generic-service         ;Use generic-service template
        hostgroup_name          grp-lin-vm           ;Apply this service to hostgroup
        service_description     chk-lin-int            ;Description of service
	#warning to 15 Mo/s (input) and 15 Mo/s (output) and critical to 25 Mo/s (input) and 25 Mo/s (output)
	check_command           check_lin_int!COMMUNAUTE_SERVEUR!--v2c!"eth0"!15,15!25,25
	servicegroups		ser-lin-base		;Service belong servicegroup
	} 

define service {
        use                     generic-service         ;Use generic-service template
        hostgroup_name          grp-lin-ph           ;Apply this service to hostgroup
        service_description     chk-lin-int            ;Description of service
	#warning to 15 Mo/s (input) and 15 Mo/s (output) and critical to 25 Mo/s (input) and 25 Mo/s (output)
	check_command           check_lin_int!COMMUNAUTE_SERVEUR!--v2c!"bond0"!15,15!25,25
	servicegroups		ser-lin-base		;Service belong servicegroup
	} 

###############################################################################
###############################################################################
#
# SERVICE GROUPS
#
###############################################################################
###############################################################################

define servicegroup{
	servicegroup_name	ser-lin-base
	alias			Supervision Linux de base
	}

Comme d'habitude, vérifier la configuration pour éliminer les éventuelles erreurs.

nagios -v /etc/nagios/nagios.cfg

Redémarrer le service Nagios.

/etc/init.d/nagios restart

Accéder à l'interface web de nagios : http://srv-supervision.domaine.local/nagios/

Installer SNMP sous ESX

Cf. documentation installer_activer_snmp.

Redémarrer le service avec un /etc/init.d/snmpd restart

Ajout d'un système ESX en SNMP

templates.cfg

# ESX host definition template - This is NOT a real host, just a template!

define host{
        name                            esx-server    ; The name of this host template
        use                             generic-host    ; This template inherits other values from the generic-host template
        check_period                    24x7            ; By default, Linux hosts are checked round the clock
        check_interval                  3               ; Actively check the host every 5 minutes
        retry_interval                  1               ; Schedule host check retries at 1 minute intervals
        max_check_attempts              10              ; Check each Linux host 10 times (max)
        check_command                   check-host-alive ; Default command to check Linux hosts
        notification_period             workhours       ; ESX admins hate to be woken up, so we only notify during the day
                                                        ; Note that the notification_period variable is being overridden from
                                                        ; the value that is inherited from the generic-host template!
        notification_interval           300             ; Resend notifications every 5 hours
        notification_options            d,u,r           ; Only send notifications for specific host states
        contact_groups                  admins          ; Notifications get sent to the admins by default
        hostgroups                      esx-servers   ; Host groups that Linux servers should be a member of
        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        }

commands.cfg

############# ESX ############
define command{
        command_name check_esx_storage
        command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_esx_load
        command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}

define command{
        command_name check_esx_mem
        command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ $ARG3$ -w $ARG4$ -c $ARG5$
}

grp-srv.cfg

define hostgroup{
        hostgroup_name  esx-servers           ; The name of the hostgroup
        alias           VMware ESX Servers Group     ; Long name of the group
        }

hst-esx.cfg

define host{
        use             esx-server      ; Inherit default values from a template
        host_name       srv-esx         ; The name we're giving to this host
        address         @IP             ; IP address of the host
        hostgroups      esx-servers     ; Host belong group
        }

ser-esx.cfg

# Create a service for monitoring Linux partitions levels with SNMP
# Checks that "/", "/tmp", "/usr", "/var" mountpoints usage is < 85 and 95%
define service{
        use                     generic-service         ;Use generic-service template
        hostgroup_name          esx-servers             ;Apply this service to hostgroup
        service_description     chk-esx-disk            ;Description of service
        check_command           check_esx_storage!COMMUNAUTE_SERVEUR!--v2c!"^/$|var/log"!85!95    ;Command
        servicegroups           ser-esx-base            ;Service belong servicegroup
        }

# Create a service for monitoring Linux load (CPU + processus + disk charge confondu) with SNMP
define service{
        use                     generic-service         ;Use generic-service template
        hostgroup_name          esx-servers             ;Apply this service to hostgroup
        service_description     chk-esx-load            ;Description of service
        check_command           check_esx_load!COMMUNAUTE_SERVEUR!--v2c!netsl!4,3,3!8,5,5 ;Command
        servicegroups           ser-esx-base            ;Service belong servicegroup
        }

# Create a service for monitoring Linux memory (RAM + Swap) with SNMP
# Linux_memory : warning at 95% memory used and 20% swap used, critical at 99% mem and 70% swap
define service {
        use                     generic-service         ;Use generic-service template
        hostgroup_name          esx-servers           ;Apply this service to hostgroup
        service_description     chk-esx-mem            ;Description of service
        check_command check_esx_mem!COMMUNAUTE_SERVEUR!--v2c!-N!95,20!99,70               ;Command
        servicegroups           ser-esx-base            ;Service belong servicegroup
}

define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          esx-servers
        service_description     chk-esx-up
        check_command           check_snmp!-C COMMUNAUTE_SERVEUR -P 2c -o sysUpTime.0
        servicegroups           ser-esx-base     ; Service belong servicegroup
        }

###############################################################################
###############################################################################
#
# SERVICE GROUPS
#
###############################################################################
###############################################################################

define servicegroup{
        servicegroup_name       ser-esx-base
        alias                   Supervision Linux de base
        }

Comme d'habitude, vérifier la configuration pour éliminer les éventuelles erreurs.

nagios -v /etc/nagios/nagios.cfg

Redémarrer le service Nagios.

/etc/init.d/nagios restart

Accéder à l'interface web de nagios : http://srv-supervision.domaine.local/nagios/

Activer SNMP sur les routeurs ou switchs CISCO

Cf. documentation installer_activer_snmp.

Ajout d'un élément réseau en SNMP

Pour superviser les éléments réseaux, on utilise en premier lieu le ping et les différentes vitesse de réponse des paquets et pour obtenir le trafic on utilise systématiquement SNMP. Je n'ai utilisé que la fonction par défaut de Nagios nommé check_host_alive qui permet avec des pings réguliers de savoir si la machine répond ou non. Cette fonction par défaut est utilisé pour tout les éléments (serveurs, routeurs…). Ensuite vienne s'ajouter les services que nous allons déclarer.

On créé un host (ici un routeur) qui s'appuie sur le template par défaut generic-switch. Remarque : nous utiliserons le template generic-switch par défaut pour tous les éléments réseaux (routeurs, switchs, bornes wifi et réseau hertzien).

templates.cfg

# Define a template for switches that we can reuse

define host{
	name			generic-switch	; The name of this host template
	use			generic-host	; Inherit default values from the generic-host template
	check_period		24x7		; By default, switches are monitored round the clock
	check_interval		3		; Switches are checked every 3 minutes
	retry_interval		1		; Schedule host check retries at 1 minute intervals
	max_check_attempts	10		; Check each switch 10 times (max)
	check_command		check-host-alive	; Default command to check if routers are "alive"
	notification_period	24x7		; Send notifications at any time
	notification_interval	0		; Resend notifications every 30 minutes
	notification_options	d,r		; Only send notifications for specific host states
	contact_groups		admins		; Notifications get sent to the admins by default
	register		0		; DONT REGISTER THIS - ITS JUST A TEMPLATE
	}

commands.cfg

############# Network ############

define command{
	command_name check_net_int
	command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -k -y -M -w $ARG4$ -c $ARG5$
}

grp-net.cfg

# Create a new hostgroup for routers

define hostgroup{
	hostgroup_name	grp-rt		; The name of the hostgroup
	alias		Routers		; Long name of the group
	}

hst-rt.cfg

# Define the router that we'll be monitoring

define host{
	use		generic-switch		; Inherit default values from a template
	host_name	router1  		; The name we're giving to this switch
	address		@IP     		; IP address of the switch
	hostgroups	grp-rt			; Host groups this switch is associated with
	}

ser-net.cfg

################################### Routers ###################################
###############################################################################
# Create a service to PING to router

define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          grp-rt  	; The name of the host the service is associated with
        service_description     Ping            ; The service description
        check_command           check_ping!80.0,20%!150.0,60%  ; The command used to monitor the service
        normal_check_interval   5               ; Check the service every 5 minutes under normal conditions
        retry_check_interval    1               ; Re-check the service every minute until its final/hard state is determined
        servicegroups           ser-rt-base     ; Service belong servicegroup
        }

# Monitor uptime via SNMP

define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          grp-rt
        service_description     Uptime
        check_command           check_snmp!-C COMMUNAUTE_RESEAU -P 2c -o sysUpTime.0
        servicegroups           ser-rt-base     ; Service belong servicegroup
        }

# Monitor trafic interface via SNMP

define service{
        use                     generic-service ; Inherit values from a template
        hostgroup_name          grp-rt
        service_description     Trafic
        #warning to 6 Mo/s (input) and 6 Mo/s (output) and critical to 8 Mo/s (input) and 8 Mo/s (output)
        check_command           check_net_int!COMMUNAUTE_RESEAU!--v2c!FastEthernet0/0|FastEthernet[12]|Ethernet1/[01]|Atm2/0!6,6!8,8
        servicegroups           ser-rt-base     ; Service belong servicegroup
	}

Cas particuliers

Progos et NLB

Serveurs concernés

Les serveurs sont en NLB (Network Load Balancing). Ceci implique que l'interface réseau standard des serveurs n'est plus visible en SNMP et est remplacé par un identifiant NLB de l'interface. J'ai récupéré l'identifiant 0x564d77617265… qui est malheureusement le nom de l'interface réseau. On ne dispose pas d'un descriptif plus parlant. J'ai ajouté cet identifiant à l'expression régulière afin de pouvoir superviser son trafic. Ce n'est que pour la supervision réseau du serveur qu'il y a une particularité. Pour le reste des services, il n'y a rien de particulier.