Index - FAQ - Rechercher - Membres - Groupes - S'enregistrer - Messages Privés - Connexion
Detection du changement du routage d'un tunnel...

 
Poster un nouveau sujet   Répondre au sujet    Forum du Laboratoire SUPINFO des Technologies Cisco Index du Forum -> Gestion et surveillance d’équipements | Management and reporting
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
loytstf
Visiteur
Visiteur


Inscrit le: 12 Oct 2006
Messages: 16

MessagePosté le: Jeu Oct 12, 2006 3:48 pm    Sujet du message: Detection du changement du routage d'un tunnel... Répondre en citant

J'utilise Nagios pour superviser mes équipements.
Sur un point réseau je dispose de deux sorties, une SDSL et une ADSL.
Dans chaque sortie j'ai deux tunnels.
J'ai activé l'EIGRP sur chaque tunnel pour que dans le cas d'un probleme sur l'une ou l'autre des sorties, mon tunnel soit re-router vers l'autre sortie.
Jusque la tout va bien.

Maintenant je souhaite détecter via SNMP que mon tunnel a changé de route zéro afin de savoir vers quel sortie je passe. Je pense qu'en SNMP ceci est réalisable, mais je ne suis pas certain.

Pour le moment en parsant la mib standard (Noed IP), en croisant les infos de ipRouteDest et ipRouteIfIndex il semble que l'on peut déterminer le changement de route.

Si quelqu'un peut me valider ceci, je dois créer un script Nagios pour superviser cela.

Merci.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Padawan
Membre d'honneur
Membre d'honneur


Inscrit le: 08 Fév 2006
Messages: 4375
Localisation: France, Ile de France

MessagePosté le: Jeu Oct 12, 2006 6:59 pm    Sujet du message: Répondre en citant

Moi je mettrais cela. Je confirme donc.

A+

Padawan
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
loytstf
Visiteur
Visiteur


Inscrit le: 12 Oct 2006
Messages: 16

MessagePosté le: Jeu Déc 14, 2006 6:04 pm    Sujet du message: Ma premiere version Répondre en citant

Voila mon plugins Nagios pour checker qu'un tunnel passe bien par l'interface déterminé a l'installation du CPE.
Le script demande certainement a être optimisé, mais pour le moment il fait bien ce que je lui demande.
Dans mon fichier misccommands de Nagios je déclare la commande suivante :

Citation:

define command{
command_name checktunnel
command_line /usr/local/nagios/libexec/chktunnel.pl $ARG1$
}


Et pour la déclaration du service :

Citation:

define service{
use Def-service
host_name Agence1
service_description CHKTUNNEL_1
check_command checktunnel!22,10.0.0.1,192.168.10.10,172.18.0.1,communaute
contact_groups MonGroup
}


Les paramètres de la commande sont donc :
22 : ifIndex du tunnel supervisé.
10.0.0.1 : IP par ou j'interroge mon CPE. (Utile que dans mon cas je pense - Nous avons un réseau de management)
192.168.10.10 : IP Source du tunnel.
172.18.0.1 : NextHop du tunnel. C'est cette IP que l'on vérifie.
communaute : Communaute SNMP (RO suffit).

Et enfin le script perl, a mettre dans le repertoire libexec de Nagios avec les droits d'execution bien sur.

Citation:

#!/usr/bin/perl
# (c) StephanP
# Script permettant de checker qu'un tunnel passe par l'interface
# determiné lors du provisionnement du CPE.
#
use strict;
use Net::SNMP;
use Getopt::Long;

############################################################
# Declaration des variables et constantes
############################################################
my $ifIndex = '1.3.6.1.2.1.2.2.1.2';
my $ifOperStatus = '1.3.6.1.2.1.2.2.1.8';
my $ipRouteNextHop = '1.3.6.1.2.1.4.21.1.7';

use constant STATE_OK => 0;
use constant STATE_WARNING => 1;
use constant STATE_CRITICAL => 2;
use constant STATE_UNKNOWN => 3;
use constant STATE_WARNING1 => 8;
use constant STATE_WARNING2 => 9;

