Système de monitoring
Un article de Casys (Canadian Sysadmins).
Auteur: Thomas Boutry
Sommaire |
Installation du système de monitoring
Installation avec le système de package de ubuntu
sudo apt-get install nagios-images nagios-plugins nagios-snmp-plugins nagios2
Modification de la configuration de base
Création du fichier d'authentification pour l'interface web :
htpasswd -c /etc/nagios2/htpasswd.users nagiosadmin -- Entrez le mot de passe ---
Activé la possiblité d'envoyer des commands via l'interface web , ceci principalement pour forcer un service
à être intérogé.
sudo vi /etc/nagios2/nagios.cfg --- check_external_commands=1 ---
Confirmez la configuration : [1]
modifiez la configuration localhost avec le hostname de votre machine, dans mon cas barabbas
sudo mv /etc/nagios2/conf.d/localhost_nagios2.cfg /etc/nagios2/conf.d/barabbas_nagios2.cfg
sudo vi /etc/nagios2/conf.d/barabbas_nagios2.cfg -- :%s/localhost/barabbas/g
sudo vi /etc/nagios2/conf.d/hostgroups_nagios2.cfg --- :%s/localhost/barabbas/g ---
Modification de la configuration de l'image du gateway
sudo vi /etc/nagios2/conf.d/extinfo_nagios2.cfg
---
define hostextinfo {
host_name gateway
notes router Link sys
notes_url http://10.10.10.1/
icon_image base/switch40.png
statusmap_image base/switch40.gd2
}
---
Création du fichier host.cfg qui contiendra tous les hosts
sudo vi /etc/nagios2/conf.d/hosts.cfg
---
define host{
use generic-host ; Name of host template to use
host_name hostname_de_la_machine
alias hostname_de_la_machine_description
address 127.0.0.1
}
---
Mettre en commantaire la définition du localhost dans le fichier /etc/nagios2/conf.d/Nom_du_host_nagios2.cfg
A terme toutes les vérifications s'effecturons avec le système snmp , en d'autre terme tout ce fichiers sera en commantaire.
Creation de la configuration personnalisé (snmp)
L'objectif de la configuration est d'effectuer une configuration complète avec le système SNMP.
Par le fait même ceci exige que le système snmpd soit actif sur tout les éléments informatique que vous désirez
monitorer
Vous pouvez avoir de l'information sur la configuration du système snmpd V3 en suivant le liens suivant : Système snmpd
Réalisation d'un template pour les système Unix
Voici la listes des éléments monitorés de base sur tout les systèmes unix :
- Charge du système (Current Load) - Nombre d'usagé connecté (Current Users) - Espace disque dur pour / et /home (Disk Space) - Disponibilité du service ssh (SSH) - Disponibilité du service syslogd (syslogd) - Nombre total de processus (Total Processes)
Réalisation d'un template de services pour les machines de type unix (freeBSD, Linux , ...)
réalisation d'un fichier de template dans le répertoire : /etc/nagios2/conf.d/ avec le nom : template_unix_snmp.cfg
L'objectif est de définir des services pour un group de machine ceci permet de faire en sorte que lors de l'Ajout d'un
nouveau host, il suffit de définir le host et de l'ajouté dans les groups correspondant au service.
Dans le cas présent le service est Unix
sudo vi /etc/nagios2/conf.d/template_unix_snmp.cfg
---
define service {
use generic-service
hostgroup_name Unix
service_description Disk Space /
check_command check_snmp_storage_v3!/!90!95!-r
# register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description Disk Space /home
check_command check_snmp_storage_v3!/home!90!95!-r
# register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description Current Users
check_command check_snmp_users_v3!6!10
# register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description SSHD process
check_command check_snmp_process_running_v3!sshd
# register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description Syslog process
check_command check_snmp_process_running_v3!syslogd
# register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description Cron process
check_command check_snmp_process_running_v3!cron
# register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description Total Process
check_command check_snmp_custom_process_v3!Totalprocs
}
define service {
use generic-service
hostgroup_name Unix
service_description Load Average
check_command check_snmp_load_v3!netsl!3,4,5!6,5,5
}
define service {
use generic-service
hostgroup_name Unix
service_description Zombies Process
check_command check_snmp_custom_process_v3!Zombieprocs
}
define service {
use generic-service
hostgroup_name Unix
service_description Temperature Core
check_command check_snmp_custom_process_v3!CoreTemp
}
define service {
use generic-service
hostgroup_name Unix
service_description Temperature Other
check_command check_snmp_custom_process_v3!OtherTemp
}
---
Voici en détail les sections de configurations
Configuration du monitoring de l'espace disque dur
Avec Ubuntu 8.04 et l'installation du package nagios-snmp-plugins cette partie n'est pas obligatoire . Nous allons télécharger le script check_snmp_storage.pl sur le site http://nagios.manubulon.com/snmp_storage.html
sudo cd /usr/lib/nagios/plugins/ sudo wget http://nagios.manubulon.com/check_snmp_storage.pl
Si vous utilisez le système snmpv3 vous aurez besoin des packages suivant :
sudo apt-get install libcrypt-des-perl libdigest-sha1-perl libdigest-hmac-perl
Réalisation d'un test avec le système snmp v3
/usr/lib/nagios/plugins/check_snmp_storage.pl -H localhost -m /home -r -l monitoring -x Mot_de_pass -w 90 -c 95
Activation du monitoring dans notre template :
sudo vi /etc/nagios2/conf.d/template_unix_snmp.cfg
---
define service {
use generic-service
hostgroup_name Unix
service_description Disk Space /
check_command check_snmp_storage_v3!/!90!95!-r
register 0
}
define service {
use generic-service
hostgroup_name Unix
service_description Disk Space /home
check_command check_snmp_storage_v3!/home!90!95!-r
register 0
}
---
Configuration du monitoring du nombre d'usagés
Cette fonction n'est pas disponible avec un script près réalisé.
Nous utiliserons donc le système check_snmp de base de nagios pour effectuer le check
nous allons ajouter dans le répertoire : /etc/nagios-plugins/config
le fichier : snmp_users.cfg
sudo vi /etc/nagios-plugins/config/snmp_users.cfg
---
#
# Author : Boutry Thomas <thomas.boutry@gmail.com>
#
# date : 17 May 2008
#
# Get numbers of users with snmp
#
# Command line example :
# ./check_snmp -H 127.0.0.1 -o HOST-RESOURCES-MIB::hrSystemNumUsers.0 \
# -a md5 -U monitoring -A Mot_de_pass -L authNoPriv -P 3 \
# -w 3 -c 5
#
# 'check_snmp_users_v3' command definition
define command {
command_name check_snmp_users_v3
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o HOST-RESOURCES-MIB::hrSystemNumUsers.0 $USER10$ -w $ARG1$ -c $ARG2$ $ARG3$
}
---
Nous allons définir la variable $USER10$ dans le fichiers de ressources de nagios
la variable $USER10$ comprend la ligne d'authantification pour le système SNMPD
sudo vi /etc/nagios2/resource.cfg --- $USER9$= -l Usersnmp -x Pass_snmp $USER10$= -a md5 -U UserSnmp -A Pass_snmp -L authNoPriv -P 3 ---
Ajout de l'instruction pour le group Unix dans le fichier de template :
define service {
use generic-service
hostsgroup_name Unix
service_description Current Users
check_command check_snmp_users_v3!6!10
}
Configuration du monitoring des processes
Encore une fois avec la version d'ubuntu 8.04 le script check_snmp_process.pl est disponible avec le package nagios-snmp-plugin.
cependant, si vous utilisez un autre système il est toujours disponible sur le site fournit en références .
Cependant j'ai constaté une erreur dans le package le fichie : /etc/nagios-plugins/config/snmp_process.cfg , n'inclut pas le système d'authentification V3 de snmpd.
Nous sommes donc dans l'obligation de modifier le fichiers pour inclure ce protocol :
sudo vi /etc/nagios-plugins/config/snmp_process.cfg
---
# 'check_snmp_load_v3' command definition
define command {
command_name check_snmp_process_v3
command_line $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ $USER9$ -n $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
}
# 'check_snmp_load_v3' command definition
define command {
command_name check_snmp_process_running_v3
command_line $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ $USER9$ -n $ARG1$
}
---
Mise en place de la configuration pour les process: cron , syslogd et sshd
sudo vi /etc/nagios2/conf.d/template_unix_snmp.cfg
---
define service {
use generic-service
hostsgroup_name Unix
service_description SSHD process
check_command check_snmp_process_running_v3!sshd
}
define service {
use generic-service
hostsgroup_name Unix
service_description Syslog process
check_command check_snmp_process_running_v3!syslogd
}
define service {
use generic-service
hostsgroup_name Unix
service_description Cron process
check_command check_snmp_process_running_v3!cron
}
---
Malheureusement certaines informations ne sont pas disponible directement avec le système snmp
Nous devons donc configurer le système snmpd afin qu'il exécute certain script de vérification
Consultez le lien : Système_snmpd#Configuration_de_processes_ex.C3.A9cut.C3.A9_par_le_systeme_snmpd
Nous créons un script afin de pouvoir récupéré l'information
sudo vi /usr/lib/nagios/plugins/check_snmp_custom_process.sh
---
#!/bin/bash
#
#
#
##############################################################
SNMPWALK=/usr/bin/snmpwalk
AUTHPROTO=md5 # authentication protocol (MD5|SHA)
SECLEVEL=authNoPriv # security level (noAuthNoPriv|authNoPriv|authPriv)
OBJECTIF=UCD-SNMP-MIB::extOutput.
usage()
{
echo "$0 -H hostname -l Users -x Mot_de_passe -p process_name"
}
#Récupération des arguments
while getopts “H:l:x:p:h” OPTION
do
case $OPTION in
H)
HOST2CHECK=$OPTARG
;;
l)
USERSNMP=$OPTARG
;;
x)
PASSSNMP=$OPTARG
;;
p)
PROCESS2CHECK=$OPTARG
;;
*)
usage
exit 1
;;
esac
done
#Récupération du ID du processus .
LSTPROCS_SNMP=`$SNMPWALK -u $USERSNMP -A $PASSSNMP -a $AUTHPROTO -l $SECLEVEL $HOST2CHECK UCD-SNMP-MIB::extNames | grep $PROCESS2CHECK`
if [ $? -ne 0 ]
then
echo "error to communicat with the snmp server"
usage
exit 1
fi
IDPROCS=` expr "$LSTPROCS_SNMP" : '.*::.*\.\([0-9]\).*'`
RESULTAT_SEARCH=`$SNMPWALK -u $USERSNMP -A $PASSSNMP -a $AUTHPROTO -l $SECLEVEL $HOST2CHECK $OBJECTIF$IDPROCS`
RESULTAT_SEARCH_CLEAN=` expr "$RESULTAT_SEARCH" : '.*::.*= STRING:\(.*\)'`
echo $RESULTAT_SEARCH_CLEAN
---
exemple d'utilisation :
check_snmp_custom_process.sh -H localhost -l monitoring -x inf0monitoring11 -p Totalprocs
Activation du script dans la liste des commandes disponible dans nagios :
sudo vi /etc/nagios/plugins/snmp_custom_process.cfg
---
# 'check_snmp_custom_process
define command{
command_name check_snmp_custom_process_v3
command_line /usr/lib/nagios/plugins/check_snmp_custom_process.sh -H $HOSTADDRESS$ $USER9
$ -p $ARG1$
}
---
Configuration des Vérifications dans le template :
sudo vi /etc/nagios2/conf.d/template_unix_snmp.cfg
---
define service {
use generic-service
hostgroup_name Unix
service_description Total Process
check_command check_snmp_custom_process_v3!Totalprocs
}
define service {
use generic-service
hostgroup_name Unix
service_description Zombies Process
check_command check_snmp_custom_process_v3!Zombieprocs
}
---
Modificationd de la configuration par default pour la vérification des processus
sudo vi /etc/nagios2/conf.d/barabbas_nagios2.cfg
---
#define service{
# use generic-service ; Name of service template to use
# host_name barabbas
# service_description Total Processes
# check_command check_procs!250!400
# }
---
Mise en place des servers dans le group Unix
Ajout de nos serveurs dans le group Unix
sudo vi /etc/nagios2/conf.d/hostgroups_nagios2.cfg
---
define hostgroup {
hostgroup_name Unix
alias Unix servers
members barabbas
}
---
Références
Site pour les plugins snmp : http://nagios.manubulon.com/
Site de plugins en tout genre : http://www.nagiosexchange.org
Wiki de la communitauté nagios : http://www.nagioscommunity.org/wiki/index.php/Main_Page
