Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| applications:nagios [Le 12/12/2006, 11:19] – 81.80.147.151 | applications:nagios [Le 29/12/2006, 13:01] (Version actuelle) – effacée ostaquet | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | DokuWiki | ||
| - | < | ||
| - | Version : Breezy et Hoary. | ||
| - | </ | ||
| - | |||
| - | Rédigé par [[utilisateurs: | ||
| - | |||
| - | //Remarque : Cet article a été testé sous Ubuntu Hoary et devrait fonctionner sur toutes les versions ultérieurs à Hoary.// | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ====== Nagios - le moniteur de supervision ====== | ||
| - | |||
| - | La gestion d'un parc de serveur est un travail de chaque instant. Un bon administrateur système doit savoir à tout moment l' | ||
| - | |||
| - | L' | ||
| - | |||
| - | Pour se simplifier le travail, nous allons utiliser un //moniteur de supervision// | ||
| - | |||
| - | Le moniteur de supervision que nous allons envisager est **Nagios** qui est un des plus connus et des plus utilisés. | ||
| - | |||
| - | [[http:// | ||
| - | |||
| - | |||
| - | |||
| - | ===== Introduction ===== | ||
| - | |||
| - | L' | ||
| - | |||
| - | Nagios est avant toute chose un moteur gérant l' | ||
| - | |||
| - | L' | ||
| - | |||
| - | Les greffons de Nagios (ou sondes ou plugins) sont des petits scripts ou programmes qui sont la base des vérifications. | ||
| - | |||
| - | Le projet Nagios fournit en standard bon nombre de greffons de base, mais la simplicité de leur mode de fonctionnement nous a permis d'en écrire un certain nombre pour nos besoins propres (comme un vérificateur pour une application maison). | ||
| - | |||
| - | Pour plus d' | ||
| - | |||
| - | |||
| - | ===== Installation ===== | ||
| - | |||
| - | Avant d' | ||
| - | |||
| - | < | ||
| - | sudo apt-get install apache2 | ||
| - | </ | ||
| - | |||
| - | Ensuite, il ne vous reste plus qu'à installer Nagios : | ||
| - | |||
| - | < | ||
| - | sudo apt-get install nagios-text | ||
| - | </ | ||
| - | |||
| - | A la fin de l' | ||
| - | |||
| - | Ici, pour des raisons de simplicité, | ||
| - | |||
| - | Pour configurer le serveur Apache de telle manière que Nagios soit accessible, il vous suffit de faire un copier-coller du fichier ''/ | ||
| - | |||
| - | < | ||
| - | sudo / | ||
| - | </ | ||
| - | |||
| - | Notez que selon les situations, la configuration a été assurée par le gestionnaire de paquets. | ||
| - | Vous devriez avoir accès à la page principale de Nagios une fois que vous avez introduit votre mot de passe en consultant l'URL suivante, le login étant " | ||
| - | |||
| - | < | ||
| - | http:// | ||
| - | </ | ||
| - | |||
| - | Si ce n'est pas le cas, vérifier la configuration de votre serveur HTTP Apache. | ||
| - | |||
| - | |||
| - | ===== Configuration ===== | ||
| - | |||
| - | La configuration de Nagios peut paraître compliquée au premier abord. Il y a beaucoup de fichiers de configuration qui se trouvent dans ''/ | ||
| - | |||
| - | ==== Ajouter des utilisateurs ==== | ||
| - | |||
| - | La première chose à faire est d' | ||
| - | |||
| - | Pour ajouter un utilisateur, | ||
| - | |||
| - | < | ||
| - | sudo htpasswd / | ||
| - | </ | ||
| - | |||
| - | Il faut également donner les droits d' | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | Une fois que les droits d' | ||
| - | |||
| - | ==== Configuration de base ==== | ||
| - | |||
| - | Afin de se simplifier la vie, nous allons d' | ||
| - | |||
| - | === Configuration des périodes de temps === | ||
| - | |||
| - | Nous allons commencer par configurer les périodes de temps qui préoccupe notre serveur. Ces périodes de temps se configurent dans le fichier ''/ | ||
| - | |||
| - | Vous remarquerz que certaines périodes de temps sont déjà indiquées dans le fichier. Ces périodes sont '' | ||
| - | |||
| - | Ces périodes peuvent être reconfigurées à votre guise pour coller à l' | ||
| - | |||
| - | < | ||
| - | define timeperiod{ | ||
| - | timeperiod_name service_open | ||
| - | alias | ||
| - | monday | ||
| - | tuesday | ||
| - | wednesday | ||
| - | thursday | ||
| - | friday | ||
| - | saturday | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Les mots clés utilisés pour la configuration d'une plage horaire se passent de commentaires. | ||
| - | |||
| - | Cet horaire indique les périodes d' | ||
| - | |||
| - | === Configuration des personnes de contacts === | ||
| - | |||
| - | Les personnes de contacts sont les personnes physiques à contacter en cas d' | ||
| - | |||
| - | Les personnes de contacts se configurent dans le fichier ''/ | ||
| - | |||
| - | < | ||
| - | define contact{ | ||
| - | contact_name | ||
| - | alias | ||
| - | service_notification_period | ||
| - | host_notification_period | ||
| - | service_notification_options | ||
| - | host_notification_options | ||
| - | service_notification_commands | ||
| - | host_notification_commands | ||
| - | email | ||
| - | pager | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Voici à quoi servent les différents champs : | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | === Configuration des groupes de contacts === | ||
| - | |||
| - | Les groupes de contacts sont des groupes regroupant plusieurs contacts. On utilisera cette notion de groupe dans les déclarations concernant les hôtes et les services à surveiller. | ||
| - | |||
| - | Les groupes de contacts se définissent dans le fichier ''/ | ||
| - | |||
| - | < | ||
| - | define contactgroup{ | ||
| - | contactgroup_name | ||
| - | alias | ||
| - | members | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Il n'est pas nécessaire d' | ||
| - | ==== Configuration des surveillance de services et d' | ||
| - | |||
| - | La surveillance de services et d' | ||
| - | |||
| - | //Remarque : // Les explications concernant les différentes options sont disponibles sur votre serveur Nagios au travers de l' | ||
| - | |||
| - | Notre exemple consiste en deux hôtes (un serveur mail et un serveur de fichier). Le serveur mail possède un service SMTP et un service IMAP. Le serveur de fichier possède un service NFS. Ces deux hôtes sont connectés sur un routeur-switch qui est le lien vers l' | ||
| - | |||
| - | === Les hôtes === | ||
| - | |||
| - | Tout d' | ||
| - | |||
| - | < | ||
| - | define host{ | ||
| - | use | ||
| - | host_name | ||
| - | alias | ||
| - | address | ||
| - | check_command | ||
| - | max_check_attempts | ||
| - | notification_interval | ||
| - | notification_period | ||
| - | notification_options | ||
| - | } | ||
| - | |||
| - | define host{ | ||
| - | use | ||
| - | host_name | ||
| - | alias | ||
| - | address | ||
| - | check_command | ||
| - | max_check_attempts | ||
| - | notification_interval | ||
| - | notification_period | ||
| - | notification_options | ||
| - | } | ||
| - | |||
| - | define host{ | ||
| - | use | ||
| - | host_name | ||
| - | alias | ||
| - | address | ||
| - | check_command | ||
| - | max_check_attempts | ||
| - | notification_interval | ||
| - | notification_period | ||
| - | notification_options | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ce qu'il est important de remarquer dans ces quelques lignes, c'est le fait que tous utilisent un modèle (// | ||
| - | |||
| - | Une autre chose à laquelle vous devez faire attention, ce sont les noms d' | ||
| - | |||
| - | Enfin, vous remarquez que pour chaque hôte, on a indiqué quel commande de vérification est utilisée. Ces commandes sont, soit des commandes de bases de Nagios, soit des commandes qui vous ajouté dans le fichier '' | ||
| - | |||
| - | === Les groupes d' | ||
| - | |||
| - | Pour que les notifications soient effectives pour les hôtes, les hôtes doivent être mis dans des groupes d' | ||
| - | |||
| - | Ici, nous allons déterminer deux groupes d' | ||
| - | |||
| - | < | ||
| - | define hostgroup{ | ||
| - | hostgroup_name | ||
| - | alias | ||
| - | contact_groups | ||
| - | members | ||
| - | } | ||
| - | |||
| - | define hostgroup{ | ||
| - | hostgroup_name | ||
| - | alias | ||
| - | contact_groups | ||
| - | members | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Avec les groupes d' | ||
| - | |||
| - | === Les services === | ||
| - | |||
| - | L' | ||
| - | |||
| - | Dans notre cas, nous surveillons les services de nos machines de la manière suivante : | ||
| - | |||
| - | < | ||
| - | define service{ | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | } | ||
| - | |||
| - | define service{ | ||
| - | use | ||
| - | host_name | ||
| - | service_description | ||
| - | is_volatile | ||
| - | check_period | ||
| - | max_check_attempts | ||
| - | normal_check_interval | ||
| - | retry_check_interval | ||
| - | contact_groups | ||
| - | notification_interval | ||
| - | notification_period | ||
| - | notification_options | ||
| - | check_command | ||
| - | } | ||
| - | |||
| - | define service{ | ||
| - | use | ||
| - | host_name | ||
| - | service_description | ||
| - | is_volatile | ||
| - | check_period | ||
| - | max_check_attempts | ||
| - | normal_check_interval | ||
| - | retry_check_interval | ||
| - | contact_groups | ||
| - | notification_interval | ||
| - | notification_period | ||
| - | notification_options | ||
| - | check_command | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ce qu'il faut noter au travers de ces quelques lignes est la manière dont on peut passer des paramètres aux commandes. Dans la définition du service '' | ||
| - | |||
| - | === Escalation === | ||
| - | La dernière étape est la configuration du fichier ''/ | ||
| - | < | ||
| - | define serviceescalation{ | ||
| - | host_name | ||
| - | service_description | ||
| - | first_notification | ||
| - | last_notification | ||
| - | contact_groups | ||
| - | notification_interval | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Démarrage et rechargement de Nagios ==== | ||
| - | |||
| - | Pour démarrer ou arrêter Nagios, vous pouvez le faire en ligne de commande de la manière suivante : | ||
| - | |||
| - | sudo / | ||
| - | sudo / | ||
| - | |||
| - | Pour recharger la configuration de Nagios (et en même temps la tester), utilisez la commande suivante : | ||
| - | |||
| - | sudo / | ||
| - | |||
| - | |||
| - | |||
| - | ===== Techniques avancées ===== | ||
| - | |||
| - | ==== Pilotage d'un GSM ==== | ||
| - | |||
| - | Lorsqu' | ||
| - | |||
| - | Cependant, si votre serveur mail ou la ligne internet est inaccessible, | ||
| - | |||
| - | Une solution est d' | ||
| - | |||
| - | Nous avons adopté une solution basique qui fonctionne bien pour les petits volumes; il s'agit de piloter un GSM directement par le serveur Ubuntu en utilisant un câble data USB. La plupart des GSM conviendront à cet usage, l' | ||
| - | |||
| - | //Remarque : // Certains Nokia peuvent poser des problèmes de compatibilités car ils utilisent un protocole propriétaire à la firme finlandaise. | ||
| - | |||
| - | Nous avons choisi un GSM de marque Siemens AX75 et son câble data DCA-510 pour effectuer nos notifications SMS. Il suffit juste d' | ||
| - | |||
| - | Pour piloter le GSM, nous avons besoin de la bibliothèque '' | ||
| - | sudo apt-get install gsm-utils | ||
| - | |||
| - | Ensuite, connectez le GSM via son câble data à un des connecteurs USB. Si tout se passe bien, le système //Hotplug// va charger le module '' | ||
| - | sudo ls -al / | ||
| - | |||
| - | Si vous n'avez pas de '' | ||
| - | sudo modprobe usbserial | ||
| - | |||
| - | Le paquet '' | ||
| - | sudo gsmctl -d / | ||
| - | |||
| - | Vous devriez obtenir toutes les informations disponibles sur le GSM. | ||
| - | |||
| - | Maintenant, essayez d' | ||
| - | sudo gsmsendsms -d / | ||
| - | |||
| - | Si tout se passe bien, vous n'avez plus qu'à configurer Nagios pour qu'il puisse envoyer des SMS (en utilisant le champ '' | ||
| - | |||
| - | * Vous devez autoriser l' | ||
| - | * Vous devez configurer la commande permettant à Nagios d' | ||
| - | < | ||
| - | define command{ | ||
| - | command_name | ||
| - | command_line | ||
| - | } | ||
| - | |||
| - | define command{ | ||
| - | command_name | ||
| - | command_line | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | //Remarque : // Il est inutile de me contacter pour des problèmes de compatibilité de GSM, câble et gsmlib. Veuillez directement vous adresser au développeur de gsmlib ([[http:// | ||
| - | |||
| - | ==== Greffons personnalisés ==== | ||
| - | |||
| - | Comme nous l' | ||
| - | |||
| - | La relation entre le moteur et les greffons est assurée d'une part dans la configuration de Nagios (dans les // | ||
| - | |||
| - | En effet, un greffon n'est qu'un script/ | ||
| - | |||
| - | Pour information, | ||
| - | * 0 - OK | ||
| - | * 1 - WARNING | ||
| - | * 2 - CRITICAL | ||
| - | * 3 - UNKNOWN | ||
| - | |||
| - | Ce sont donc ces états qui seront ensuite remontés au moteur qui prendra les décisions et lancera les actions programmées. | ||
| - | |||
| - | Ces greffons fonctionnent soit en local sur la machine supervisée (par exemple les vérifications sur les disques), soit effectuent des tests à distance (tests sur des protocoles réseaux tels SMTP ou exécution à distance via SSH ou autre). | ||
| - | |||
| - | Exemple : | ||
| - | |||
| - | Sur notre serveur de supervision, | ||
| - | |||
| - | Pour ce faire, on utilise le script suivant : | ||
| - | |||
| - | < | ||
| - | #!/bin/sh | ||
| - | |||
| - | STATE_OK=0 | ||
| - | STATE_WARNING=1 | ||
| - | STATE_CRITICAL=2 | ||
| - | STATE_UNKNOWN=3 | ||
| - | |||
| - | / | ||
| - | |||
| - | POWER=`awk '$1 == "< | ||
| - | |||
| - | if test `grep -c " | ||
| - | then | ||
| - | echo " | ||
| - | exit $STATE_CRITICAL | ||
| - | else | ||
| - | echo " | ||
| - | exit $STATE_OK | ||
| - | fi | ||
| - | </ | ||
| - | |||
| - | Sans entrer dans les détails, on indique des informations sur le sortie standard avec les commandes '' | ||
| - | |||
| - | |||
| - | ==== Serveurs redondants ==== | ||
| - | |||
| - | Nagios est capable de tourner en mode redondance. C' | ||
| - | |||
| - | Je vous renvoie au [[http:// | ||
| - | |||
| - | ==== Supervision de la charge des serveurs ==== | ||
| - | |||
| - | Vous trouverez toutes les informations nécessaires sur la page traitant des [[serveur: | ||
