Personal tools
You are here: Home Conférences RMLL-nagios.tex
Navigation
Log in


Forgot your password?
 
Document Actions

RMLL-nagios.tex

source .tex

Click here to get the file

Size 19.6 kB - File type text/x-tex

File contents

\documentclass[11pt]{beamer}
\usepackage[latin1]{inputenc} % pour les accents
\usepackage[T1]{fontenc} % pour les accents
\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps}
\usepackage{times, amsmath,amssymb}
\usepackage{graphicx}
\DeclareGraphicsExtensions{.jpg,.png,.eps}
% THEME BEAMER j'aime bien Berkeley pas mal Copenhagen
% pas mal Goettingen (menu à droite, clair) - 
% pas mal Marburg (menu à droite, sombre degradé)
% Pas mal Montpellier (mais rappel des sections serait bien)
% pas mal Singapore (menu en haut, clair) 
%\usetheme{Berkeley}
\usetheme{Berkeley}
% PACKAGE CONTENANT LES MACROS
%\usepackage{macroLMAC} 
%\logo(){\insertframenumber/\inserttotalframenumber}

%I DONT WANT TO SEE THOSE NAVIGATION SYMBOLS
\setbeamertemplate{navigation symbols}{}

\setbeamertemplate{footline}[frame number]




% INFO DOCUMENT - TITRE, AUTEUR, INSTITUTION
\title{Monitoring de serveurs}
\subtitle{Utilisation de Nagios et nrpe}
\author[Aurélie Chaumat]{Aurélie Chaumat (zopeuse$@$gmail.com)}
\institute[LinuxChix]{
Coordinatrice de LinuxChix en France \textbf{http://linuxchixfrance.org}
\and
  Membre de ALDIL : Association Lyonnaise pour le développement\\
  de l'Informatique Libre
  }
\date{Les nocturnes - RMLL 2007}

%------------------------------------------------------------------------------
\begin{document}

% PAGE D'ACCUEIL
\frame{\titlepage}

\section<presentation>*{Introduction}


% ANNONCE DU PLAN
\frame{
  \frametitle{Plan}
  \tableofcontents[part=1,pausesections]
}

% Avec cette commande, le plan sera rappelé 
% à chaque changement de sous-section
\AtBeginSection[]{
  \frame<handout:0>{
    \frametitle{Plan}
    \tableofcontents[current,currentsection]
  }
}

% PRESENTATION 'VISIBLE' (HORS ANNEXES)
\part<presentation>{Main Talk}

%%%%%%%%%%% section %%%%%%%%%%%%%
\section[Présentation]{Présentation de Nagios}


\frame{
  \frametitle{Présentation de Nagios}
 \begin{itemize}
  \item C'est un outil de monitoring avec interface web et un système de
  notifications
  \item En GPL
  \item Avec un système de plugins 
  \item Afin de superviser des ressources et des services réseaux.
  \end{itemize}
}

\begin{frame}[fragile]
  \frametitle{Tactical Overview}
  \begin{figure}
  \includegraphics[scale=0.4]{nagios-tactical-overview.jpg}%
   \end{figure}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Disponibilité réseau}
  \begin{figure}
  \includegraphics[scale=0.5]{nagios-availability.jpg}%
   \end{figure}
\end{frame}

\frame{
  \frametitle{Comment fonctionne Nagios}
 \begin{itemize}
  \item Un moteur pour ordonnancer la supervision
  \item Les plugins pour savoir quoi superviser
  \item Une interface web pour visualiser rapidement ce que l'on monitore
  \end{itemize}
}


\frame{
  \frametitle{La théorie des plugins }
 \begin{center}
\begin{figure}
\includegraphics[scale=0.5]{nagios-plugintheory.png}% 
\end{figure}
\end{center}
}



\begin{frame}[fragile]
 \frametitle{Chaque test pour un hôte ou un service renvoie un état}
