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