Aller au contenu principal
Version: 21.04

Activer les Traps SNMP

Description​

Les traps SNMP sont des informations envoyées en utilisant le protocole SNMP depuis un équipement supervisé vers un serveur de supervision (satellite). Ces informations contiennent plusieurs attributs dont :

  • Adresse de l’équipement qui a envoyĂ© l’information.
  • L’OID racine (Object Identifier) correspond Ă  l’identifiant du message reçu.
  • Le message envoyĂ© au travers du trap SNMP qui correspond Ă  un ensemble de paramĂštres (1 Ă  N).

Afin de pouvoir interprĂ©ter l’évĂšnement reçu, le serveur de supervision doit possĂ©der dans sa configuration le nĂ©cessaire pour traduire l’évĂšnement. Pour cela, il doit disposer d’une base de donnĂ©es contenant les OID ainsi que leurs descriptions, c’est ce qu’on appelle les fichiers MIB. Il existe deux types de MIB :

  • Les MIB standards qui utilisent des OID standardisĂ©s et qui sont implĂ©mentĂ©s par de nombreux constructeurs sur leurs Ă©quipements.
  • Les MIB constructeurs qui sont propres Ă  chacun et souvent Ă  chaque modĂšle d’équipement.

Les MIB constructeurs sont Ă  rĂ©cupĂ©rer auprĂšs des constructeurs de matĂ©riels. Centreon permet de stocker la dĂ©finition des traps SNMP dans sa base de donnĂ©es MariaDB. Les traps peuvent ensuite ĂȘtre reliĂ©s Ă  des services passifs via l’onglet Relations de la dĂ©finition d’un service.

Architecture​

Processus de traitement d’un trap par le serveur central​

Voici le processus de traitement d’un trap SNMP :

  1. snmptrapd est le service permettant de récupérer les traps SNMP envoyés par les équipements (par défaut il écoute sur le port UDP 162).
  2. Une fois le trap SNMP reçu, il est envoyĂ© au script ‘centreontrapdforward’ qui va Ă©crire les informations reçues dans un dossier tampon (par dĂ©faut : /var/spool/centreontrapd/).
  3. Le service ‘centreontrapd’ lit les informations reçues dans le dossier tampon et interprĂšte les diffĂ©rents traps reçus en vĂ©rifiant dans la base de donnĂ©es Centreon les actions Ă  entreprendre pour traiter ces Ă©vĂšnements.
  4. Le service ‘centreontrapd’ transmet les informations Ă  l’ordonnanceur ou au service ‘gorgoned’ (pour transmettre les informations Ă  un ordonnanceur distant) qui se charge de modifier le statut et les informations associĂ©es au service auquel est liĂ© le trap SNMP.

image

Processus de traitement d’un trap par un collecteur​

Afin de garder une copie de la configuration des traps SNMP sur chaque serveur satellite, une base de données SQLite est chargée de garder en cache les informations de traps contenues dans la base de données MariaDB. Cette base de données SQLite est automatiquement générée par le serveur Central.

Voici le processus de traitement d’un trap SNMP :

  1. snmptrapd est le service permettant de récupérer les traps SNMP envoyées par les équipements (par défaut il écoute sur le port UDP 162).
  2. Une fois le trap SNMP reçu, il est envoyĂ© au script ‘centreontrapdforward’ qui va Ă©crire les informations reçues dans un dossier tampon (par dĂ©faut : /var/spool/centreontrapd/).
  3. Le service ‘centreontrapd’ lit les informations reçues dans le dossier tampon et interprĂšte les diffĂ©rentes traps reçus en vĂ©rifiant dans la base de donnĂ©es SQLite les actions Ă  entreprendre pour traiter les traps reçus.
  4. Le service ‘centreontrapd’ transmet les informations Ă  l’ordonnanceur qui se charge de modifier le statut et les informations associĂ©es au service dont est liĂ© le trap SNMP.

image

Le processus Centreon Gorgone à la charge, comme pour l’export de configuration de la supervision, de copier la base SQLite sur le collecteur distant..

Ordre de rĂ©alisation des actions par le processus centreontrapd​

Voici l’ordre des actions rĂ©alisĂ© par le processus centreontrapd :

image

Configuration des services​

Snmptrapd​