use constant STATE_UP => 0;
use constant STATE_DOWN => 2;

# Verification des paramètres.
my $size = @ARGV;
exit_bad(3, 'Need one argument') unless $size >= 1;
my ($iftunnel, $ipsup, $ipdest, $nexthop, $communaute) = split ',', @ARGV[0];

my $status = Interface_Status($ipsup, $communaute, $iftunnel);
#print "status de l'interface $iftunnel : ".$status."\n";

if ($status == 0){
# si l'interface tunnel est UP on verifie le NextHop.
my $statusnexthop = Check_Nexthop($iftunnel, $ipsup, $ipdest, $nexthop, $communaute);
if ($statusnexthop == STATE_UP){
print "Tunnel Status and Route OK\n";
exit STATE_UP;
}else{
print "Tunnel Status OK - Route NOK\n";
exit STATE_WARNING;
}
} else {
# Si l'interface tunnel est DOWN on renvoi DOWN.
print "Tunnel Status DOWN\n";
exit STATE_DOWN;
}
#showUsage();


#############################################################
# Verification du status du tunnel.
#############################################################
sub Check_Nexthop() {
my $iface = shift;
my $host = shift;
my $ipde = shift;
my $nhop = shift;
my $community = shift;

# Connexion SNMP
my ($session, $error) = Net::SNMP->session(
-hostname => $host,
-community => $community,
-timeout => 1,
);
return STATE_DOWN unless $session;
my $ipnexthop_ipdest = $ipRouteNextHop.".".$ipde;
my $result = $session->get_request(-varbindlist => [$ipnexthop_ipdest]);
my $thenexthop = $result->{$ipnexthop_ipdest};
#### A MODIFIER POUR LE RETOUR
#print "Next hop de $ipde : ".$thenexthop."\n";
#print " Comparaisons avec NextHop OK : $nhop\n";
if ($thenexthop eq $nhop){
#print "C'est bon\n";
return STATE_UP;
} else {
#print "C'est pô bon\n";
return STATE_CRITICAL;
}
}

#############################################################
# Verification du status du tunnel.
#############################################################
sub Interface_Status() {
my $host = shift;
my $community = shift;
my $iface = shift;
my ($session, $error) = Net::SNMP->session(
-hostname => $host,
-community => $community,
-timeout => 1,
);
return STATE_DOWN unless $session;
my $ifOperStatusInst = $ifOperStatus.".".$iface;
my $result = $session->get_request(-varbindlist => [$ifOperStatusInst]);
return STATE_DOWN if not $result;
my $status = $result->{$ifOperStatusInst};
#print "in status_snmp: status = $status\n";
if ($status == 1){# 1 : iface is up
return STATE_UP;
}
return STATE_DOWN;
}

################################################################################
# correspondance entre etat alerte altitude et code de retour plugin nagios
################################################################################
sub nagios_exit_code {
my $code = shift;
if ($code == STATE_WARNING1 || $code == STATE_WARNING2 || $code == STATE_WARNING){
return STATE_WARNING;
}
if($code == STATE_OK){
return STATE_OK;
}
if ($code == STATE_DOWN || $code == STATE_DOWN){
return STATE_DOWN;
}
return STATE_UNKNOWN;
}

#############################################################
# Fonction de sortie sur erreur.
#############################################################
sub exit_bad($) {
my $ret = shift;
my $s = shift;
print "$s\n";
exit($ret);
}

############################################################
# Affichage du 'Usage' de la commande.
############################################################
sub showUsage(){
# A Faire
print "
Utilisation : chktunnel.pl
";
}
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Forum du Laboratoire SUPINFO des Technologies Cisco Index du Forum -> Gestion et surveillance d’équipements | Management and reporting Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © phpBB Group
phpBB SEO

© Copyright 2000-2005 SUPINFO Paris, Paris Academy of Computer Science
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Conditions d'utilisation et Copyright |  Respect de la vie privée

Site audité par