Installer et configurer NET-SNMP sur OEL5 et RHEL5

Important:
D’après l’article « The Management Agent’s SNMP SubAgent is Being Planned for Deprecation in Future Release of Grid Control [ID 1057526.1] » et cette discussion sur les communautés support, Il semble, sinon acquis, au moins probable que le sous-agent SNMP pour Oracle vive ses dernières années avec l’agent Enterprise Manager 11.1. Soyez attentifs (et votez NON!) si vous décidez d’utiliser ce qui suit dans cet article.

SNMP (aka Simple Network Management Protocol) est un des protocoles utilisés par de nombreux frameworks de gestion réseau comme HP OpenView, CA Unicenter ou Nagios. Oracle Database Server 9i et les agents OEM 10g et 11g offrent des fonctionnalités SNMP pour intégrer facilement vos bases de données préférées à votre solution de supervision. Dans cette série d’articles vous trouverez comment intégrer Oracle à votre framework de supervision par ce biais.

Cette série sera composée de 3 articles intitulés :

  • « Installer et configurer NET-SNMP sur OEL5 et RHEL5  » (cet article), explique le principe d’une infrastructure SNMP et comment configurer les différents composants NET-SNMP pour constituer une configuration représentative.
  • « Configurer l’agent et sous-agents SNMP Oracle sur OEL5 », présente la configuration et les fonctionnalités des agents et sous-agents Oracle pour superviser vos bases de données et listeners.
  • « Configurer le sous-agent SNMP Enterprise Manager », présente la configuration du sous-agent Enterprise Manager qui permet l’intégration de l’ensemble du référentiel d’alertes OEM Grid Control à votre framework de supervision. A noter que pour utiliser cette dernière fonctionnalité, vous devez avoir une licence Oracle Database Diagnostic Pack.

Introduction – Framework de supervision et SNMP

Le schéma ci-dessous présente les différents composants d’une infrastructure de supervision basée sur SNMP.

L’infrastructure de supervision est composée :

  • d’une station de gestion sur laquelle s’exécute le framework de gestion. Le framework de gestion est capable :
    • d’interroger des agents SNMP au moyen de bibliothèques clientes SNMP. Pour notre configuration de démonstration, nous utiliserons la commande snmpwalk.
    • de recevoir des interruptions SNMP au moyen d’un récepteur SNMP. Pour notre configuration de démonstration, nous utiliserons le daemon net-snmp snmptrapd.
  • d’un ensemble de serveurs sur lesquelles s’exécutent un agent SNMP; l’agent SNMP est composé :
    • d’un master agent qui reçoit et répond aux requêtes SNMP clientes et envoie le cas échéant des interruptions SNMP à la station de supervision pour certains aspects. Pour notre configuration de démonstration, nous utiliserons le daemon net-snmp snmpd dans un premier temps puis celui d’Oracle dans l’article suivant
    • de sous agents spécialisés pour gérer certains services. Dans notre cas, Oracle fournit les sous-agents pour gérer les bases de données et listeners; nous utiliserons l’agent net-snmp ensuite pour superviser le serveur et servir de sous-agent à l’agent Oracle. Ces sous-agents feront plus particulièrement l’objet d’une description dans le second article de cette série.

Note :
Si vous utilisez Nagios, il est probable que les interruptions SNMP soient reçues par le daemon net-snmp snmptrapd. Pour en savoir plus sur l’intégration des interruptions SNMP avec Nagios via SNMP Trap Translator, vous pouvez vous reportez à la documentation associées sur snmptt.org.

Installation de NET-SNMP

NET-SNMP contient donc à la fois :

  • Un ensemble d’outils client SNMP comme snmpwalk et un récepteur d’interruptions SNMP nommé snmptrapd pour permettre à un framework de supervision de fonctionner.
  • Un « agent SNMP » pour répondre aux requêtes clientes SNMP, envoyer des interruptions. Ce master agent doit être déployé sur les serveurs supervisés