Afin d’appeler le script ‘centreontrapdfoward’, le fichier /etc/snmp/snmptrapd.conf doit contenir les lignes suivantes :

disableAuthorization yes
traphandle default su -l centreon -c "/usr/share/centreon/bin/centreontrapdforward"

Vous pouvez optimiser les performances de snmptrapd en utilisant les options suivantes :

  • -On n’essaye pas de transformer les OIDs
  • -t ne log pas les traps au serveur syslog
  • -n n’essaye pas de transformer les adresses IP en nom d’hĂŽtes

Ces options peuvent ĂȘtre modifiĂ©es dans le fichier /etc/sysconfig/snmptrapd:

OPTIONS="-On -d -t -n -p /var/run/snmptrapd.pid"

centreontrapdforward​

Pour modifier le dossier tampon vers lequel les informations seront Ă©crites, modifiez le fichier de configuration /etc/centreon/centreontrapd.pm :

our %centreontrapd_config = (
spool_directory => '/var/spool/centreontrapd/',
);

1;

Vous pouvez également mapper le dossier dans le cache en mémoire vive, en ajoutant la ligne suivante dans le fichier /etc/fstab :

tmpfs /var/spool/centreontrapd      tmpfs defaults,size=512m 0 0

centreontrapd​

Deux fichiers de configuration existent pour Centreontrapd :

  • /etc/centreon/conf.pm contient les informations de connexion Ă  la base de donnĂ©es MariaDB
  • /etc/centreon/centreontrapd.pm contient la configuration du service centreontrapd

Configuration du service​

Au sein du fichier /etc/centreon/centreontrapd.pm il est conseillé de modifier uniquement trois paramÚtres (si nécessaire) :

  • Si l’option mode est dĂ©finie Ă  1 alors centreontrapd fonctionne sur un serveur satellite, sinon il fonctionne sur un serveur central (Centreon).
  • L’option centreon_user permet de modifier l’utilisateur qui exĂ©cute les actions.
  • L’option spool_directory permet de modifier le dossier tampon Ă  lire (si vous l’avez modifiĂ© dans le fichier de configuration de ‘centreontrapdforward’).

Voici un exemple de configuration possible du fichier /etc/centreon/centreontrapd.pm (le fichier de configuration peut ĂȘtre modifiĂ©e avec ‘-config-extra = xxx’) :

our %centreontrapd_config = (
# Time in seconds before killing not gently sub process
timeout_end => 30,
spool_directory => "/var/spool/centreontrapd/",
# Delay between spool directory check new files
sleep => 2,
# 1 = use the time that the trap was processed by centreontrapdforward
use_trap_time => 1,
net_snmp_perl_enable => 1,
mibs_environment => '',
remove_backslash_from_quotes => 1,
dns_enable => 0,
# Separator for arguments substitution
separator => ' ',
strip_domain => 0,
strip_domain_list => [],
duplicate_trap_window => 1,
date_format => "",
time_format => "",
date_time_format => "",
# Time in seconds before cache reload
cache_unknown_traps_retention => 600,
# 0 = central, 1 = poller
mode => 0,
cmd_timeout => 10,
centreon_user => "centreon",
# 0 => skip if MariaDB error | 1 => don't skip (block) if MariaDB error (and keep order)
policy_trap => 1,
# Log DB
log_trap_db => 0,
log_transaction_request_max => 500,
log_transaction_timeout => 10,
log_purge_time => 600
);

1;

Configuration de la connexion Ă  la base de donnĂ©es​

Sur un serveur Centreon central, Ă©diter le fichier /etc/centreon/conf.pm :

$centreon_config = {
VarLib => "/var/lib/centreon",
CentreonDir => "/usr/share/centreon/",
"centreon_db" => "centreon",
"centstorage_db" => "centreon_storage",
"db_host" => "localhost:3306",
"db_user" => "centreon",
"db_passwd" => "centreon"
};

1;

Sur un collecteur, Ă©diter le fichier /etc/centreon/centreontrapd.pm :

our %centreontrapd_config = (
...
"centreon_db" => "dbname=/etc/snmp/centreon_traps/centreontrapd.sdb",
"centstorage_db" => "dbname=/etc/snmp/centreon_traps/centreontrapd.sdb",
"db_host" => "",
"db_user" => "",
"db_passwd" => "",
"db_type" => 'SQLite',
...
);

1;