Table des matières
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.
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.
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…
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.
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.
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 ?
Pour des possibilités plus avancées de supervision, utilisez le plugin check_http manuellement avec --help
comme argument de la ligne de commande pour voir toutes les options que peut vous fournir ce plugin. Cette syntaxe --help
fonctionne avec tous les plugins couverts par cette documentation.
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" }
Quand vous avez besoin de superviser des serveurs FTP
, vous pouvez utiliser le plugin check_ftp. Le fichier commands.cfg
une définition de commande pour utiliser le plugin check_ftp qui ressemble à ceci:
define command { command_name check_ftp command_line $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$ }
Une définition simple de service pour superviser un serveur FTP
sur remotehost devrait ressembler à ceci:
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description FTP check_command check_ftp }
Cette définition de service va superviser le service FTP
et générer des alertes si le serveur FTP
ne répond pas dans les 10 secondes.
Une définition de service plus avancée est donnée ci-dessous. Ce service va vérifier le serveur FTP
en écoute sur le port 1023 de remotehost. Une alerte sera émise si le serveur ne répond pas dans les 5 secondes ou si la réponse que fait le serveur ne contient pas la chaîne de caractère Pure-FTPd [TLS].
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description Special FTP check_command check_ftp!-p 1023 -t 5 -e "Pure-FTPd [TLS]" }
Quand vous avez besoin de superviser des serveurs SSH
, vous pouvez utiliser le plugin check_ssh. Le fichier commands.cfg
contient une définition de commande pour utiliser le plugin check_ssh qui ressemble à ceci:
define command { command_name check_ssh command_line $USER1$/check_ssh $ARG1$ $HOSTADDRESS$ }
Une définition simple de service pour superviser un serveur SSH
sur remotehost devrait ressembler à ceci:
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description SSH check_command check_ssh }
Cette définition de service va superviser le service SSH
et générer des alertes si le serveur ne répond pas dans les 10 secondes.
Une définition de service plus avancée est donnée ci-dessous. Ce service va vérifier le serveur SSH
et générer une alerte si le serveur ne répond pas dans les 5 secondes ou si le numéro de version ne correspond pas à OpenSSH_4.2.
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description SSH Version Check check_command check_ssh!-t 5 -r "OpenSSH_4.2" }
Le plugin check_smtp peut être utilisé pour superviser vos serveurs de messagerie. Le fichier commands.cfg
une définition de commande pour utiliser le plugin check_smtp qui ressemble à ceci:
define command { command_name check_smtp command_line $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$ }
Une définition simple de service pour superviser un serveur SMTP
sur remotehost devrait ressembler à ceci:
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description SMTP check_command check_smtp }
Cette définition de service va superviser le service SMTP
et générer des alertes si le serveur SMTP
ne répond pas dans les 10 secondes.
Une définition de service plus avancée est donnée ci-dessous. Ce service va vérifier le serveur SMTP
et générer une alerte si le serveur ne répond pas dans les 5 secondes ou si la réponse du serveur ne contient pas la chaîne de caractères mygreatmailserver.com.
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description SMTP Response Check check_command check_smtp!-t 5 -e "mygreatmailserver.com" }
Le plugin check_pop peut être utilisé pour superviser le service POP3
de vos serveurs de messagerie. Le fichier commands.cfg
une définition de commande pour utiliser le plugin check_pop qui ressemble à ceci:
define command { command_name check_pop command_line $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$ }
Une définition simple de service pour superviser un serveur POP3
sur remotehost devrait ressembler à ceci:
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description POP3 check_command check_pop }
Cette définition de service va superviser le service POP3
et générer des alertes si le serveur POP3
ne répond pas dans les 10 secondes.
Une définition de service plus avancée est donnée ci-dessous. Ce service va vérifier le serveur POP3
et générer une alerte si le serveur ne répond pas dans les 5 secondes ou si la réponse du serveur ne contient pas la chaîne de caractères mygreatmailserver.com.
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description POP3 Response Check check_command check_pop!-t 5 -e "mygreatmailserver.com" }
Le plugin check_imap peut être utilisé pour superviser le service IMAP4
sur vos serveurs de messagerie. Le fichier commands.cfg
une définition de commande pour utiliser le plugin check_imap qui ressemble à ceci:
define command { command_name check_imap command_line $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$ }
Une définition simple de service pour superviser un serveur IMAP4
sur remotehost devrait ressembler à ceci:
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description IMAP check_command check_imap }
Cette définition de service va superviser le service IMAP4
et générer des alertes si le serveur IMAP
ne répond pas dans les 10 secondes.
Une définition de service plus avancée est donnée ci-dessous. Ce service va vérifier le service IMAP4
et générer une alerte si le serveur ne répond pas dans les 5 secondes ou si la réponse du serveur ne contient pas la chaîne de caractères mygreatmailserver.com.
define service { use generic-service ; Inherit default values from a template host_name remotehost service_description IMAP4 Response Check check_command check_imap!-t 5 -e "mygreatmailserver.com" }
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!