Redhat et Oracle EL 5 fournissent des RPMs qui contiennent l’ensemble des composants de NET-SNMP. Il suffit donc d’installer les packages net-snmp et net-snmp-utils avec la commande rpm ou la commande yum pour procéder à l’installation de l’ensemble de l’infrastructure SNMP nécessaire à Oracle sur OEL ou RHEL. Voici ci-dessous un exemple d’installation si vous êtes connecté à ULN, RHN ou au référentiel public fournit par Oracle :

# yum install net-snmp net-snmp-utils
Loaded plugins: security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package net-snmp.i386 1:5.3.2.2-9.el5 set to be updated
--> Processing Dependency: libsensors.so.3 for package: net-snmp
---> Package net-snmp-utils.i386 1:5.3.2.2-9.el5 set to be updated
--> Running transaction check
---> Package lm_sensors.i386 0:2.10.7-9.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================
Package Arch Version Repository Size
=============================================================
Installing:
net-snmp i386 1:5.3.2.2-9.el5 el5_u5_base 713 k
net-snmp-utils i386 1:5.3.2.2-9.el5 el5_u5_base 188 k
Installing for dependencies:
lm_sensors i386 0:2.10.7-9.el5 el5_u5_base 517 k

Transaction Summary
=============================================================
Install 3 Package(s)
Upgrade 0 Package(s)

Total download size: 1.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): net-snmp-utils-.3.2.2-9.el5.i386.rpm | 188 kB 00:09
(2/3): lm_sensors-.10.7-9.el5.i386.rpm | 517 kB 00:21
(3/3): net-snmp-5.3.2.2-9.el5.i386.rpm | 713 kB 00:31
--------------------------------------------------------------
Total 17 kB/s | 1.4 MB 01:23
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : lm_sensors 1/3
Installing : net-snmp 2/3
Installing : net-snmp-utils 3/3

Installed:
net-snmp.i386 1:5.3.2.2-9.el5
net-snmp-utils.i386 1:5.3.2.2-9.el5

Dependency Installed:
lm_sensors.i386 0:2.10.7-9.el5

Complete!

Configurer et tester snmptrapd

Pour configurer snmptrapd :

  • Ajoutez les options de votre choix dans le fichier /etc/sysconfig/snmptrapd.options. Pour plus d’information sur le paramétrage de ce fichier, tapez man snmpcmd. Dans notre cas, nous avons simplement créé un fichier log spécifique pour pouvoir tracer facilement des interruptions reçues par snmptrapd :
    cat /etc/sysconfig/snmptrapd.options
    # snmptrapd command line options
    OPTIONS="-Lf /var/log/snmptrapd.log"
  • Créez et enregistrez le fichier /etc/snmp/snmptrapd.conf. Pour plus d’informations sur le para
    métrage de ce fichier, tapez man 5 snmptrapd.conf. Dans notre cas, nous avons ajouté une règle pour que les interruptions issues de la communauté « public » soient journalisées :

    cat /etc/snmp/snmptrapd.conf
    authCommunity log public

Une fois snmptrapd configuré, vous pouvez démarrer le service sous l’utilisateur root et superviser le fichier .log pour vérifier que les messages sont correctement reçus :

service snmptrapd restart
tail -f /var/log/snmptrapd.log

Testez ensuite que les interruptions sont reçues en générant une interruption manuellement à l’aide de la commande snmptrap comme ci-dessous :

export SNMP_PERSISTENT_DIR=~/.net-snmp
snmptrap -v 1 -c public `hostname` '' '' 6 99 '' 1.11.12.13.14.1 s "Is snmptrapd Okay ?"

Utilisez man snmptrap pour en savoir plus sur cette commande; dans notre cas :

  • -v 1 indique que le message utilise la version 1 du protocole SNMP
  • -c public indique que la communauté qui envoie le message est « public »
  • `hostname` indique l’alias IP du recepteur SNMP (le serveur local pour notre test)
  • le premier  » indique l’OID enterprise-oid. Si celui-ci est vide, c’est 1.3.6.1.4.1.3.1.1 qui est utilisé
  • le second  » indique l’agent qui envoie le message. Si celui-ci est vide, c’est le nom de l’hote qui est utilisé
  • 6 est le champ generic-trap. La valeur 6 indique « enterpriseSpecific(6) ». Pour en savoir plus, reportez-vous à la section 2.1.5 Mapping of the TRAP-TYPE value de la RFC 1215
  • 99 est le champ specific-trap. Indiquez la valeur qui convient à votre cas;
  • Le champ suivant  » indique la valeur uptime. Si celui-ci n’est pas rempli, c’est la valeur uptime du serveur qui est envoyée.
  • Le champ suivant indique un OID spécifique (e.g. 1.11.12.13.14.15)
  • Les 2 champs suivants indiquent le type et la valeur de l’objet associé :
    • s signifie une chaine de caractères
    • « Is snmptrapd Okay ? » indique la chaine de votre choix

