Gestion des traps dans une architecture distribuée
![Stacks Image 309](files/stacks-image-c023749-136x120.png)
Vous devrez configurer autant de services SNMPTRAPD que de poller. De plus, il faudra configurer à la main, une pseudo installation de "Centreon_Trap" et modifier le fichier CentTrapHandler.
Ne pas oubliez d'autoriser chaque poller à accéder aux informations de la base Centreon et vous devriez avoir une installation fonctionnant à merveille :-)
![Stacks Image 293](files/stacks-image-debadba-584x800.jpg)
Capture d'un trap SNMP dans une architecture distribuée
Configuration du serveur Satellite
Assurez-vous que le service SNMP soit bien configuré ainsi que la gestion de réception des traps.
Créez le dossier qui contiendra les définitions de traps de Centreon
mkdir -p /etc/snmp/centreon_traps
chmod 775 /etc/snmp/centreon_traps
chown www-data:nagios /etc/snmp/centreon_traps
Copiez les binaires de Centreon
Créez le dossier pour les binaires Centreon
mkdir -p /usr/local/centreon/bin
Utilisez un client scp et copiez les fichiers smptt et centTrapHandlerForPoller-2.x se trouvant sur le serveur Central dans le dossier /usr/local/centreon/bin vers le serveur Satellite dans le dossier /usr/local/centreon/bin. Rendre les fichiers exécutables et modifier le nom du fichier centTrapHandlerForPoller-2.x.
cd /usr/local/centreon/bin/
chmod +x snmptt
mv centTrapHandlerForPoller-2.x centTrapHandler-2.x
chmod +x centTrapHandler-2.x
Copiez le fichier de configuration MySql de Centreon
Créez le dossier pour la configuration de Centreon
mkdir -p /etc/centreon
Utilisez un client scp et copiez le fichier conf.pm se trouvant sur le serveur Central vers le serveur Satellite.
Modifiez le fichier en saisissant l'adresse IP du serveur Central.
$mysql_host = "172.16.209.141";
$mysql_user = "centreon";
$mysql_passwd = 'password';
$mysql_database_oreon = "centreon";
$mysql_database_ods = "centstorage";
1;
Configuration du serveur Central
Configurez l'accès à MySQL du serveur Central
Sur le serveur Central, modifiez le fichier de configuration Mysql pour autoriser les connexions entrantes dans /etc/mysql/my.cnf. Mettre en commentaire la ligne suivante.
#bind-address = 127.0.0.1
Créez un utilisateur pour le serveur Satellite.
root@supervision:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 55850
Server version: 5.1.63-0+squeeze1 (Debian)
mysql> grant select on centreon.* to centreon@'172.17.2.132' identified by 'password';
Query OK, 0 rows affected (0.18 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.17 sec)
mysql> exit
Bye
Votre serveur Satellite doit maintenant fonctionner pour la gestion des Traps. Nous aborderons en détail certains points dans les prochains jours.
Exemple pratique
Afin de bien comprendre le cheminement des opérations, rien de tel qu'un exemple concret. Assurez-vous du bon fonctionnement de votre installation. Créez un service passif pour votre serveur Satellite associé aux traps SNMP génériques (voir l'article Les traps par la pratique).
Nous simulerons une alerte de connexion réseau coupé avec la commande suivante sur le serveur Satellite :
root@satellite:~#snmptrap -v2c -c public 172.17.2.132 '' .1.3.6.1.6.3.1.1.5.3 .1.3.6.1.2.1.2.2.1.1 i 2
.1.3.6.1.2.1.2.2.1.7 i 1 .1.3.6.1.2.1.2.2.1.8 i 1
Première étape Syslog
Avec les paramètres -LS7D ou -Lsd du deamon SNMPTRAPD, vous pouvez visualiser le trap dans le fichier /var/log/syslog
Jul 24 18:58:56 satellite snmptrapd[16776]: 2012-07-24 18:58:56 172.17.2.132 [UDP: [172.17.2.132]:37958->
[172.17.2.132]]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (20430989) 2 days, 8:45:09.89#011.1.3.6.1.6.3.1.1.4.1.0 =
OID: .1.3.6.1.6.3.1.1.5.3#011.1.3.6.1.2.1.2.2.1.1 = INTEGER: 2#011.1.3.6.1.2.1.2.2.1.7 =
INTEGER: 1#011.1.3.6.1.2.1.2.2.1.8 = INTEGER: 1
Deuxième étape SNMPTT
le deamon SNMPTRAPD exécute le programme SNMPTT. En configurant le fichier /etc/snmp/centreon_traps/snmptt.ini, il est possible d'obtenir des fichiers de logs. Pour obtenir un fichier de log des traps reconnus par la supervision Centreon, configurer le fichier de la marinière suivante :
log_enable = 1
log_file = /var/log/snmptt.log
Le traps sera inscrit dans le fichier /var/log/snmptt.log comme ceci :
Tue Jul 24 18:58:56 2012 .1.3.6.1.6.3.1.1.5.3 2 "Status Event" 172.17.2.132 -
Link down on interface 1. State: $4.
Pour obtenir un fichier de log pour les traps écartés par la configuration de SNMPTT, configurer le fichier de la marinière suivante :
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmpttunknown.log
Exemple de trap écarté :
Value 3: .1.3.6.1.4.1.8072.4.0.2
Value 4: 172.17.2.132
Value 5: public
Value 6: .1.3.6.1.4.1.8072.4
Value 7:
Value 8:
Value 9:
Value 10:
Vous voulez connaître le comportement dans le détail de SNMPTT, une solution : configurez la variable DEBUGGING.
[Debugging]
# 0 - do not output messages
# 1 - output some basic messages
# 2 - out all messages
DEBUGGING = 0
# Debugging file - SNMPTT
# Location of debugging output file. Leave blank to default to STDOUT (good for
# standalone mode, or daemon mode without forking)
#DEBUGGING_FILE =
DEBUGGING_FILE = /var/log/snmptt.debug
Avec la valeur 1 vous obtiendrez de nombreux renseignements comme la ligne de commande de CentTrapHandler et la valeur 2 sera à utiliser avec parcimonie, car taille des informations récoltées devient conséquente.
extrait log niveau 1
....FORMAT line:
Link down on interface 1. State: $4.
.1.3.6.1.6.3.1.1.5.3 2 "Status Event" 172.17.2.132 - Link down on interface 1. State: $4.
EXEC line(s):
EXEC command:/usr/local/centreon/bin/centTrapHandler-2.x 172.17.2.132 172.17.2.132 .1.3.6.1.6.3.1.1.5.3
"Link down on interface 1. State: $4." "'2' '1' '1' "
extrait log niveau 2
....FORMAT line:
0: 2
1: 1
2: 1
Centreon Arguments: '2' '1' '1'
Variable .1.3.6.1.2.1.2.2.1.8 with value 1
Variable .1.3.6.1.2.1.2.2.1.7 with value 1
Variable .1.3.6.1.2.1.2.2.1.1 with value 2
OID of received trap: .1.3.6.1.6.3.1.1.5.3. Will attempt to translate to text
Translated to .iso
Link down on interface 1. State: $4.
.1.3.6.1.6.3.1.1.5.3 2 "Status Event" 172.17.2.132 - Link down on interface 1. State: $4.
EXEC line(s):
0: 2
1: 1
2: 1
Centreon Arguments: '2' '1' '1'
Variable .1.3.6.1.2.1.2.2.1.8 with value 1
Variable .1.3.6.1.2.1.2.2.1.7 with value 1
Variable .1.3.6.1.2.1.2.2.1.1 with value 2
OID of received trap: .1.3.6.1.6.3.1.1.5.3. Will attempt to translate to text
Translated to .iso
EXEC command:/usr/local/centreon/bin/centTrapHandler-2.x 172.17.2.132 172.17.2.132 .1.3.6.1.6.3.1.1.5.3
"Link down on interface 1. State: $4." "'2' '1' '1' "
multiple_event = 0, multiple_event_passes = 1 so don't process any more entries
![Stacks Image 328](files/stacks-image-5c3b413-48x46.png)
En règle générale, vos hôtes supervisés seront configurés avec l'adresse IP. Ce qui tombe bien c'est le mode de fonctionnement par défaut de SNMPTT. Mais il se peut que vous ayez des hôtes configurés avec l'adresse DNS, il faudra configurer une option dans SNMPTT.INI permettant la récupération du nom DNS. En effet, le script centTrapHanler-2.x recherchera un hôte en fonction de son adresse IP ou éventuellement de son adresse DNS. Si votre hôte est configuré avec un nom DNS et que vous n'activez pas la résolution DNS, point de salut, les traps liés à celui-ci seront ignorés pour toujours.
Pour activer la résolution DNS modifiez le fichier comme ci-dessous :
dns_enable = 1
Il est évident pour le bon fonctionnement de SNMPTT, vous devez avoir une configuration de résolution DNS fonctionnelle. Pour s'en assurer saisissez cette commande :
root@satellite:~# nslookup 172.16.209.140
Server: 172.16.209.140
Address: 172.16.209.140#53
140.209.16.172.in-addr.arpa name = macdns.localmac.
Troisième étape centTrapHandler-2.x
C'est la partie la plus obscure de notre exemple. Je dis cela, car le script centTrapHandler-2.x n'a pas été configuré pour créer des logs. Nous passerons donc notre chemin.
Quatrième partie Nagios
Dernière partie de notre exemple, notre trap a été envoyé dans le fichier de commande externe de Nagios. Pour visualiser le bon fonctionnement, il suffit de saisir cette commande :
tail -f /usr/local/nagios/var/nagios.log
Lorsque le trap sera intercepté, vous aurez les logs suivants:
[1343194853] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;Satellite;Traps_Debian;2;Link down on interface 1. State: .
[1343194858] PASSIVE SERVICE CHECK: Satellite;Traps_Debian;2;Link down on interface 1. State: .
[1343194858] SERVICE ALERT: Satellite;Traps_Debian;CRITICAL;HARD;1;Link down on interface 1. State: .
Voilà, notre exercice pratique est terminé. J'espère avoir éclairé votre lanterne dans le fonctionnement des traps avec Centreon.