55
Nagios ALLOVON Olivier DEVES Nicolas MOULIN Yoann ROGER Rémi SAUVAJON Brice

1 - Presentation Nagios

Embed Size (px)

Citation preview

Page 1: 1 - Presentation Nagios

Nagios

ALLOVON OlivierDEVES Nicolas

MOULIN YoannROGER Rémi

SAUVAJON Brice

Page 2: 1 - Presentation Nagios

Plan

n Présentation de l’outiln Les fichiers de configurationn Les pluginsn Nagios et SNMPn Etude de cas et cahier des charges

Page 3: 1 - Presentation Nagios

Présentation de Nagios

n Fonctionnementn Interfacen Installation

Page 4: 1 - Presentation Nagios

Historique de Nagios

n Explosion des systèmes d’informations vers le milieu des années 90.

n Décentralisation et baisse des coûts des systèmes d’informationsØ Besoin de supervision de ces nouveaux

systèmes.Ø Naissance de Nagios en 1999 (license GPL)

Page 5: 1 - Presentation Nagios

Fonctionnement

Page 6: 1 - Presentation Nagios

FonctionnementQuelques plugins par catégorie:n Equipement

n Test de l’espace disque disponiblen Charge du système en temps réeln Test du Swap disquen Monitoring de température

n Réseaux-protocolesn Applicatifsn Servicesn Clients

Page 7: 1 - Presentation Nagios

FonctionnementQuelques plugins par catégorie:n Equipementn Réseaux-protocoles

n Vérifie si un hôte est vivant sur le réseau (ICMP)n Taux de transfert d’un routeur ou switchn Test des réseaux NetWaren Test de la couche Transport (UDP)

n Applicatifsn Servicesn Clients

Page 8: 1 - Presentation Nagios

FonctionnementQuelques plugins par catégorie:n Equipementn Réseaux-protocolesn Applicatifs

n Encapsulation de requête en utilisant SSHcomme support

n Test des serveurs Radius

n Servicesn Clients

Page 9: 1 - Presentation Nagios

FonctionnementQuelques plugins par catégorie:n Equipementn Réseaux-protocolesn Applicatifsn Services

n Vérification de l’état de serveurs :n DNSn FTPn Pop/Imap…

n Clients

Page 10: 1 - Presentation Nagios

FonctionnementQuelques plugins par catégorie:n Equipementn Réseaux-protocolesn Applicatifsn Servicesn Clients

n Valide le bon fonctionnement des clients Nagiosn Test des serveurs et client NT

Page 11: 1 - Presentation Nagios

Fonctionnement

Possibilités de NAGIOS :n Monitoring à distance à travers un

firewall.n Interface webn Il est possible de définir plusieurs

serveurs esclaves qui prennent le relais si le serveur maître tombe.

Page 12: 1 - Presentation Nagios

Interface

Page 13: 1 - Presentation Nagios

Interface

Page 14: 1 - Presentation Nagios

Interface

Page 15: 1 - Presentation Nagios

Interface

Page 16: 1 - Presentation Nagios

Interface

Page 17: 1 - Presentation Nagios

Interface

Page 18: 1 - Presentation Nagios

Interface

Page 19: 1 - Presentation Nagios

Interface

Page 20: 1 - Presentation Nagios

Interface

Page 21: 1 - Presentation Nagios

Installationn Système Unix (portage sur d’autre

système possible)n Compilateur Cn Compilation des binaires / package

Debiann Nécessité d’un serveur apache(ou

autre) pour une interface webn TCP/IP doit être configuré

Page 22: 1 - Presentation Nagios

Fichiers de configuration

Page 23: 1 - Presentation Nagios

Mode Configuration

n Représentation de type Objetn Attributn Méthode

n Dépendance entres les Objetsn 1 Fichier pour chaque type d'objet

Page 24: 1 - Presentation Nagios

Configuration de Nagiosn On remplit un certain nombre de fichiers de

configuration:n Fichier contact.cfgn Fichier contactgroups.cfgn Fichier host.cfgn Fichier hostgroups.cfgn Fichier services.cfgn Fichier timeperiods.cfgn Fichier command.cfgn Fichier checkcommand.cfgn Fichier dependencies.cfgn Fichier escalations.cfg

Page 25: 1 - Presentation Nagios

Arbre de dépendance

Page 26: 1 - Presentation Nagios

Fichier nagios/contacts.cfg.n Un contact définit une personne

à prévenir dans les cas ou un « reporting » est demandé.

n On définit n le nom du contact (identifiant

pour faire référence à ce contact dans les autres fichiers)

n son aliasn les périodes de notification par

défautn Les méthodes de notification

par défautn les éléments nécessaires pour

communiquer avec ce contact

define contact{

contact_name ROOTalias NAGIOS ADMservice_notification_period 24x7host_notification_period 24x7service_notification_options w,u,c,rhost_notification_options d,u,rservice_notification_commands

notify-by-email,notify-by-epagerhost_notification_commands host-

notify-by-email,host-notify-by-epager

email [email protected] [email protected]

}

