Superviser un Autocom OXE V9.x Alcatel-Lucent sous Centreon/Nagios

Le but de ce tutorial est de faire remonter au serveur Centreon/Nagios les traps des OXE Alcatel ainsi que l’état des cartes, état des T2…
La méthode n’est peut être pas très académique mais elle marche parfaitement. Elle est en prod et permet la supervision de 4 appliances Alcatel R9 et d’environ 60 alvéoles (cristal et IPMG) pour environ 5000 usagers.

Ce tutoriel a été réalisé par :

Rôle Nom
Rédacteur Pascal MARTIN

Configuration du SNMP sur l'OXE

2 solutions pour activer le SNMP sur l’autocom :

  • En ligne de commande : se loguer avec le compte mtcl puis lancer le mgr.

  • Via la 4760

Dans la partie Configuration SNMP/Global configuration : nous activons SNMP et paramétrons sa communauté et sa version.
Dans la partie Configuration SNMP/Global configuration : nous ajoutons l’adresse IP du serveur Nagios, sa communauté et le type de trap à Etendu.

Attention aux filtres d’évènements éventuels dans la partie Applications/Gestion des Incidents

Configuration du serveur Centreon/Nagios

Configuration des Mibs et Traps SNMP

Considérons que snmpd est correctement configuré sur le serveur.

  • Copier les Mibs Alcatel-Lucent suivantes A4400-CPU-MIB.txt, A4400-RTM-MIB.txt et HPOV-NNM.txt dans le répertoire des mibs (Généralement /usr/local/share/snmp/mibs/).
  • Ajouter Alcatel-Lucent dans la liste des constructeurs par le Menu Configuration/Services/Manufacturer/Ajouter

  • Puis effectuer l’import de la mib TRAP-MIB.txt sous Centreon afin de traduire les traps Menu Configuration/Services/MIBS (Attention à bien sélectionner le Vendor Name Alcatel-Lucent) :

  • Ensuite, il vous faut créer le trap Trap_OXE avec comme OID : .1.3.6.1.4.1.637.64.0.10.1.2
  • Puis le Trap_OXE_V9 avec comme OID : .1.3.6.1.4.1.637.64.0.10.1.2.0.3 ( L’oid est différent à partir de la version 9 )



Les OXE alcatel envoient toutes les alertes dans une même trap ce qui complique l’interprétation des différents évènements par Nagios.

Création du service passif TRAP_OXE

Que l’on appliquera à un hôte ou groupe d’hôte.

Très important ⇒ Dans l’onglet Traitement des données on active le gestionnaire d’évènements vers une commande que l’on décrire ensuite.

Création de la commande gestion_trap_oxe


Puis créer le script gestion_trap_oxe dans la directory nagios/libexec qui permettra d’écrire dans nagios.cmd (fichier de commande externe de Nagios)

Le script peut surement être optimisé ! Spécialistes perl bien venu!
#! /usr/bin/perl -w
###################################################################
# Recuperation des trap snmp venant des PabX OXE  R9.0
#
#
#
#
#
#
###################################################################
#
####################################################################
#
# Script init
#
 
# Arguments:
#  $1 = host_name (Short name of host that the service is
#       associated with)
#  $2 = svc_description (Description of the service)
#  $3 = state_string (A string representing the status of
#       the given service - "OK", "WARNING", "CRITICAL"
#       or "UNKNOWN")
#  $4 = plugin_output (A text string that should be used
#       as the plugin output for the service checks)
#
 
 
 
my $host = $ARGV[0];
my $output = $ARGV[1];
my @tab = "a";
my $states = "0";
my $svc_dest = "";
my $commandfile = '/usr/local/nagios/var/rw/nagios.cmd';
my $date=`date`;
 
@tab = split /\ /, $output;
 
if ($tab[13] =~ /^[0-9]{4}/) {
my $incident = $tab[18];
                SWITCH: {
                        $incident == "1125" && do {
                                        $states = "0";
                                        $svc_dest = "OXE_login";
                                        $desc_alarm ="Login sur le pabx par $tab[22]" . " $date";
                                        print "\$var = 1\n";
                                        last SWITCH; };
 
                        $incident == "311" && do {
                                        $states = "1";
                                        $svc_dest = "OXE_T2_alv_$tab[6]";
                                        $desc_alarm ="$host : Etablissement Niveau 2 T2 ACT: $tab[6] Carte: $tab[8]" . " $date";
                                        last SWITCH; };
 
                        $incident == "310" && do {
                                        $states = "2";
                                        $svc_dest = "OXE_T2_alv_$tab[6]";
                                        $desc_alarm ="$host : Perte acces Niveau 2 T2 ACT: $tab[6] Carte: $tab[8]" . " $date";
                                        last SWITCH; };
 
                        $incident == "1025" && do {
                                        print "\$var = 2\n";
                                        last SWITCH; };
 
                        $incident == "1026" && do {
                                        print "\$var = 3\n";
                                        last SWITCH; };
                        print "\$var is not equal with 1 or 2 or 3\n";
 
                                }
 
} elsif ($tab[9] =~ /^[0-9]{4}/) {
                my $incident = $tab[14];
                SWITCH: {
 
                        $incident == "2019" && do {
                                        $states = "0";
                                        $svc_dest = "OXE_alv_$tab[6]";
                                        $desc_alarm ="$host : mise en service de ACT: $tab[6] Carte: $tab[8] $output" . " $date";
                                        last SWITCH; };
 
                        $incident == "2042" && do {
                                        $states = "2";
                                        $svc_dest = "OXE_alv_$tab[6]";
                                        $desc_alarm ="$host : perte de ACT: $tab[6] carte:$tab[8] $output" . " $date";
                                        last SWITCH; };
 
                        print "\$var is not equal with 1 or 2 or 3\n";
                                }
 
}
 else {
        die ("quit");
    $states = "1";
        $svc_dest = "OXE_alarme_inconnue";
        $desc_alarm ="$output";
}
 
 
 
        open(ECRITURE,">$commandfile") || die ("erreur d'ouverture de sortie.txt");
        print ECRITURE "[%lu] PROCESS_SERVICE_CHECK_RESULT;$host;$svc_dest;$states;$desc_alarm\n";
        print ECRITURE "[%lu] PROCESS_SERVICE_CHECK_RESULT;$host;Trap_OXE;0;OK";
        close(ECRITURE);

Ce scipt va donc déclencher via, une commande externe Nagios, le statut warning sur les services passif (dans script : $svc_dest) OXE_alv_x …


Résultat

Voici ce que ça donne comme résultat. Je me suis cantonné aux alertes sur les cartes défectueuse, les pertes et retour des T2 et perte d’alvéole.

centreon/superviser-oxe-alcatel.txt · Dernière modification: 02/03/2017 16:41 (modification externe)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0