Nagios

Il arrive parfois qu'un serveur tombe et que l'on ne s'en rende pas compte tant qu'un mec viens pas nous dire 'ouai, jpeux pas faire tel truc ça veut pas', et là tu te rend compte que le serveur est down depuis 2 jours et tu te sent con, pour empecher de genre de situation on utilise un logiciel de monitoring tel que Nagios,Cacti,Shinken ou encore Wabbix.
Ici on va voir la mise en place d'un serveur de monitoring sous nagios

Présentation

Nagios est une application permettant la surveillance système et réseau via le protocole SNMP. Elle surveille les hôtes et services spécifiés, alertant lorsque les systèmes ont des dysfonctionnements et quand ils repassent en fonctionnement normal. C'est un logiciel libre sous licence GNU GPL écrit en C et en Perl.

On peut diviser nagios en 3 parties:

- Le moteur de l'application qui vient ordonnancer les tâches de supervision.
- L'interface web, qui permet d'avoir une vue d'ensemble du système d'information et des possibles problèmes.
- Les checkeur, des scripts qui permettent de superviser chaque service ou ressource disponible sur l'ensemble des périphériques.

Nagios permet en autre de:

-Superviser des services réseaux : (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, LDAP, etc.)
-Superviser les ressources des périphériques (charge du processeur, occupation des disques durs, utilisation de la ram)
-Superviser à distance via SSH
-Effectuer une remontée d'alertes.
-Se coupler a d'autres outils tels que Centreon ou Nagvis

Installation

Pour ce qui concerne l'installation, il faut avant tout installer les modules prérequis:
Debian:

aptitude install apache2 libapache2-mod-php5 php5

Centos:

yum install httpd php 

FreeBSD:

pkg install apache24 php56 mod_php5
#ou:
cd /usr/ports/www/apache24/
make config-recursive
make install clean
cd /usr/ports/lang/php56
make config-recursive # ne pas oublier de selectionner "apache"
make install clean
echo "apache22_enable='YES'"" >> /etc/rc.conf

Une fois les pre-requis installés, il reste plus qu'a installer nagios ainsi que ses plugins:
via les sources:

#On télécharge les sources de nagios ainsi que les plugins
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.1.1.tar.gz
wget http://www.nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
#On extrait et on se rend dans le repertoire de nagios
tar -xzf nagios-4.1.1.tar.gz
cd nagios-4.1.1/
#Configuration de nagios
./configure
#Compilations de nagios
make all
#Installation des binaires
make install
#Installation du script de demarrage
make install-init
#Installation de l'interface web
make install-webconf
#On fait de même pour les plugins

Ou avec le gestionnaire de package de la distributions utilisée: Debian:

aptitude install nagios nagios-plugins

Centos:

yum install nagios nagios-plugins

FreeBSD:

cd /usr/ports/net-mgmt/nagios
make config-recursive
make install clean
cd /usr/port/net-mgmt/nagios-plugins
make
make install
echo "nagios_enable='YES' >> /etc/rc.conf"

Sinon, pour eviter de s'embêter avec tout ça, il existe une distribution basée sur centos qui possède tout les outils de base pour un bon serveur de monitoring, j'annonce :FAN

Configuration

La base

Pour la conf des fichiers, le mieux est de s'aider des fichier monfichier.cfg-sample

Pour la configuration, une partie s'effectue dans le fichier nagios.cfg, le fichier nagios.cfg définie l'ensemble des sous fichiers de configurations grâce aux variables cfg_file. qui se trouvent dans /etc/nagios/ sur centos/debian et dans /usr/local/etc/nagios/sur BSD

[...]
cfg_file=/etc/nagios/services.cfg
cfg_file=/etc/nagios/misccommands.cfg
cfg_file=/etc/nagios/checkcommands.cfg
cfg_file=/etc/nagios/contactgroups.cfg
cfg_file=/etc/nagios/contactTemplates.cfg
cfg_file=/etc/nagios/contacts.cfg
cfg_file=/etc/nagios/hostgroups.cfg
cfg_file=/etc/nagios/servicegroups.cfg
cfg_file=/etc/nagios/timeperiods.cfg
cfg_file=/etc/nagios/escalations.cfg
cfg_file=/etc/nagios/dependencies.cfg
cfg_file=/etc/nagios/meta_commands.cfg
cfg_file=/etc/nagios/meta_contact.cfg
cfg_file=/etc/nagios/meta_contactgroup.cfg
[...]

Il faut également modifier le fichier cgi.cfg

main_config_file=/etc/nagios/nagios.cfg
physical_html_path=/usr/share/nagios
url_html_path=/nagios
nagios_check_command=/usr/lib/nagios/plugins/check_nagios /var/log/nagios/status.dat 5 '/usr/bin/nagios'
use_authentication=1
default_user_name=nagiosadmin
authorized_for_system_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
statusmap_background_image=logofullsize.jpg
default_statusmap_layout=4
default_statuswrl_layout=4
refresh_rate=90
ping_syntax=/bin/ping -n -c 5 $HOSTADDRESS$

Les Hôtes

Pour les hôtes il faut editer le fichier hosts.cfg pour centos/debian et dans /objects ou il faudra créer un fichier pour les hôtes en suivant le modèle de localhost ou avec les templates donnés.

define host{
        host_name                       cmsa33lnx02
        use                             Servers-Linux
        alias                           cmsa33lnx02
        address                         1.1.1.1
        _HOST_ID                        28
        check_interval                  5
}

Les services

On modifie le fichier services.cfg

define service{
        host_name                       cmsa33lnx02
        service_description             cpu_load
        use                             $nomservice
        check_command                   check_cpu_load
        check_period                    24x7
        notification_options            c
}

Les commandes

Et pour les commandes que nagios utilisera pour monitorer on edit soit le fichier checkcommands.cfg pour centos/debian où /objects/commands.cfg pour BSD
La plupart du temps les commandes les plus utiles sont installés de base avec nagios et nagios-plugins mais on peut en rajouter suivant le modèle suivant:

define command{
        command_name                    check_ssh_memory
        command_line                    /usr/lib/nagios/plugins/check_by_ssh -H $ARG1$ -l $ARG2$ -C "/usr/share/nagiossshplugins/memory.sh"
        ;$ARG1$                         Hostaddress
        ;$ARG2$                         user(root)
}

Le temps

Pour cela on modifie le fichier timeperiods.cfg

define timeperiod{
        name                            24x7
        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
}

Les remontées d'alerte

Pour cela il faut modifier le fichier contacts.cfg

define contact{
        contact_name                    toto
        alias                           tutu
        host_notification_period        24x7
        service_notification_period     24x7
        host_notification_options       n
        service_notification_options    n
        host_notification_commands      host-notify-by-email, notify-by-email
        service_notification_commands   host-notify-by-email, notify-by-email
        email                           toto.tutu@oweteam.com
        }
wiki/nagios.txt · Dernière modification: 2018/04/24 11:17 par root
CC0 1.0 Universal
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5