\begin{tabular}{cc}
\begin{minipage}[c]{4cm}
 \begin{enumerate}
 \item PENDING (en attente de check, aucune valeur disponible)
 \item UP (ouf :) )
 \item DOWN (zut alors...)
 \item UNKNOWN (problème sur l'hôte ?)
 \end{enumerate}
   \end{minipage}
 &
  \begin{minipage}[c]{5.5cm}
  \begin{enumerate}
\item OK (valeur inférieure au seuil d'alerte)
\item WARNING (seuil d'alerte dépassé)
\item CRITICAL (seuil d'alerte critique dépassé)
\item UNKNOWN (état du service inconnu)
\item UNREACHABLE (innacessible)
\end{enumerate}
\end{minipage}
\end{tabular}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Les problèmes pour les hôtes}
  \begin{figure}
  \includegraphics[scale=0.4]{nagios-host-problems.jpg}%
   \end{figure}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Les problèmes pour les services}
  \begin{figure}
  \includegraphics[scale=0.4]{nagios-service-problems.jpg}%
   \end{figure}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Les états pour les groupes}
  \begin{figure}
  \includegraphics[scale=0.4]{nagios-hostgroup.jpg}%
   \end{figure}
\end{frame}

%%%%%%%%%%% section %%%%%%%%%%%%%
\section[Le serveur Nagios]{Configuration du serveur Nagios}

\frame{
  \frametitle{On a besoin de}
 \begin{itemize}
  \item De Nagios et Nagios-plugins http://www.nagios.org/download/
  \item Lire les README et INSTALL 
  \item Des dépendances de ces paquets
  \item D'un serveur smtp
  \end{itemize}
}
\frame{
  \frametitle{Installation}
 \begin{itemize}
  \item Paquets de votre distribution ou compilation manuelle (./configure, make, make install )
  \item Installation d'un serveur smtp (pour les notifications)
  \item Créer un utilisateur pour l'interface : htpasswd.users 
        sudo htpasswd /etc/nagios/htpasswd.users username
  \end{itemize}
}
\begin{frame}[fragile]
  \frametitle{La configuration}
 \begin{itemize}
  \item /etc/nagios/ 
  \item /etc/nagios/nagios.cfg
  \item Fichiers séparés dans /etc/nagios/ (soit /etc/nagios/conf.d/)
  \item Les plugins : /usr/lib/nagios/plugins/
  \end{itemize}
\end{frame}

 
\frame{
  \frametitle{Dans nagios.cfg 1/3}
 \begin{itemize}
  \item Command definitions
  \begin{itemize}
   \item Soit cfg\_file=/etc/nagios/commands.cfg
   \item Soit cfg\_dir=/etc/nagios/conf.d
  \end{itemize}
  \item Plugins : cfg\_dir=/usr/lib/nagios/plugins/
  \item Stockage des données  :
  \begin{itemize}
   \item comment\_file=/var/log/nagios/comments.dat
   \item downtime\_file=/var/log/nagios/downtime.dat
  \end{itemize}
  \end{itemize}
}

\frame{
  \frametitle{Dans nagios.cfg 2/3}
 \begin{itemize}
  \item RUN AS : nagios\_user=nagios et nagios\_group=nagios
  \item Logs : log\_file=/var/log/nagios/nagios.log
  \item log\_rotation\_method=d (daily, none, hourly, weekly, monthly (?))
  \item log\_archive\_path=/var/log/nagios/archives
  \item log\_notifications=1
  \item log\_service\_retries=1
  \item ...
  \item log\_passive\_checks=1
  \end{itemize}
}
\frame{
  \frametitle{Dans nagios.cfg 3/3}
 \begin{itemize}
  \item enable\_notifications=1
  \item PROCESS PERFORMANCE DATA OPTION
  \item ...
  \end{itemize}
}

\frame{
  \frametitle{Dans nagios/conf.d}
 \begin{itemize}
  \item 1 fichier par machine à monitorer host-hostname\_nagios2.cfg
  \item contacts\_nagios2.cfg          
  \item extinfo\_nagios2.cfg 
  \item 1 fichier par modèle d'hôte : generic-host\_nagios2.cfg
  \item 1 fichier par modèle de service : generic-service\_nagios2.cfg
  \item services\_nagios2.cfg
  \item localhost\_nagios2.cfg
  \item timeperiods\_nagios2.cfg
  \item hostgroups\_nagios2.cfg
  \end{itemize}
}

\begin{frame}[fragile]
  \frametitle{Un fichier host-hostname\_nagios2.cfg }
  \begin{block}{host-serveur01\_nagios2.cfg}
  \begin{verbatim}
  # a host definition
  define host {
        host_name   serveur01
        alias       DHCP-01
        address     X.X.X.2
        use         generic-host
        parents	    gateway01
	}
  \end{verbatim}
  \end{block}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Les parents}
  \begin{tabular}{cc}
