User Tools

Site Tools


informatique:logiciels:nagios

This is an old revision of the document!


supervision

Nagios

Nagios est un programme de supervision basé sur un scheduler, des greffons et une interface web de management. Il est couramment utilisé pour faire des PING sur des équipements, ou tester des services (HTTP, SMTP) via ses greffons.

Installation du paquet nagios3.0.6-5ubuntu3

Classique sous Ubuntu :

aptitude install nagios3

Puis il faut créer un utilisateur et lui attribuer un mot de passe (si ce n'est pas déjà fait lors de l'installation) :

htpasswd -c /etc/nagios3/htpasswd.users nagiosadmin
 New password: 
 Re-type new password: 
 Adding password for user nagiosadmin

Installation sous Redhat 5.4 EL via les sources

Prérequis

  • Il faut disposer d'un serveur web avec PHP, la librairie GD et des outils de compilation (gcc & co) :
yum install httpd
yum install gd gd-devel
yum install gcc glibc glibc-common
  • création des utilisateurs et groupes qui seront utilisés par Nagios
# groupadd nagios
# groupadd nagcmd
# useradd -g nagios -G nagcmd -c "Nagios Admin" nagios

Nagios core

La dernière version de nagios “gratuit” (renommé nagios core, en opposition avec nagios XI qui est la version “pro”) en date à l'heure actuelle est la 3.2.1.

  • téléchargement + décompression
$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
$ tar -zxf nagios-3.2.0.tar.gz
$ cd nagios-3.2.0
  • configurer les options de compilation :
$ ./configure --enable-event-broker --enable-embedded-perl --with-command-group=nagcmd
  • L'option –enable-event-broker n'est pas utile si on utilise juste Nagios et ses plugins de base ; en revanche si on veut utiliser l'addon NDOutils (par exemple) il faut l'activer.
  • –enable-embedded-perl permet de pouvoir utiliser le moteur d'exécution de perl intégré à nagios (je paraphrase ^^). Il permet d'optimiser l'exécution des plugins perl donc il est conseillé.
  • –with-command-group=nagcmd permet de spécifier le groupe de l'utilisateur (par défaut nagios) qui lancera les command-group.
  • lancer la compilation
$ make all
  • installation : ceci se fait en root

Ceci va copier les fichiers générés aux bons endroits :

  • make install : installe les binaires, CGI et fichiers HTML
  • make install-init : installe le script de démarrage dans /etc/rc.d/init.d
  • make install-commandmode : configuration du répertoire et du pipe pour les commandes externes (/usr/local/nagios/var/rw/nagios.cmd)
  • make install-config : install les modèles de configuration par défaut dans /usr/local/nagios/etc
  • make install-webconf : installation du fichier de configuration d'Apache pour Nagios. Ce dernier sera accessible sur http://127.0.0.1/nagios/
# make install
# make install-init
# make install-commandmode
# make install-config
# make install-webconf
  • limitation de l'accès à Nagios : protection par authentification

On utilise un htaccess (protection fourni par nagios) pour demander un login/mot de passe pour avoir accès à l'interface web de Nagios.

<note> Attention, le mot de passe transite en clair entre votre machine et le serveur Nagios. Pour une vraie protection, il faut passer en SSL (HTTPS). </note>

On ajoute l'utilisateur nagiosadmin au fichier htpasswd.users qui contient les couples login/mot de passe hashé. Puis on donne l'accès au fichier à l'utilisateur apache, sur lequel doit tourner le service httpd.

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
# chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users
# usermod -a -G nagios,nagcmd apache
  • lancement de nagios au démarrage du système

Configuration pour que Nagios se lance automatiquement au démarrage du système :

# chkconfig --add nagios
# chkconfig nagios on
  • redémarrage du serveur web pour qu'il prenne en compte sa nouvelle configuration
service httpd restart

Avant d'avoir un Nagios qui fonctionne correctement, il reste 2 étapes :

  • installer les plugins “de base” (nagios-plugins)
  • lancer le service nagios

Nagios-plugins

