Installation de l’agent NRPE pour nagios dans un environnement CentOS :
En premier lieu, on met en place les répertoires EPEL. Comme expliqué plus haut, il donne accès à des packages supplémentaires.
La CentOS utilisé est un système d’exploitation 64 bits, la commande pour EPEL est donc la suivante :
rpm -Uvh http://download.fedoraproject.org/pu...6-8.noarch.rpm
Ensuite, on peut installer les packages souhaités : NRPE et nagios-plugins.
# yum -y install nrpe nagios-plugins
Une fois fait, il est nécessaire d’avoir les extensions que l’on souhaite utiliser. On peut les voir avec la commande suivante :
# yum -y list nagios-plugins\*
EPEL nous renvoie donc la liste des plugins disponibles :
...
On profite d’être en environnement de test pour simplement installer tous les plugins avec le module nagios-plugins-all.x86_64.
# yum -y install nagios-plugins-all.x86_64
On peut maintenant configurer NRPE en éditant le fichier /etc/nagios/nrpe.cfg.
On ajoute l’IP de FAN :
allowed_hosts=127.0.0.1,193.1.2.20
Dans le même fichier, on vérifie les commandes qui seront possible et on ajoute les manquantes :
1 2 3 4 5
| command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
command[check_root_disk]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p / |
On finit par démarrer NRPE et le faire à chaque démarrage.
1 2 3 4 5 6
| # service nrpe start
# chkconfig nrpe on
Il faut bien entendu ajouter une règle dans IPtables. On n’autorise que pour l’IP de la FAN.
# iptables -I INPUT -s 193.1.2.20 -p tcp -m tcp --dport 5666 -j ACCEPT
# service iptables save
# service iptables restart |
On commence par vérifier le fonctionnement le plus basique avec la commande suivante sur la FAN :
[root@FAN plugins]# ./check_nrpe -H 193.1.2.11
NRPE v2.15
NRPE a répondu avec son numéro de version, ce qui valide le bon fonctionnement du système.
Utilisation de NRPE
On peut maintenant tester des commandes. Commençons par vérifier la charge sur le serveur distant.
1 2 3
| [root@FAN plugins]# ./check_nrpe -H 193.1.2.11 -c check_load
OK - load average: 0.03, 0.04, 0.01|load1=0.030;15.000;30.000;0; load5=0.040;10.000;25.000;0;
load15=0.010;5.000;20.000;0; |
On voit donc ici que FAN a demandé au serveur distant l’information.
On vérifie le fonctionnement de la commande check_disk1 :
1 2
| [root@FAN plugins]# ./check_nrpe -H 193.1.2.11 -c check_disk1
NRPE: Command 'check_disk1' not defined |
Comme NRPE nous l’indique, la commande n’est pas définit. Il faut donc retourner sur la machine distante et définir le service dans
le fichier : /etc/nagios/nrpe.cfg
command[check_disk1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
On vérifie ici le disque dur principal. S’il a moins de 20% d’espace libre, on sera en warning. C’est avec moins de 10% qu’on rentrera
en critique.
Maintenant on peut utiliser la commande :
1 2
| [root@FAN plugins]# ./check_nrpe -H 193.1.2.11 -c check_disk1
DISK OK - free space: / 14148 MB (81% inode=90%);| /=3252MB;14064;15822;0;17580 |
Pour pouvoir configurer correctement la supervision du serveur distant, on ajoute la commande dans la FAN en éditant le fichier :
1 2 3 4 5 6
| /etc/nagios/objects/commands.cfg.
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
} |
Supervision du serveur distant
Il faut ensuite paramétrer l’hôte. Pour cela on s’inspire du travail effectué pour les routeurs. On va donc créé un fichier
/etc/nagios/objects/server.cfg.
On l’ajoute dans le fichier de configuration principale de Nagios : /etc/nagios/nagios.cfg
1 2
| # Definitions for monitoring a linux server
cfg_file=/etc/nagios/objects/server.cfg |
Définition de l’hôte
On commence par définir notre hôte qu’on nommera CentOS-serveur.
1 2 3 4 5 6 7 8
| # Define the switch that we'll be monitoring
define host{
use linux-server ; Inherit default values from a template
host_name CentOS-serveur ; The name we're giving to this switch
alias Serveur CentOS 6.7 ; A longer name associated with the switch
address 193.1.2.11 ; IP address of the switch
hostgroups serveurs ; Host groups this switch is associated with
} |
On utilise un modèle déjà présent dans /etc/nagios/objects/templates.cfg.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # Linux host definition template - This is NOT a real host, just a template!
define host{
name linux-server ; The name of this host template
use generic-host ; This template inherits other values from the
generic-host template
check_period 24x7 ; By default, Linux hosts are checked round the clock
check_interval 5 ; Actively check the host every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each Linux host 10 times (max)
check_command check-host-alive ; Default command to check Linux hosts
notification_period workhours ; Linux admins hate to be woken up, so we only notify
during the day
; Note that the notification_period variable is being
overridden from
; the value that is inherited from the generic-host
template!
notification_interval 120 ; Resend notifications every 2 hours
notification_options d,u,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST,
JUST A TEMPLATE!
} |
Définition d’un groupe
On revient dans note fichier /etc/nagios/objects/server.cfg et on ajoute un groupe nommé serveurs.
1 2 3 4
| define hostgroup{
hostgroup_name serveurs ; The name of the hostgroup
alias Serveurs internes ; Long name of the group
} |
Service : charge du processeur
Pour cela, on utilisera la commande NRPE suivante :
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
Comme d’habitude on passe deux paramètres pour établir les seuils d’alarmes. Dans ce cas, il y a trois chiffres qui correspondent aux
moyennes d’1, de 5 et de 15 minutes. Le serveur établi ces chiffres en fonction du nombre de processus qui utilisent le CPU.
On ajoute donc le service dans le fichier /etc/nagios/objects/server.cfg :
1 2 3 4 5 6 7
| # Check load on the server
define service{
use generic-service ; Inherit values from a template
host_name CentOS-serveur ; The name of the host
service_description Load ; The service description
check_command check_nrpe!check_load ; The command used to monitor the service
} |
Service : nombre d’utilisateurs logués
Pour cela, on utilisera la commande NRPE suivante :
command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10
Ici l’information renvoyée est le nombre d’utilisateurs connectés en même temps. On fixe les seuils à 5 et 10.
On ajoute donc le service dans le fichier /etc/nagios/objects/server.cfg :
1 2 3 4 5 6 7
| # Check number of users logged on the server
define service{
use generic-service ; Inherit values from a template
host_name CentOS-serveur ; The name of the host
service_description Users logged ; The service description
check_command check_nrpe!check_users ; The command used to monitor the service
} |
Service : nombre de processus en cours de fonctionnement
Pour cela, on utilisera la commande NRPE suivante :
command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 250 -c 300
On vérifie ici le nombre de processus en parallèle sur le serveur. Les seuils ont été réajustés car le nombre de processus présent sur
la machine dépassait les seuils préenregistrés.
On ajoute donc le service dans le fichier /etc/nagios/objects/server.cfg :
1 2 3 4 5 6 7
| # Check number of processus on the server
define service{
use generic-service ; Inherit values from a template
host_name CentOS-serveur ; The name of the host
service_description Procs ; The service description
check_command check_nrpe!check_total_procs ; The command used to monitor the service
} |
Service : espace disque disponible sur la racine
Pour cela, on utilisera la commande NRPE suivante :
command[check_disk1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
Comme vu précédemment on vérifie ici l’espace disque disponible.
On ajoute donc le service dans le fichier /etc/nagios/objects/server.cfg :
1 2 3 4 5 6 7
| # Check use of disk space
define service{
use generic-service ; Inherit values from a template
host_name CentOS-serveur ; The name of the host
service_description Disk use ; The service description
check_command check_nrpe!check_total_procs ; The command used to monitor the service
} |
Service : fonctionnement du serveur http
Pour tester le bon fonctionnement du serveur http, on va utiliser un service qui va régulièrement tenter d’ouvrir une connexion http
avec le serveur. Le service utilisé offre un certain nombre d’option avec par exemple la possibilité de faire une recherche de texte dans
le résultat obtenue. De cette manière on s’assure aussi que la réponse est bien celle attendus.
Pour cela, on utilisera la commande NRPE suivante :
command[check_http]=/usr/lib64/nagios/plugins/check_http -w 3 -c 5 -I 193.1.2.11 -s "Bonjour"
On teste donc que le serveur http à l’adresse 193.1.2.11 réponde un code OK (200) en moins de 3 ou 5 secondes. De plus on vérifie
que la réponse contient bien « Bonjour ».
On peut le faire depuis le serveur mais aussi depuis la machines FAN. Pour cela on ajoute une commande au fichier
/etc/nagios/objects/command.cfg
1 2 3 4 5
| # 'check_http_precise' command definition
define command{
command_name check_http_precise
command_line $USER1$/check_http -I $HOSTADDRESS$ -w 3 -c 5 -s $ARG1$
} |
Il ne reste donc plus qu’à ajouter ces deux services dans /etc/nagios/objects/server.cfg.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # Check http response with "boujour" from server with nrpe
define service{
use generic-service ; Inherit values from a template
host_name CentOS-serveur ; The name of the host
service_description HTTP check NRPE ; The service description
check_command check_nrpe!check_http ; The command used to monitor the service
}
# Check http response with "boujour" from nagios
define service{
use generic-service ; Inherit values from a template
host_name CentOS-serveur ; The name of the host
service_description HTTP check Nagios ; The service description
check_command check_http!"Bonjour" ; The command used to monitor the service
} |
Vérification
On peut donc vérifier le bon fonctionnement de tous les services que l’on vient de mettre en place. Pour cela, on se rend sur l’interface web de Nagios.
On vérifie que notre nouvel hôte est bien vue.
On peut ensuite vérifier que les services fonctionnent.
On peut donc voir que tout fonctionne comme prévu. Tous les tests que l’ont fait sont valide et ne retourne pas d’erreurs.
Les informations retournées permettent de validé que le serveur fonctionne, on peut donc le considérer serveur comme supervisé.