Page 27: 1 - Presentation Nagios

Fichier nagios/contactgroups.cfg.n Un groupe de contacts

permet de regrouper un ou plusieurs contactspour émettre des notifications.

n On définira pour chaque groupe créé :n un nom de groupe (qui

permettra d'identifier le groupe dans les autres fichiers)

n un aliasn les membres du groupe

(définis dans contact.cfg)

define contactgroup{

contactgroup_nameGrContact1

alias Groupe Numéro 1members ROOT,USR1

}

Page 28: 1 - Presentation Nagios

Fichier nagios/hosts.cfg.n Une définition d'hôte s'applique

à un serveur "physique", une station de travail, un périphérique, un équipement, qui se trouve sur votre réseau.

n On le définit par:n le modèle à utilisern le nom de la machine (pour y

faire référence dans les fichiers de configuration)

n un aliasn l'adresse IP de la machinen la commande à exécuter pour

vérifier l’accessibilité de la machine (définie dans nagios/checkcommands.cfg)

n les paramètres de notification

define host{

use modèle1host_name machine1alias MaMachineaddress 127.0.0.1check_command commande1max_check_attempts 20notification_interval 60notification_period 24x7 notification_options d,u,r

}

Page 29: 1 - Presentation Nagios

Fichier nagios/hostgroups.cfgn Un groupe d'hôtes permet de

regrouper un ou plusieurs hôtes pour simplifier les notifications.

n On définira ici pour chaque groupe créé :n un nom de groupe

(permettant d'identifier le groupe dans les autres fichiers)

n un alias n les groupes de contacts à y

associern une liste de machines à

associer au groupe

define hostgroup{

hostgroup_name GrMachine1alias Groupe 1 de machines contact_groups GrContact1members Machine1,

Machine2}

Page 30: 1 - Presentation Nagios

Fichier nagios/services.cfgn Un service identifie une ressource

ou un service à surveiller sur une machine

n On définit:n le modèle à utilisern l'identifiant de la machine concernéen le nom du service voulun les paramètres liés à l’exécution de

la vérification du servicen le groupe de contact concerné par

les notificationsn les paramètres de notificationn la commande à exécuter pour

vérifier le bon fonctionnement du service (avec ses arguments)

define service{

use generic-servicehost_name Machine1service_description PINGis_volatile 0 check_period 24x7 max_check_attempts 3normal_check_interval 5retry_check_interval 1 contact_groups GrContact1notification_interval 240 notification_period 24x7 notification_options c,r check_command

check_ping!100.0,20%!500.0,60%

}

Page 31: 1 - Presentation Nagios

Les optionsn Intervalles de temps : minutesn Options de notification

n Pour un service : n w = envoi de la notification pour un état WARNINGn u = envoi de la notification pour un état UNKNOWNn r = envoi de la notification pour le retour à la normalen n (none)

n Pour un hôte : n d = envoi de la notification pour un état DOWNn u = envoi de la notification pour un état UNREACHABLEn r = envoi de la notification pour le retour à la normale n n (none)

Page 32: 1 - Presentation Nagios

Fichier nagios/timeperiod.cfg

n Définit une tranche horaire pour connaître la disponibilité d'un objet

define timeperiod{

timeperiod_name nonworkhoursalias Non-Work Hourssunday 00:00-24:00 monday 00:00-09:00,17:00-24:00 tuesday 00:00-09:00,17:00-24:00 wednesday 00:00-09:00,17:00-24:00 thursday 00:00-09:00,17:00-24:00 friday 00:00-09:00,17:00-24:00 saturday 00:00-24:00

}

Page 33: 1 - Presentation Nagios

Fichier nagios/checkcommand.cfg

n Associe le nom d'une commande à un script avec ces paramètres

n define command{command_name command_namecommand_line command_line}

Page 34: 1 - Presentation Nagios

Fichier nagios/dependencies.cfg

n Définit la dépendance entre host ou servicen Supprime les cascades d'alertesn Si un service ou un host tombe, les alertes des host et

services qui en dépendent ne sont pas envoyés

Page 35: 1 - Presentation Nagios

Fichier nagios/dependencies.cfg

n define servicedependency{

dependent_host_name host_namedependent_service_description service_descriptionhost_name host_nameservice_description service_descriptionexecution_failure_criteria [o,w,u,c,n]notification_failure_criteria[o,w,u,c,n]

}

n define hostdependency{

dependent_host_name host_namehost_name host_namenotification_failure_criteria [o,d,u,n]

}

Page 36: 1 - Presentation Nagios

Fichier nagios/escalations.cfg

n Permet de définir une cascade d'alerte si un service ou un host vient à tomber

n Fonctionnalité optionnelle

Page 37: 1 - Presentation Nagios

Fichier nagios/escalations.cfgn define serviceescalation

{host_name host_nameservice_description service_descriptioncontact_groups contactgroup_namefirst_notification #last_notification #notification_interval #}

n define hostescalation{host_name host_namecontact_groups contactgroup_namefirst_notification #last_notification #notification_interval #}

Page 38: 1 - Presentation Nagios

Fichier nagios/escalations.cfg

n Permet de définir une cascade d'alerte pour un groupe d'host si un des hosts du groupe vient à tomber

n Fonctionnalitéoptionnelle

Define hostgroupescalation{

hostgroup_namehostgroup_name

contact_groupscontactgroup_name

first_notification #last_notification #notification_interval #

}

Page 39: 1 - Presentation Nagios

Les plugins Nagios

Page 40: 1 - Presentation Nagios

Les plugins Nagios : présentation

n Pas de mécanisme interne dans Nagiospour vérifier l’état d’un hôte, un service, etc…

n Utilisation de programmes externes appelés plugins

n Les plugins permettent de contrôler une ressource ou un service local ou distant

Page 41: 1 - Presentation Nagios

Les plugins Nagios : présentation

Page 42: 1 - Presentation Nagios

Les plugins Nagios : présentationn Programmes exécutables ou scripts

(perl, shell, etc…)n Nagios teste la valeur retournée par le

plugin pour savoir l’état de la ressource ou du service contrôlé

n N’importe qui peut développer son propre plugin afin de surveiller un service spécifique

Page 43: 1 - Presentation Nagios

Les plugins Nagios : développement

n Peu importe le langage de programmation : C, shell, perl, …

n Doit renvoyer une valeur entre 0 et 3 :

Unknown3

Critical2

Warning1

OK0

StatutValeur

Page 44: 1 - Presentation Nagios

Les plugins Nagios : développement

n Doit afficher un message court sur la sortie standard (1 ligne, max 80 caractères)

n Remarque : Indiquer le chemin absolu des appels systèmes utilisés

Page 45: 1 - Presentation Nagios

Les plugins Nagios : exécution à distancen Utilisation de l’addon NRPE (Nagios

Remote Plugin Executor)n NRPE comprend un agent nrpe qui

tourne sur la machine distante et un plugin check_nrpe sur la machine Nagios

n Le plugin check_nrpe fait une requête à l’agent en demandant l’exécution d’un plugin sur la machine ou tourne l’agent

Page 46: 1 - Presentation Nagios

Les plugins Nagios : exécution à distance

n L’agent exécute le plugin demandé et renvoie le résultat au plugin check_nrpede la machine Nagios

n Le plugin check_nrpe renvoie la sortie du plugin distant et le code de retour àNagios comme si c'était le sien

Page 47: 1 - Presentation Nagios
Page 48: 1 - Presentation Nagios

Les plugins Nagios : configuration de Nagiosn Dans les fichiers services.cfg et hosts.cfg,

on indique la commande à utiliser pour contrôler un service ou une machine

n Ces commandes sont définies dans le fichier checkcommands.cfg. C’est dans ce fichier qu’est indiquée la ligne de commande à exécuter

Page 49: 1 - Presentation Nagios

Gestion des traps SNMP

Page 50: 1 - Presentation Nagios

Gestion des traps SNMP

n 2 types de contrôles sous Nagios :n Contrôles actifs, réalisés par Nagiosn Contrôles passifs, réalisés par des

applications externes et dont le résultat est soumis à Nagios

n Gestion des traps SNMP par un contrôle passif : c’est le gestionnaire SNMP (ex : net-snmp) qui reçoit les traps et alerte Nagios

Page 51: 1 - Presentation Nagios

Gestion des traps SNMP

n Sur le gestionnaire SNMP il faut créer un handler pour chaque trap à gérer (fichier /etc/snmptrapd.conf pour net-snmp)

n Le handler soumet un résultat (de 0 à 3) à Nagios, soit en écrivant dans un fichier (/usr/local/nagios/var/rw/nagios.cmd), soit en utilisant NSCA

Page 52: 1 - Presentation Nagios

NSCA

n Permet d'envoyer des résultats de contrôles passifs de services à un autre serveur sur le réseau sur lequel tourne Nagios.

n 2 parties :n nsca : démon qui tourne sur le serveur

Nagiosn send_nsca : programme client exécuté sur

la machine qui veut envoyer un résultat

Page 53: 1 - Presentation Nagios

OU

Source de trapsSNMP

NAGIOS

nsca

Gestionnaire SNMP (net-

snmp)

send_nsca

trap

Cas où le gestionnaire SNMP est sur une

machine distincte de Nagios

Source de trapsSNMP

NAGIOS

Gestionnaire SNMP (net-

snmp)

fichier

trap

Cas où le gestionnaire SNMP est sur la même

machine que Nagios

Page 54: 1 - Presentation Nagios

Etude de cas

Page 55: 1 - Presentation Nagios