Ce pack contient tous les plugins de base de Nagios (d'autres pourront être ajoutés plus tard).

  • téléchargement et décompression
$ wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
$ tar zxf nagios-plugins-1.4.14.tar.gz
$ cd nagios-plugins-1.4.14
  • configuration des options de compilation
$ ./configure --with-command-group=nagcmd --enable-perl-modules

Les options suivent la logique de compilation de Nagios.

  • compilation
$ make
  • installation
# make install
  • vérification de la configuration de Nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  • enfin, on lance Nagios
service nagios start

Configuration

Les fichiers principaux se trouvent dans /etc/nagios3/ : nagios.cfg et cgi.cfg.

Contacts et groupes de contacts

On renseigne les personnes de contact (qui seront notifiées lors d'un problème) dans le fichier /etc/nagios3/conf.d/contacts_nagios2.cfg. Exemple de déclaration :

define contact{
        contact_name                    root
        alias                           Root
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           root@localhost
        }

On voit, dans l'ordre, le nom d'utilisateur, le nom complet, les périodes de notifications pour les “service” et les “host”, les options de notification, et les moyens de notification. Chaque valeur est un objet défini dans la configuration de Nagios (on retrouve par exemple les périodes de temps), alors que les options de notifications définissent le degré d'alerte.

Pour les services (service_notification_options) :

  • w (Warning) : avertissement
  • u (Unknown) : inconnu
  • c (Critical) : critique
  • r (Recovery) : retour à l'état normal (up)

Pour les machines (host_notification_options) :

  • d (Down) : machine éteinte
  • u (Unreachable) : machine injoignable
  • r (Recovery) : retour à l'état normal (up)

On définit dans ce même fichier les groupes de contact :

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 root
        }

Droits des contacts

Pour attribuer des droits à un utilisateur, il faut éditer le fichier /etc/nagios3/cgi.cfg et ajouter les noms d'utilisateurs après les directives idoines, séparés par des virgules ; par exemple :

authorized_for_system_information=nagiosadmin,toto

Périodes de temps

On peut consulter ou définir des périodes de temps dans le fichier /etc/nagios3/conf.d/timeperiods_nagios2.cfg. Voici un exemple de déclaration :

define timeperiod{
        timeperiod_name 24x7
        alias           24 Hours A Day, 7 Days A Week
        sunday          00:00-24:00
        monday          00:00-24:00
        tuesday         00:00-24:00
        wednesday       00:00-24:00
        thursday        00:00-24:00
        friday          00:00-24:00
        saturday        00:00-24:00
        }

Déclaration d'un host

Ça se passe dans le fichier /etc/nagios3/conf.d/localhost_nagios2.cfg :

define host{
        use                     generic-host
        host_name               routeur1
        alias                   Routeur passerelle R1
        address                 192.168.0.254
        check_command           check-host-alive
        }

Cet host utilise le template generic-host qui définit tous les paramètres nécessaires par défaut. On peut surcharger l'objet càd redéfinir les paramètres du template en modifiant leurs valeurs.

Création de hostgroup

On doit mettre chaque host dans un hostgroup, défini dans le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg :

define hostgroup {
        hostgroup_name  routeurs
        alias           Debian GNU/Linux Servers
        members         routeur1
        contact_groups  admins-routeur
        }

Création d'un service

Ils sont déclarés dans le fichier /etc/nagios3/conf.d/service_nagios2.cfg

define service {
        hostgroup_name                  ping-servers
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

Ce service utilise le greffon check_ping ; en fonction du retour de ce dernier, on passe à différents niveau d'alerte :

  • un temps de réponse > 100 ms ou 20% de perte et on passe à l'état WARNING
  • un temps de réponse > 500 ms ou 60% de perte et on passe à l'état CRITICAL

L'intervalle de notification (notification_interval) indique si l'alerte doit être répétée si le problème perdure.

D'autres arguments sont intéressants à utiliser :

  • normal_check_interval 5 définit l'intervalle de check du service, en minutes
  • max_check_attempts 3 définit le seuil au delà duquel le service passe en HARD state
  • retry_check_interval 1 si le statut du service est nOK, on passe en SOFT state et on reteste le service toutes les X minutes

Vérifications

Pour vérifier la validité de la configuration de Nagios sans relancer le démon :

nagios3 -v /etc/nagios3/nagios.cfg

(très utile quand on travaille sur de la prod !)

Problèmes et solutions

Installation du paquet Ubuntu par défaut

Sous Ubuntu (9.10) il y a 2 problèmes avec l'installation par défaut :

  • problème avec le plugin check_ssh : en fait il n'y a pas de serveur SSH installé sous Ubuntu par défaut. Pour l'installer il faut installer le paquet openssh-server.
  • * problème de droit d'accès avec le plugin check_disk : DISK CRITIQUE - /home/<user>/.gvfs is not accessible: Permission non accordée

Pour ignorer le fichier qui pose ce problème de droit d'accès, il faut éditer la configuration du plugin check_disk et ajouter à la fin de la ligne : -A -i .gvfs

sudo vi /etc/nagios-plugins/config/disk.cfg
# 'check_all_disks' command definition
define command{
   command_name    check_all_disks
   #ancienne ligne
   #command_line   /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e
   #nouvelle ligne
   command_line    /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -A -i .gvfs
   }

Puis il faut recharger la conf dans Nagios :

sudo service nagios3 stop
 * Stopping nagios3 monitoring daemon nagios3                                                               

sudo service nagios3 start                              [ OK ]
 * Starting nagios3 monitoring daemon nagios3
kill: 1: No such process                                [ OK ]

source : https://help.ubuntu.com/community/Nagios3#Post%20Install%20Tasks

Liens

informatique/logiciels/nagios.1271327896.txt.gz · Last modified: 2013/10/14 20:55 (external edit)