Si votre daemon fonctionne correctement, plusieurs lignes sont enregistrées dans le fichier de log; celle-ci ressemblent à celles ci-dessous :

2010-08-18 14:32:45 arkzoyd [10.255.0.1] (via UDP: [127.0.0.1]:34723)
TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.3.1.1 Enterprise Specific Trap (99) Uptime: 1:23:34.08
iso.11.12.13.14.15 = STRING: "Is snmptrapd Okay ?"

Si vous cherchez plus d’informations, je vous invite à lire les liens suivants :

Configurer et tester snmpd

Pour configurer snmpd, le plus simple est de créer un fichier snmpd.conf à l’aide l’assistant snmpconf. Modifiez ensuite le fichier correspondant; voici un exemple de paramétrage :

grep -v "^[ t]*$" /etc/snmp/snmpd.conf |grep -v "^#"
trap2sink  arkzoyd public 

disk / 20%
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat

syslocation France
syscontact ArKZoYd <oops@easyteam.fr>

com2sec notConfigUser default public

group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser

view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1

access notConfigGroup "" any noauth exact systemview none none

Dans cette configuration les directives utilisées sont les suivantes :

  • trap2sink indique qu’il faut envoyer les interruptions détectées en protocole v2 à l’hote arkzoyd via la communauté « public »
  • disk indique qu’il faut superviser l’espace disque et envoyer une interruption snmp dans le cas ou le seuil minimum de 20% est dépassé
  • pass indique que pour les OID correspondant, l’agent doit déléguer ses opérations à un autre programme (pour le module Broadcom 5820)
  • syslocation et syscontact indiquent des informations de l’agent
  • Les 3 directives suivantes permettent de décrire des éléments de la configuration
    • com2sec nomme une configuration de sécurité (NotConfigUser) en fonction de la communauté utilisée et d’une plage d’adresse IP (default signifie toutes les adresses dans ce cas).
    • group définit des noms de groupes pour les configurations de sécurité en fonction du protocole utilisé
    • view nomme des sous-parties de l’arborescence OID
  • access utilise les paramètres définit par les directives group et view pour définir les droits d’accès aux OID. La clause décrite dans le fichier indique que l’accès à tous les OID est ouvert en lecture à tout le groupe (NotConfigUser) sans authentification.

Pour plus d’information, tapez man snmpd.conf. Une fois la configuration effectuée, redémarrer le daemon snmpd :

service snmpd restart

Si l’agent est correctement configuré, il enverra une interruption au récepteur snmptrapd configuré à l’étape précédente; le log correspondant, ressemblera à celui-ci :

2010-08-18 15:30:26 arkzoyd [UDP: [10.255.0.1]:15632]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (26) 0:00:00.26
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-MIB::coldStart
SNMPv2-MIB::snmpTrapEnterprise.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10

Une fois l’agent démarré, vous pouvez effectuer des requêtes SNMP avec les différents clients fournit par net-snmp. Pour en savoir plus, tapez man snmpwalk; voici un exemple d’interrogation pour savoir quel est la localisation de l’agent démarré sur le serveur arkzoyd :

snmpwalk -Os -c public -v 1 arkzoyd system.sysLocation.0
sysLocation.0 = STRING: France

Et voilà, vous avez créé un environnement complet pour effectuer vos tests SNMP. Dans le prochain article de cette série, vous verrez comment configurer les agents et sous-agents SNMP fournit avec l’agent Oracle 11.1 et utiliser les MIBs Oracle et les MIBs standards.