Personnaliser le monitorage d'Hobbit à l'aide de SNMP

Gazette Linux n°140 — Juillet 2007

Deny

Adaptation française

Joëlle Cornavin

Relecture de la version française

Article paru dans le n°140 de la Gazette Linux de juillet 2007.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

1. Hobbit
2. Extensions
3. Un moniteur SNMP simple
4. Le script
5. Rendre le script opérationnel dans Hobbit
6. Conclusion

1. Hobbit

Travailler en tant qu'ingénieur Unix pour une grande entreprise de fabrication me met en contact avec de nombreux types de systèmes et de services. Un des outils de contrôle de système que j'emploie est l'application open source Hobbit. Les applications de monitorage font d'excellents systèmes d'alerte rapide et peuvent contribuer à éviter des problèmes de réseau et de serveurs à grande échelle. Dans nombre de cas, elles peuvent vous avertir quand les choses sont sur le point de mal tourner, ce qui est beaucoup mieux que de recevoir des appels téléphoniques paniqués au milieu de la nuit. Hobbit est un bon exemple d'un tel « chien de garde » (en anglais, watchdog). Hobbit est un binaire de remplacement compilé pour Big Brother, qui offre plus de fonctionnalité et une vitesse supérieure à l'original. Bien qu'Hobbit dispose en standard de la plupart des tests réseau et système habituels, il est également facile de l'étendre pour surveiller des éléments spécifiques à votre environnement.

Je n'explquerai pas la procédure d'installation d'Hobbit ici, puisqu'elle est bien documentée sur la page d'accueil d'Hobbit. À la place, je vais décrire une des nombreuses extensions personnalisables que j'utilise en production.

2. Extensions

Les extensions d'Hobbit peuvent aller de scripts shell simples jusqu'à de véritables programmes compilés, en incluant tout ce qui se trouve dans l'intervalle. Tant que vous avez accès au client Hobbit, vous pouvez créer tous les tests dont vous avez besoin et voir les résultats intégrés dans la page web d'Hobbit et dans le système d'alerte. Mon langage de script de prédilection pour écrire des extensions Hobbit est Perl. Il y a un vaste dépôt d'extensions pour Hobbit/Big Brother qui ont déjà été écrites et ont rendu service à la communauté sur http://www.deadcat.net.

3. Un moniteur SNMP simple

Grâce à une simple commande snmp et un peu de code Perl, nous pouvons tester nombre de services et de processus qui ne sont pas disponibles nativement dans Hobbit. La première étape consiste à déterminer l'OID (Object Identifier, identificateur d’objet) et le mot de passe du service que vous souhaitez tester. Dans cet article, je décrirai comment j'ai utilisé cette méthode pour obtenir le taux d'utilisation du processeur d'un serveur iSeries©, une fonctionnalité qui n'a pas été incluse en standard dans Hobbit. Les mêmes principes s'appliquent à pratiquement tout ce qui peut être pris en charge via SNMP. Mon serveur Hobbit fonctionne sous Solaris, mais les commandes sont les mêmes pour Linux. La commande permettant d'obtenir le taux d'utilisation du processeur d'une machine iSeries© à partir de la ligne de commande sous Solaris est snmpget -v1 -c motdepasse nomduserveur 1.3.6.1.4.1.2.6.4.5.1.0. Avec cette commande à notre disposition, nous pouvons l'insérer dans un script qui communiquera les résultats au serveur Hobbit.

4. Le script

#!/usr/bin/perl -w
use strict;

# $test sera le nom affiché dans l'interface graphique de Hobbit,
# il devra être aussi court que possible
my $test = '400cpu';

# $bbprog est simplement le nom du script
my $bbprog = '400cpu.pl';

my ($color, $line, $machine, $warn, $end, $date, $currently);
my $server='nomduserveur';

# Émettez la commande snmp que nous avons étudiée précédemment et enregistrez
# les résultats dans $results
my $results = `/usr/local/bin/snmpget -v1 -c public wc400 1.3.6.1.4.1.2.6.4.5.1.0`;

# Scindez les résultats dans un tableau, en les séparant par des espaces
my @results = split / /, $results;

# Extrayez simplement du tableau le fragment que nous recherchons, et
# placez-le dans $value = my $value = $results[3];
chomp($value);

# Si la valeur atteint 3000, ce qui signifie 30 pour cent, faites une rapide
# opération sur $value
$value = $value/100;
$value = int($value);

# Tout d'abord, réglez la couleur du test sur "green" (vert), nous la modifierons
# en rouge si nécessaire en cas d'alerte.
$color = 'green';

# Définissez quelques variables à fournir au serveur Hobbit, la
# première dans un format sur deux points
my $percent = "\n\nPercentage : $value\n\n";
$currently = "$percent\n\nCPU ok.\n\n\n\n";

# Déterminez si le taux d'utilisation du processeur est trop élevé, si
# tel est le  cas, changez pour "red" (rouge)
if ( $value > 80 ) {
        $color = 'red';
        $currently = "$percent\n\L'utilisation du processeur est élevée.\n\n";
                       }

# Préparez pour le serveur Hobbit au format correct

$machine = "$server,amkor,com";

$date = `date`;
chomp($date);

$line = "status $machine.$test $color $date $currently";

system("/usr/local/hobbit/server/bin/bb nomduserveur_hobbit \"$line\"";

5. Rendre le script opérationnel dans Hobbit

À présent que notre script est prêt, il est temps de configurer le client Hobbit pour l'exécuter une fois toutes les cinq minutes. Ouvrez le fichier clientlaunch.cfg dans le répertoire etc de votre répertoire local Hobbit et ajoutez cette ligne :

[400cpu.pl]

ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg

CMD $HOBBITCLIENTHOME/ext/400cpu.pl

LOGFILE $HOBBITCLIENTHOME/logs/400cpu.pl

INTERVAL 5m

Maintenant, vous pouvez redémarrer votre client Hobbit, attendre 10 ou 15 minutes que les données soient rassemblées, puis vérifier que votre interface graphique Hobbit affiche une sortie identique à celle-ci :

6. Conclusion

Dans ce bref article, nous sommes parvenus à créer un test d'Hobbit fructueux, et nous l'avons intégré dans l'interface graphique d'Hobbit. Des variantes simples de cette technique peuvent être employées pour surveiller pratiquement n'importe quelle mesure pouvant être obtenue via snmp.

Martin Colello est un ingénieur Unix qui travaille pour une entreprise d'assemblage et de test de semi-conducteurs du nom de Amkor Technology. Bien qu'il se consacre principalement à l'administration sous Solaris, il emploie Linux et d'autres logiciels open source chaque fois que possible pour réaliser rapidement des projets spéciaux. Le plus souvent, il s'agit du domaine de la surveillance des réseaux, serveurs et applications à l'aide d'outils comme Hobbit, Cricket, Cacti et de scriptage Perl.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.