\begin{minipage}[c]{5.5cm}
  \begin{figure}
  \includegraphics[scale=0.5]{srv-sw.pdf}%
  \end{figure}
  \end{minipage}
 &
  \begin{minipage}[c]{4.5cm}
  \begin{block}{Les hôtes}
  \begin{scriptsize}
  \begin{verbatim}
   define_host{
   host_name 	gateway-1 }
   define_host{
   host_name 	switch-00 
   parents	gateway-1 }
   define_host{
   host_name 	switch-10 
   parents	switch-00 }
   define_host{
   host_name 	server-11 
   parents	switch-10 }
   ...      
   \end{verbatim}
   \end{scriptsize}
   \end{block}
   \end{minipage}
   \end{tabular}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Le schéma selon Nagios}
  \begin{figure}
  \includegraphics[scale=0.5]{nagios-map1.jpg}%
   \end{figure}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Un modèle d'hôte generic-host\_nagios2.cfg}
  \begin{scriptsize}
  \begin{verbatim}
# Generic host definition template - 
# This is NOT a real host, just a template!

define host{
 name                         generic-host ; host template
 notifications_enabled        1 ; Host notifications 
 event_handler_enabled        1 ; Host event handler 
 flap_detection_enabled       1 ; Flap detection 
 failure_prediction_enabled   1 ; Failure prediction 
 process_perf_data            1 ; Process performance data
 retain_status_information    1 ; Retain status information 
 retain_nonstatus_information 1 ; Retain non-status information 
 check_command                check-host-alive
 max_check_attempts           10
 notification_interval        0
 notification_period          24x7
 notification_options         d,u,r
 contact_groups               admins
 register                     0 ; DONT REGISTER THIS DEFINITION
        }

  \end{verbatim}
  \end{scriptsize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Un modèle de service : host-service\_nagios2.cfg}
  \begin{tiny}
  \begin{verbatim}
 define service{
   name                            generic-service ; The 'name' of this template
   active_checks_enabled           1  ; Active service checks are enabled
   passive_checks_enabled          1  ; Passive service checks are accepted
   parallelize_check               1  ; Active service checks should be parallelized
   obsess_over_service             1  ; We should obsess over this service
   check_freshness                 0  ; Default is to NOT check service 'freshness'
   notifications_enabled           1  ; Service notifications are enabled
   event_handler_enabled           1  ; Service event handler is enabled
   flap_detection_enabled          1  ; Flap detection is enabled
   failure_prediction_enabled      1  ; Failure prediction is enabled
   process_perf_data               1  ; Process performance data
   retain_status_information       1  ; Retain status information across program restarts
   retain_nonstatus_information    1  ; Retain non-status information across program restarts
   notification_interval           0  ; Only send notifications on status change by default.
   is_volatile                     0
   check_period	                   24x7
   normal_check_interval           5
   retry_check_interval            1
   max_check_attempts              4
   notification_period             24x7
   notification_options            w,u,c,r
   contact_groups                  admins
   register                        0   ; DONT REGISTER THIS DEFINITION 
                                  - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }
  \end{verbatim}
  \end{tiny}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Hostgroups }
  \begin{block}{hostgroups\_nagios2.cfg}
  \begin{verbatim}
  # A list of the GRID project servers
define hostgroup {
  hostgroup_name  grid-servers
  alias           GRID servers pool 1
  members         grid01,grid02,grid03,[...]
  }
  \end{verbatim}
  \end{block}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Résumé pour tous les groupes}
  \begin{figure}
  \includegraphics[scale=0.4]{nagios-hostgroup-sum.jpg}%
   \end{figure}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Liste des services}
  \begin{block}{services\_nagios2.cfg}
  \begin{verbatim}
# check that web services are running
define service{
 hostgroup_name             http-servers
 service_description        HTTP
 check_command              check_http
 use                        generic-service
   }
  \end{verbatim}
  \end{block}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Timeperiods}
  \begin{block}{timeperiods\_nagios2.cfg}
  \begin{scriptsize}
    \begin{verbatim}
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
        }
# This one is a favorite: never :)
define timeperiod{
        timeperiod_name never
        alias           Never
        }
  \end{verbatim}
  \end{scriptsize}
  \end{block}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Contacts }
  \begin{block}{contacts\_nagios2.cfg}
  \begin{scriptsize}
  \begin{verbatim}
