Nagios, l’un des plus puissants systèmes de surveillance de réseaux, est utilisé abondamment dans l’industrie. Il peut surveiller activement n’importe quel réseau et générer des alertes audio ou par email dès qu’il détecte un problème. Les types de vérifications de même que les alarmes des alertes peuvent être configurés.
Autre capacité incroyable de Nagios : il peut surveiller à la fois les hôtes et les services ; par exemple : il peut surveiller les adresses IP ainsi que les ports TCP/UDP. Pour comprendre un peu tout cela, supposons qu’il y ait un serveur web que nous voulions surveiller. Nagios peut vérifier si le service est en ligne en exécutant un Ping sur le nom/IP du serveur ou bien créer des alertes au cas où que le Round Trip Time (RTT) jusqu’au serveur augmente. De plus, Nagios peut également vérifier si le port TCP 80 (serveur web) est accessible, par exemple si le serveur est en ligne mais que Apache/IIS ne répond pas.
Il existe également des outils de surveillance tiers basés sur Nagios, tels que Centreon, FAN, op5 Monitor, qui complètent l’engin autonome qu’est Nagios en termes d’interface, d’automation, et de support technique.
Ce tutoriel explique comment installer et configurer Nagios sur Linux.
Installer Nagios sur Debian ou Ubuntu
En ce qui concerne le système Debian, l’installation en elle-même est un processus très simple grâce à apt-get.
root@mrtg:~# apt-get install nagios3
Le réglage du serveur mail peut être fait lors de l’installation de Nagios. Il peut également être configuré plus tard en cas de besoin.
Note : Une configuration SMTP valide est nécessaire pour que Nagios envoie des emails de notifications.
Comme on peut le constater, Nagios supporte de multiples options d’envoi d’emails. Les options les plus communes sont Internet Site où le serveur envoie des emails directement au destinataire. Autre option largement utilisée, est l’utilisation d’un smarthost ou d’un serveur de relai, dans lequel le serveur envoie un email à un serveur de mails intermédiaire qui, en retour, envoie ce même email au destinataire.
Pour la suite, le nom de domaine du serveur doit être inclus dans la prochaine étape.
Finalement, le mot de passe pour l’administrateur de Nagios (‘nagiosadmin’) est mis en place. Cette information peut elle aussi, être changée plus tard.
Installer Nagios sur CentOS ou RHEL
On utilise yum pour l’installation. Après avoir mis en place le dépôt repoforge, actionnez yum de la manière suivante.
[root@mrtg ~]# yum install nagios nagios-plugins
Les critères de surveillance
Dans le présent tutoriel, nous souhaitons surveiller les éléments suivants :
- Tout le serveur Linux sera contrôlé toutes les 3 minutes.
- Tous les routeurs Cisco seront contrôlés toutes les 3 minutes.
- Toutes les alertes mails doivent se rendre sur sentinel@example.tst.
- Nagios vérifiera 3 fois avant d’envoyer quelque alerte que ce soit pour être sûr que le problème est réel.
- Si le RTT vers quelque appareil que ce soit excède 100ms et/ou que la perte de paquets excède 20%, un mail d’alerte sera généré.
Le reste du tutoriel vous guidera pour configurer Nagios sur Linux.
Configuration de Nagios sur Ubuntu
Il est important de savoir où sont localisés les fichiers relatifs à la configuration de Nagios. Le tableau suivant montre la localisation desdits fichiers de configuration pour les systèmes basés sur Debian.
/etc/nagios-plugins
Personnalisation des scripts utilisés pour la surveillance
/etc/nagios3
Configuration des fichiers pour ajouter des hébergeurs, services, définir les vérifications et les timers
/usr/lib/nagios/plugins
Les fichiers exécutables utilisés pour la surveillance
Les étapes suivantes sont inter – reliées. Nous y donnerons la définition des hôtes, groupes d’hôtes ainsi que celle des services supplémentaires concernant les groupes d’hôtes.
Modèle d’ajout d’hôte
Les modèles expliquant que faire avec un hôte type sont définis. Nous utilisons les fichiers fournis avec l’installation comme échantillons.
Premièrement, définissez un modèle d’hôte pour les appareils Linux.
root@mrtg:~# cd /etc/nagios3/conf.d
root@mrtg:/etc/nagios3/conf.d/# cp generic-host_nagios2.cfg linux-server.cfg
Editez le fichier linux-server.cfg de la manière suivante. Les parties en gras sont modifiées.
root@mrtg:/etc/nagios3/conf.d/# vim linux-server.cfg
define host{
name linux-server
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command example-host-check ; the script to be used while checking
check_interval 3 ; the interval between consecutive checks
max_check_attempts 3 ; number of rechecking before generating email alerts
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins ; the group where emails will be sent
register 0
}
Ensuite, définissez un modèle d’hôte pour les appareils Cisco.
root@mrtg:/etc/nagios3/conf.d/# cp linux-server.cfg cisco-device.cfg
Modifiez le fichier cisco-device.cfg de la manière suivante. Les parties en gras sont modifiées.
root@mrtg:/etc/nagios3/conf.d/# vim cisco-device.cfg
# The highlighted parts are modified
define host{
name cisco-device
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
check_command example-host-check ; the script to be used while checking
check_interval 3 ; the interval between consecutive checks
max_check_attempts 3 ; number of rechecking before generating email alerts
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins ; the group where emails will be sent
register 0
}
Ajout d’hôte
A présent que le modèle d’hôte est défini, il faut ajouter l’hôte actuel à surveiller. Là encore, les fichiers fournis par défaut sont utilisés comme échantillon.
root@mrtg:/etc/nagios3/conf.d/# cp localhost_nagios2.cfg example.cfg
root@mrtg:/etc/nagios3/conf.d/# vim example.cfg
# Host 1
define host{
use linux-server ; Name of host template to use
host_name our-server ; The hostname to be used by nagios
alias our-server
address 172.17.1.23 ; The IP address of the host
}
# Host 2
define host{
use cisco-device ; Name of host template to use
host_name our-router ; The hostname to be used by nagios
alias our-router
address 172.17.1.1 ; The IP address of the host
}
Définition de groupe d’hôte
Pour une gestion plus aisée lorsqu’il y a plusieurs hôtes, il est conseillé de faire en sorte que les hôtes de type similaire soient groupés ensemble.
root@mrtg:/etc/nagios3/conf.d/# vim hostgroups_nagios2.cfg
definehostgroup {
hostgroup_name linux-server ; the name of the host group
alias Linux Servers
members our-server ; comma separated list of members
}
definehostgroup {
hostgroup_name cisco-device ; the name of the host group
alias Cisco Devices
members our-server ; comma separated list of members
}
Définition du service
Premièrement, la commande example-host-check est définie avec pour seuil d’alerte de 100ms de latence et de 20% de perte de paquets. La valeur critique de latence est de 5000ms et celle de perte de paquet est de 100%. Une requête ping IPv4 est transmise.
root@mrtg:~# vim /etc/nagios-plugins/config/ping.cfg
define command{
command_name example-host-check
command_line /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 100,20% -c 5000,100% -p 1 -4
}
La commande est ensuite associée aux groupes d’hôtes.
root@mrtg:/etc/nagios3/conf.d/# vim services_nagios2.cfg
define service {
hostgroup_name linux-server
service_description Linux Servers
check_command example-host-check
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
define service {
hostgroup_name cisco-device
service_description Cisco Devices
check_command example-host-check
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
Définition de contact
L’adresse requise pour envoyer des ajouts d’emails vers Nagios.
root@mrtg:/etc/nagios3/conf.d/# vim contacts_nagios2.cfg
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, sentinel@example.tst
}
Enfin, une opération d’essai est mise en place pour vérifier si il existe des erreurs de configuration. S’il n’y a pas d’erreurs, Nagios peut être (re)lancé sans problème.
root@mrtg:~#nagios –v /etc/nagios3/nagios.cfg
root@mrtg:~# service nagios3 restart
Configuration de Nagios sur CentOS/RHEL
Ci-dessous les localisations des fichiers de configuration de Nagios pour les systèmes basés sur Redhat.
/etc/nagios/objects
Configuration des fichiers pour ajouter des hôtes, services, définir de vérifications et de timers
/usr/lib/nagios/plugins
Les fichiers exécutables utilisés pour la surveillance
Ajout de modèle d’hôte
Un modèle est créé pour définir ce qui doit être fait pour un type spécifique d’hôte. Les fichiers fournis avec l’installation sont modifiés.
root@mrtg objects]# cd /etc/nagios/objects/
[root@mrtg objects]# vim templates.cfg
define host{
name linux-server
use generic-host
check_period 24x7
check_interval 3
retry_interval 1
max_check_attempts 3
check_command example-host-check
notification_period 24x7
notification_interval 0
notification_options d,u,r
contact_groups admins
register 0
}
define host{
name cisco-router
use generic-host
check_period 24x7
check_interval 3
retry_interval 1
max_check_attempts 3
check_command example-host-check
notification_period 24x7
notification_interval 0
notification_options d,u,r
contact_groups admins
register 0
}
Ajout d’hôtes et de groupes d’hôtes
Le fichier de configuration fourni par défaut est utilisé comme échantillon. Les hôtes et groupes d’hôtes sont ajoutés dans le même fichier.
[root@mrtg objects]# cp localhost.cfg example.cfg
[root@mrtg objects]# vim example.cfg
#Adding Linux server
define host{
use linux-server
host_name our-server
alias our-server
address 172.17.1.23
}
#Adding Cisco Router
define host{
use cisco-router
host_name our-router
alias our-router
address 172.17.1.1
}
# HOST GROUP DEFINITION
define hostgroup{
hostgroup_name linux-servers
alias Linux Servers
members our-server
}
define hostgroup{
hostgroup_name cisco-router
alias cisco-router
members our-router
}
Définition du service
Un service appelé example-host-check est défini avec comme seuil d’alerte 100ms de latence et 20% de perte de paquets. La valeur critique de latence est de 5000ms et de 100% pour la perte de paquets. Une seule requête ping IPv4 sera transmise.
[root@mrtg objects]# vim commands.cfg
define command{
command_name example-host-check
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 100.0,20% -c 5000.0,100% -p 1 -4
}
Définition de contact
L’adresse email où seront envoyées les alertes est ajoutée dans Nagios.
[root@objects objects]# vim contacts.cfg
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email nagios@localhost, sentinel@example.tst
}
Enfin, nous sommes prêts à lancer le service Nagios. Une opération d’essai est recommandée pour déterminer s’il y a des erreurs de configuration.
[root@mrtg ~]# nagios –v /etc/nagios/nagios.cfg
[root@mrtg ~]# service nagios restart
[root@mrtg ~]# chkconfig nagios on
Accéder à Nagios après la configuration
Vous êtes à présent prêt à utiliser Nagios. Vous pouvez accéder à ce dernier en ouvrant l’URL http://IP/nagios3 pour Ubuntu/Debian ou http://IP/nagios pour CentOS/RHEL; par exemple : http://172.17.1.23/nagios3. L’utilisateur « nagiosadmin » doit être identifié pour accéder à la page.
Lorsque Nagios ne fonctionne pas comme il le devrait, la première chose à faire et d’initier une opération d’essai.
Sur Debian ou Ubuntu :
# nagios3 -v /etc/nagios3/nagios.cfg
Sur CentOS ou RHEL :
# nagios -v /etc/nagios/nagios.cfg
Le journal (ou historique des évènements) peut également faire état d’éléments importants. Il est localisé à /var/log/nagios/nagios.log.
En espérant que tout cela vous soit utile.
Article originale de: Sarmed Rahman