Chapitre 15. Supervision des services publiquement disponibles

Ce document décrit la façon de superviser des services, applications et protocoles rendus disponibles publiquement. Par public j'entends les services qui sont accessibles à travers le réseau - que ce soit votre réseau local ou plus grand avec Internet. Les exemples de ce type de services incluent HTTP, POP3, IMAP, FTP, and SSH. Il y a beaucoup plus de services publics que ce que vous utilisez probablement au quotidien. Ces services et applications, ainsi que les protocoles sous-jacents, peuvent en général être supervisés avec Nagios sans nécessiter d'accès spéciaux.

Introduction

Les services privés, à l'opposé, ne peuvent pas être supervisés par Nagios sans agent intermédiaire de quelque type. Les exemples de services privés associés à des hôtes sont des choses comme la charge CPU, l'utilisation mémoire, l'utilisation du disque, le nombre d'utilisateurs connectés, des informations sur les processus, etc. Ces services privés ou attributs d'hôtes ne sont en général pas exposés à un client externe. Cette situation requiert qu'un agent intermédiaire de supervision soit installé sur chacun des hôtes dont vous avez besoin de superviser ce type d'informations. Plus d'information sur la supervision des services privés attachés à des hôtes de différents types peut être trouvée dans la documentation à:

Vous trouverez occasionnellement que cette information sur les services et applications privés peut être supervisée avec SNMP. L'agent SNMP vous permet de superviser à distance l'information d'hôte normalement privée (et inaccessible). Jetez un œil sur la documentation Supervision des routeurs/switchs pour avoir plus d'information sur la façon de superviser des services avec le protocole SNMP.

Ces instructions impliquent que vous ayez installé Nagios comme précisé dans le guide rapide. Les exemples de configuration ci-dessous font référence aux objets de configuration définis dans les fichiers d'exemples (commands.cfg, templates.cfg, etc.) qui ont été installés si vous avez suivi le guide rapide.

Plugins pour la supervision des services

Quand vous avez besoin de superviser un service, application, protocole particulier, les chances sont grandes qu'un plugin existe pour le faire. La distribution officielle des plugins Nagios fournit des plugins qui peuvent être utilisés pour contrôler une grande variété de services et protocoles. Il y a aussi toute une collection de plugins qui peut être trouvée dans le sous répertoire contrib/ de la distribution des plugins. Le site NagiosExchange.org héberge aussi de nombreux plugins additionnels écrits par des utilisateurs, n'hésitez pas à y tenter votre chance.

Si vous ne parvenez pas à trouver un plugin approprié pour superviser ce dont vous avez besoin, vous pouvez toujours écrire le vôtre. Les plugins sont faciles à écrire, ne vous laissez donc pas effrayer par cette idée. Lisez la documentation sur le développement de plugins pour plus d'informations.

Je vais passer en revue la supervision de services basiques que vous aurez probablement à faire tôt au tard. Chacun de ces services peut être supervisé en utilisant un des plugins compris dans la ditribution Nagios. Allons-y…

Création d'une définition d'hôte

Avant de pouvoir superviser un service, vous devez d'abord définir un host associé à ce service. Vous pouvez mettre les définitions d'hôtes dans n'importe quel fichier de configuration spécifié avec le paramètre cfg_file ou les mettre dans un dossier précisé par le paramètre cfg_dir . Si vous avez déjà créé une définition d'hôte, vous pouvez passer cette étape.

Pour cet exemple, disons que vous souhaitez superviser une variété de services sur un hôte distant. Appelons cet hôte remotehost. La définition de l'hôte peut être mise dans son propre fichier de configuration ou ajoutée à un existant. Voilà à quoi pourrait ressembler la définition de l'hôte remotehost:

define host {
    use         generic-host      ; Inherit default values from a template
    host_name   remotehost        ; The name we're giving to this host
    alias       Some Remote Host  ; A longer name associated with the host
    address     192.168.1.50      ; IP address of the host
    hostgroups  allhosts          ; Host groups this host is associated with
}
       

Maintenant qu'une définition d'hôte a été ajoutée pour l'hôte à superviser, nous pouvons commencer à définir les services qui doivent être contrôlés. Comme pour la définition de l'hôte, les définitions de services peuvent être mises dans n'importe quel fichier de configuration.

Création d'une définition de service

Pour chaque service à superviser, vous devez créer un service dans Nagios associé à la définition d'hôte que vous avez juste créé. Vous pouvez mettre des définitions de services dans n'importe quel fichier de configuration précisé par le paramètre cfg_file ou dans n'importe quel dossier précisé par le paramètre cfg_dir .

Quelques exemples de définitions de services pour superviser des services publics communs (HTTP, FTP, etc.) sont donnés ci-dessous.

Supervision HTTP

Il y a de bonnes chances que vous ayez envie de superviser des serveurs web - que ce soit le vôtre ou celui de quelqu'un d'autre. Le plugin check_http est juste fait pour ça. Il fonctionne avec le protocole HTTP et peut superviser un temps de réponse, des codes d'erreurs, des chaînes de caractères dans la réponse HTML, des certificats de serveurs, et beaucoup plus encore.

Le fichier commands.cfg contient une définition de commande pour utiliser le plugin check_http. Il ressemble à ceci:

define command {
    name          check_http
    command_name  check_http
    command_line  $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
       

Une définition simple de service pour superviser un service HTTP sur la machine remotehost pourrait ressembler à ceci:

define service {
    use                 generic-service ; Inherit default values from a template
    host_name           remotehost
    service_description HTTP
    check_command       check_http
}
       

Cette simple définition de service va superviser le service HTTP fonctionnant sur remotehost. Ce service génèrera des alertes si le sereur web ne répond pas dans les 10 secondes ou si la réponse contient un code d'erreur HTTP (403, 404, etc.). C'est tout ce dont vous avez besoin pour une supervision basique. Plutôt simple, non ?

Une définition plus avancée pour superviser le service HTTP est donnée ci-dessous. Cette définition de service va vérifier que l'adresse URI /download/index.php contient la chaîne de caractères latest-version.tar.gz. Une erreur sera produite si la chaîne n'est pas trouvée, si l'URI n'est pas valable, ou si le serveur web met plus de 5 secondes à répondre.

define service {
    use                 generic-service  ; Inherit default values from a template
    host_name           remotehost
    service_description Product Download Link
    check_command       check_http!-u /download/index.php -t 5 -s "latest-version.tar.gz"
}
       

Redémarrage de Nagios

Une fois que vous avez ajouté les définitions du nouvel hôte et du service à vos fichiers de configuration d'objets, vous êtes prêt à démarrer la supervision de ceux-ci. Pour cela, vous devez vérifier votre configuration et redémarrer Nagios.

Si le processus de vérification produit n'importe quel message d'erreur, réglez d'abord vos problèmes de configuration avant de continuer. Assurez-vous de ne pas redémarrer Nagios avant que le processus de vérification ne se déroule sans erreur!