define contact{
 contact_name                    achaumat
 alias                           NagiosUser01
 service_notification_period     24x7
 host_notification_period        24x7
 service_notification_options    w,u,c,r,f
 host_notification_options       d,r
 service_notification_commands   notify-by-email
 host_notification_commands      host-notify-by-email
 email                           xxxxxxx_AT_xxxxxxxx.xxx
}
  \end{verbatim}
  \end{scriptsize}
  \end{block}
\end{frame}



%%%%%%%%%%% section %%%%%%%%%%%%%
\section[Hôtes distants - NRPE]{Configuration de NRPE}

\frame{
  \frametitle{A distance}
 \begin{itemize}
  \item Nrpe ou Nsca
  \item Dépôt de plugins et d'un agent passif sur la machine distante
  \item Le serveur central intérroge l'agent passif
  \item Liaison via SSL, SSH
  \item Ici on va prendre comme exemple nrpe : plugin : check\_nrpe
  \end{itemize}
}

\begin{frame}[fragile]
  \frametitle{Sur les clients on rajoute }
    \begin{block}{les paquets}
    \begin{verbatim}
fping
perl-Net-SNMP
perl-Digest-SHA1
perl-Socket6
perl-Crypt-DES
perl-Digest-HMAC
nagios-plugins
nagios-nrpe 
  \end{verbatim}
    \end{block}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Configuration du client}
    \begin{block}{Le client sera interrogé par le serveur nagios}
    Ici j'ai pris comme example de l'espace utilisé des disques durs
    \end{block}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Sur le serveur nagios }
  \begin{itemize}
  \item On rajoute un groupe d'hôtes ressources-nrpeclients
  \item On rajoute les services pour les hôtes de ce groupe
  \end{itemize}
  
  \begin{block}{Dans les services on rajoute}
  \begin{scriptsize}
  \begin{verbatim}
define service {
  use                  generic-service
  hostgroup_name       ressources-nrpeclients
  service_description  /
  check_command        check_nrpe!check_slash
  name                 check_slash
 }
  \end{verbatim}
  \end{scriptsize}
  \end{block}
\end{frame}


\begin{frame}[fragile]
  \frametitle{On va configurer le client nrpe sur l'hôte distant}
    \begin{itemize}
\item Faire un df, noter les devices pour / et /var. / = /dev/mapper/VolGroup00-LogVol00 et /var = /dev/sda2
\item Dans le fichier de configuration : /etc/nagios/nrpe.cfg ne rien toucher
(configuration par défaut pour un unique serveur distant) SAUF :\begin{scriptsize}
\begin{verbatim}command[check_var]=/usr/lib/nagios/plugins/check_disk 
-w 20 -c 10 -p /dev/sda2 
\end{verbatim}
\end{scriptsize}
\item Dans /etc/services : nrpe 5666/tcp
\item Dans le fichier /etc/hosts.allow rajouter la ligne : nrpe : X.X.X.X 
\item Ensuite sur le serveur, tester en console : \begin{scriptsize} \begin{verbatim}/usr/lib/nagios/plugins/check_nrpe -H machineXX.blabla.fr -c check_var 
DISK OK - free space: /var 1875 MB (40\% inode=96\%);|/var=2800MB;4905;4915;0;4925 \end{verbatim}
\end{scriptsize}
\end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Exemple de services monitorables : hardware}
 \begin{itemize} 
\item utilisation du swap / ram / disques durs 
\item sensors 
\end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Exemple de services monitorables : software}
 \begin{itemize}
\item Services ntp, ssh, http, dhcp (renvoie le temps pour obtenir un dhcpoffer), smtp, ldap, UPS, ...
\item Systèmes : nb processes, nb users connectés, charge (load), ...
\end{itemize}
\end{frame}

\begin{frame}[fragile]
\frametitle{Exemple de services monitorables}
\begin{exampleblock}{Configuration pour le service de ntp}
\begin{scriptsize}
\begin{verbatim}
define service {
 use            generic-service
 hostgroup_name         nrpe-clients
 service_description    time
 check_command          check_nrpe!check_ntp
 name            check_time
}
\end{verbatim}
\end{scriptsize}
\end{exampleblock}
\end{frame}


\frame{
  \frametitle{Liste des services pour un groupe}
 \begin{center}
\begin{figure}
\includegraphics[scale=0.45]{nagios-hostgroup-grid.jpg}% 
\end{figure}
\end{center}
}

