Monitoré un nouveau serveur web

Comment ajouter un nouveau serveur à surveillé par Nagios Core

Nous avons précédemment installé les logiciels nécessaires du serveur principale de Nagios, ainsi que le service Nagios NRPE sur le serveur distant à monitoré. Nous sommes prêt à ajouter les règles pour ce que l’on désire monitoré sur notre serveur distant. Cet example illustre une base pour faire le suivi d’un serveur web avec un domaine que vous hébergez. Connectez-vous à votre serveur principale de Nagios Core et modifions son fichier de configuration principale.

Modifier le fichier de configuration Nagios Core
sudo nano /usr/local/nagios/etc/nagios.conf
Retirer le commentaire de la ligne suivante
cfg_dir=/usr/local/nagios/etc/servers

Afin de mieux séparer les règles pour chacun de nos serveurs distants, nous créons un dossier servers contenant un fichier pour chaque serveur distant. Dans ce dossier, nous créons un fichier de configuration rassemblant les règles spécifique à ce serveur.

Créer le dossier et ajouter un nouveau fichier de configuration générale au serveur
sudo mkdir /usr/local/nagios/etc/servers
sudo touch /usr/local/nagios/etc/servers/serveur-web-1.cfg
sudo chown -R nagios:nagios /usr/local/nagios/etc/servers
sudo nano /usr/local/nagios/etc/servers/server-web-1.cfg

Le bloc de définition host doit contenir une valeur unique pour le host_name ainsi que alias. Ils serviront d’identifiant unique dont les services s’y attacheront par le biais du host_name. Il est requis d’avoir l’adresse IP du serveur externe à monitoré.

Pour la plupart des serveurs que nous désirons surveillé, nous créons des services pour vérifier la charge de travail et l’espace disque.

Pour un serveur hébergeant un site web, nous désirons surveillé l’accès aux ports HTTP (80) et HTTPS (443). Pour chaque domaine hébergé, nous allons surveillé une URL pour le protocol HTTP et une autre URL pour le protocol HTTPS. Pour chaque URL que nous surveillons, il sera nécessaire d’adapter le fichier de configuration NRPE sur le serveur distant, que j’expliquerai plus bas.

Définition du host et de ses services
define host {
        use                             linux-server
        host_name                       serveur-web-1
        alias                           Serveur Web 1
        address                         1.2.123.234
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

# Load Average
define service {
        use                             generic-service
        host_name                       Serveur Web 1
        service_description             Load average
        check_command                   check_nrpe!check_load
}

# Disk Usage
define service {
        use                             generic-service
        host_name                       Serveur Web 1
        service_description             Disk Storage free space
        check_command                   check_nrpe!check_disk
}

# Server SSH & Port 80
define service {
        use                             generic-service
        host_name                       Serveur Web 1
        service_description             SSH
        check_command                   check_nrpe!check_ssh
}
define service {
        use                             generic-service
        host_name                       Serveur Web 1
        service_description             Port 80
        check_command                   check_nrpe!check_tcp_80
}

# Domains
## domain.com
define service {
        use                             generic-service
        host_name                       Serveur Web 1
        service_description             HTTP name.domain.com
        check_command                   check_nrpe!check_http_domain.com
}

define service {
        use                             generic-service
        host_name                       Serveur Web 1
        service_description             HTTPS name.domain.com
        check_command                   check_nrpe!check_https_domain.com
}
Redémarrer le service Nagios
sudo systemctl restart nagios.service

Vous pouvez accéder à l’interface graphique de Nagios. Vérifier dans les pages Hosts et Services que les nouvelles règles sont présentes.

Connectez-vous maintenant sur votre serveur distant et créons un nouveau fichier de configuration pour le domaine web.

Nouveau fichier de configuration
sudo touch /usr/local/nagios/etc/confs/web-domain.cfg
sudo chown nagios:nagios /usr/local/nagios/etc/confs/web-domain.cfg
sudo nano /usr/local/nagios/etc/confs/web-domain.cfg

La première commande vérifie l’accès au domaine avec le protocol HTTP. Si vous avez un certificat SSL, Nagios Core devrait recevoir une réponse 301 (redirection permanente). Si vous n’avez pas de certificat SSL et que votre page d’accueil contient un URI supplémentaire tel que /fr/ ou /en/, ajouter ceci après le paramètre -u, tel que montré dans la deuxième commande.

La deuxième commande vérifie l’accès au domaine avec le protocol HTTPS. Si vous n’avez pas de certificat SSL, vous pouvez mettre en commentaire cette ligne et n’oubliez pas de retirer la définition du service dans la configuration de Nagios Core, que nous avons fait précédemment. Si votre page d’accueil contient un URI supplémentaire tel que /fr/ ou /en/, ajouter ceci après le paramètre -u, tel que montré dans la deuxième commande.

Nouvelles commandes spécifique au nouveau domaine web
## Check HTTP/HTTPS access to this domain
command[check_http_domain.com]=/usr/local/nagios/libexec/check_http -I 1.2.123.234 -H www.domain.com
command[check_https_domain.com]=/usr/local/nagios/libexec/check_http -S -I 1.2.123.234 -H www.domain.com -u /en/

Maintenant, nous pouvons recharger le service Nagios NRPE du serveur.

Nouvelles commandes spécifique au nouveau domaine web
sudo systemctl restart nrpe.service

Autres articles de cette série