2 – Créer un fichier de définition Trap

Prérequis

Avant d’utiliser ce document, la réception des traps doit être configurée sur la SNB. Voir procédure : 1 – Configurer la box pour recevoir les traps

Objectif de ce document

Ce document est destiné à toute personne (client ou consultant) souhaitant ajouter un fichier de définition de trap pour définir les actions à effectuer en cas de réception.

Fichiers de configuration

  • /etc/snmp/snmptt.ini –> configuration de snmptt, servira à indiquer les fichiers de définition de traps à prendre en compte.
  • /etc/snmp/trapConf/* –> fichiers de définition des traps. Pour chaque trap une action est configurée.
  • /var/log/snmptt/*.trap –> un fichier par serveur générant des traps ; fichier où se trouve les traps reçus par la box.
  • /var/log/snmptt/snmpttunknown.log –> fichier où se trouveront les traps inconnus, traps non renseignés dans un fichier de définition.

Principes

A la réception d’un trap, la box va vérifier dans les fichiers de définitions renseignés dans snmptt.ini si une action est définie à la réception de cet évènement.

  • Si oui, l’action indiquée dans le fichier de définition sera exécutée. Cette action sera d’écrire le trap
    reçu dans un fichier *.trap où * sera remplacé par l’adresse IP de la machine ayant envoyé le trap.
  • Si non, le trap sera écrit dans le fichiers des traps inconnus (/var/log/snmptt/snmpttunknown.log)

Créer un fichier de définition de trap

Création manuelle

Se connecter sur la box qui collecte les traps.
Se rendre dans le dossier /etc/snmp/trapConf :

cd /etc/snmp/trapConf

Créer un fichier de définition :

vim myTrapDef.conf

Après analyse de la MIB de l’équipement.
Pour chaque trap que l’on veut traiter il faut ajouter 2 lignes :

EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" INFORMATIONAL
EXEC echo "$x$X |-| $o |-| Link down on interface $1" >> /var/log/snmptt/"$aA".trap
#

Les parties en rouge sont les seuls choses qui peuvent être modifiées. Le reste est à écrire tel quel.
La première ligne « EVENT » va décrire le type d’évènement. Il faudra mettre le nom de l’évènement en un mot et
l’oid du trap.
La deuxième ligne « EXEC » va décrire l’action à réaliser à la réception du trap. Ici le trap va être écrit dans un fichier.
Il sera formaté d’une manière précise. Les champs du message écrit dans le fichier doivent être séparés par le séparateur |-|.
La phrase écrite dans le 3ème champ sera celle affichée dans l’output du plugin sur l’interface web.
Dans l »exemple, la variable $1 représente la première variable du trap. Pour connaitre les variables contenu dans les traps d’un équipement, il faut analyser sa MIB.
Si on veut afficher toutes les variables du trap, on utilisera $*.

Exemple

Un fichier de définition pour un équipement Juniper SRX qui captera les traps UP et DOWN d’un lien réseau et un trap Fan Fail :

EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" INFORMATIONAL
EXEC echo "$x$X |-| $o |-| Link down on interface $1" >> /var/log/snmptt/"$aA".trap
#
EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "Status Events" INFORMATIONAL
EXEC echo "$x$X |-| $o |-| Link up on interface $1" >> /var/log/snmptt/"$aA".trap
#
EVENT fanDown .1.3.6.1.4.1.2636.4.1.2 "Status Events" INFORMATIONAL
EXEC echo "$x$X |-| $o |-| Fan down" >> /var/log/snmptt/"$aA".trap

Voici le fichier où les traps reçus sont écrits :


10 10 16:09:32 |-| .1.3.6.1.4.1.2636.4.1.2 |-| Fan down
11 10 09:05:03 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
11 10 09:05:04 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
12 10 08:05:29 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
12 10 08:06:31 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
12 10 09:37:50 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
12 10 11:25:52 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
13 10 03:27:40 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
13 10 03:27:41 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
13 10 17:05:27 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
13 10 17:05:51 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
14 10 01:06:46 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
14 10 01:06:51 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
14 10 09:07:38 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
14 10 09:07:52 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
14 10 17:08:40 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
14 10 17:08:54 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535
15 10 01:09:42 |-| .1.3.6.1.6.3.1.1.5.3 |-| Link down on interface 535
15 10 01:09:55 |-| .1.3.6.1.6.3.1.1.5.4 |-| Link up on interface 535


Création automatique avec snmpttconvertmib

Il est possible de générer le fichier de définition de manière automatique, à partir d’un fichier MIB.
Commande :

snmpttconvertmib --in=path_to_mib --out=file_to_create --exec='echo "$x$X |-| $o |-|" >> /var/log/snmptt/"$aA".trap

Exemple :

snmpttconvertmib --in=/usr/share/snmp/mibs/STORMSHIELD-ALARM-MIB.mib --out=stormshield.conf --exec='echo "$x$X |-| $o |-|" >> /var/log/snmptt/"$aA".trap'

Placer le fichier générer dans /etc/snmp/trapConf
Redémarrer le service snmptt :

systemctl restart snmptt

Tester la réception de trap :
Générer un trap depuis la box pour elle même :
Récupérer un OID existant dans le fichier de définition précédemment généré. A mettre à la place de « OID » dans la
commande ci-dessous.

snmptrap -c <community> -v 2c 127.0.0.1 "" <OID>

Exemple :
snmptrap -c coservit -v 2c 127.0.0.1 "" .1.3.6.1.6.3.1.1.5.3

Un fichier /var/log/snmptt/127.0.0.1.trap doit être créé et doit contenir le trap.

Utilisation du fichier de définition

Éditer le fichier /etc/snmp/snmptt.ini

vim /etc/snmp/snmptt.ini

A la fin du fichier, dans la section [TrapFiles].
Ajouter le chemin vers le fichier de définition :

Attention :

Attention à bien garder la structure des lignes ci-dessous.
Les <<END et END doivent être positionnés comme dans l’exemple :

snmptt_conf_files = <<END
/etc/snmp/trapConf/linkState.conf
/etc/snmp/trapConf/myTrapDef.conf
/etc/snmp/trapConf/anOtherDef.conf
END

Redémarrer le service snmptt :

systemctl restart snmptt

Instancier un point de contrôle dans ServiceNav

Créer un point de contrôle avec le modèle TRAP-Handle

Toutes les minutes, le plugins ira lire dans le fichier *.trap concernant la machine supervisé.
Pour chaque nouvelle ligne apparue depuis le check précédent, le plugin regardera si il trouve un des patterns mis
en paramètre et renverra le statut en fonction. C’est le pattern du dernier trap reçu qui sera pris en compte.

Consultant sur le produit ServiceNav, très curieux de découvrir de nouvelles technologies et de nouveaux équipements pour pouvoir les intégrer à la supervision. J’ai à cœur de mener à bien nos projets et de trouver des solutions pour parfaire l’expérience de nos clients.