\frame{
  \frametitle{Liste des hôtes et de leurs services}
 \begin{center}
\begin{figure}
\includegraphics[scale=0.45]{nagios-services-details.jpg}% 
\end{figure}
\end{center}
}

%%%%%%%%%%% section %%%%%%%%%%%%%
\section[Notifications]{Aperçu des notifications dans Nagios}

\frame{
  \frametitle{Les notifications}
 \begin{itemize}
\item Etre prévenu
\item Avoir une trace de l'activité : détecter, planifier 
\item Pouvoir donner des tendances, générer des rapports de disponibilités
\item C'est vrai que comme les adminsys passent leurs journées à attendre une panne
devant leur écran, on peut se demander à quoi sert cette fonctionnalité ;)
\end{itemize}
}

\begin{frame}[fragile]
  \frametitle{Trends - Tendances}
  \begin{figure}
  \includegraphics[scale=0.4]{nagios-trends.jpg}%
   \end{figure}
\end{frame}


\frame{
  \frametitle{Les emails reçus - problem}
 \begin{center}
\begin{figure}
\includegraphics[scale=0.5]{nagios-mails.jpg}% 
\end{figure}
\end{center}
}
\frame{
  \frametitle{Les emails reçus - recovery }
 \begin{center}
\begin{figure}
\includegraphics[scale=0.7]{nagios-mails-2.jpg}% 
\end{figure}
\end{center}
}

\begin{frame}[fragile]
  \frametitle{Escalade de notifications pour un hôte (UP/DOWN)}
 \begin{itemize}
\item http://nagios.sourceforge.net/docs/2\_0/escalations.html
\item escalations.cfg
\end{itemize}

\begin{exampleblock}{HOST}
\begin{scriptsize}
\begin{verbatim}
define hostescalation{
   host_name		gateway20
   first_notification	5 ;nbre de notifications avant contact
   last_notification	10
   notification_interval	60
   contact_groups	all-gateway-admins
	}
\end{verbatim}
\end{scriptsize}
\end{exampleblock}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Escalade de notifications pour un service}
  \begin{scriptsize}
  \begin{verbatim}
define serviceescalation{
 host_name		ourwebserver
 service_description	HTTP
 first_notification	3
 last_notification	5
 notification_interval	90
 contact_groups		webadmins,managers
 }

define serviceescalation{
  host_name		ourwebserver
  service_description	HTTP
  first_notification	6
  last_notification	10
  notification_interval	60
  contact_groups		webadmins,managers,all
}	
	\end{verbatim}\end{scriptsize}
\end{frame}
	
	
\frame{
  \frametitle{Le plugin Nagios checker pour mozilla-\*}
  Téléchargeable : https://addons.mozilla.org/fr/thunderbird/addon/3607
et https://addons.mozilla.org/en-US/firefox/addon/3607
 \begin{center}
\begin{figure}
\includegraphics[scale=0.25]{checker-1.jpg}% 
\end{figure}
\end{center}
}

\frame{
  \frametitle{Détail des actions pour un hôte}
 \begin{center}
\begin{figure}
\includegraphics[scale=0.45]{nagios-detail-host.jpg}% 
\end{figure}
\end{center}
}

\frame{
  \frametitle{Acquittements : acknowledgement}
 \begin{center}
\begin{figure}
\includegraphics[scale=0.45]{nagios-acknol.jpg}% 
\end{figure}
\end{center}
}


%%%%%%%%%%% section %%%%%%%%%%%%%
\section[À Lire]{À lire sur Nagios}

\frame{
  \frametitle{Versions actuelles en juillet 2007}
 \begin{itemize}
  \item Nagios 2.9
  \item Nrpe 2.8.1
  \item Plugins 1.4.9
  \item -----------------
  \item English : Nagios system and network monitoring by Wolfgang Barth 
  \item http://nagios.sourceforge.net/docs/
  \end{itemize}
}


% la licence
\frame{
\frametitle{Echanges}
\begin{itemize}
\item Merci pour votre attention
\item La présentation est en GFDL 
\item La présentation et le .tex sont sur
\href{http://www.zopeuse.org/conferences}{{\color{blue}http://www.zopeuse.org/conferences}}
\item \scriptsize
    Copyright (c) 2007 Aurelie CHAUMAT \\
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.2
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".
\end{itemize}
    }

\end{document}
by zopeuse last modified 2007-07-10 04:42
« July 2008 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
 

Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: