blog community

Welcome to blog community Sign in | Join | Help
in Search

SYSTEM OPERATIONS [Michel Kamp]

The challenge to ease system operations

[HOWTO] Installatie SNMP op de MOM management server

Sorry , only in Dutch. Use AltaVista's Babelfish to translate

1.1          Installatie SNMP op de MOM management server

 

Voor dat SNMP in combinatie met MOM gebruikt kan worden op Windows 2003 moet er een aantal onderdelen geïnstalleerd en geconfigureerd worden. SNMP in combinatie met MOM werkt via een WMI interface.  In het kort is de werkwijze alsvolgt:

Een SNMP device heeft een aantal counters welke uit gelezen kunnen worden. De counters kunnen via een O.I.D (object indentifier ) uitgelezen worden. Een OID is een cijfer reeks gescheiden door punten. ( bijvoorbeeld: 1.0.2.3.42 ). Aangezien zo’n OID niets zeggend is maakt men gebruik een mapping naar echte namen . Deze koppeling tussen OID en een naam wordt in een MIB file gezet. Op deze mannier kan men via een SNMP object naam de counter opvragen. MOM heeft standaard niet de mogelijkheid om via een SNMP reader direct een SNMP device uit telezen. Dit wordt opgelost door een WMI SNMP Provider. Deze WMI provider werkt als een soort Proxy. Men kan dus direct een WQL query lost laten op deze WMI class zonder enige SNMP MIB kennis te hoeven hebben. De WMI SNMP provider zal de SNMP object gegevens ophalen en deze als een WMI class terug geven. Voor dat dit goed gaat werken moet er in WMI nog wel de MIB definities omgezet worden naar MOF definities. (omdat WMI alleen met MOF werkt). Je maakt als het ware een transformatie van de MIB naar MOF classes. Dit moet men doen met de Smi2smir compiler. Indien de translatie goed is gegaan moet de net gegenereerde MOF file in WMI gezet worden met het Mofcomp commando. Nu zijn de WMI MOF classes aanwezig maar nog niet via de normale WQL aanroep bruikbaar. De WMI SNMP provider weet namelijk nog niet welke device uitgelezen moet worden. Dit moet men aangeven in de context van de WMI connectie welke op 2 mannier uitgevoerd kan worden. Via een WMI namespace of in het WMI connectie object zelf. De meest gemakkelijke methode is deze op te nemen in het WMI connectie object.

 

De onderstaande procedures beschrijven de installatie en configuratie.

 

1.1.1     Installatie WMI SNMP provider.

 

Voer uit op de MOM management server.

 

  • Via de Control Panel, selecteer Add/Remove Programs.
  • Selecteer Add/Remove Windows Components, daarna Windows Components Wizard, en selecteer Management and Monitoring Tools.
  • Selecteer Simple Network Management Protocol en de WMI SNMP Provider, en druk op OK.

 

1.1.2     SNMP Security instellen

 

Na dat de installatie is uitgevoerd is de management server dus niet alleen een WMI SNMP proxy maar ook een SNMP device/trap receiver. Dit laatste kan een security issue zijn. Dus moeten we onder andere de Community string aanpassen.

 

  • Selecteer Computer Management -> Services -> SNMP Service -> Security.
  • Voeg toe in de “accepted community names” table:

Public met rights READ ONLY. Is alleen voor test noodzakelijk. Aangezien we de management server in ‘productie’ niet gaan uitlezen met als SNMP device. Daarvoor hebben we immers WMI.

 

  • Activeer de “Accept SNMP packets from any host”. Zodat we ook de SNMP TRAPs kunnen ontvangen.

 

1.1.3     Aanmaken WMI SNMP namespace.

 

Voordat de SNMP proxy provider weet van welk device deze de gegevens moet uitlezen, moet er een content namespace aangemaakt worden. Voer de onderstaande code uit mbv mofcomp .  Je kunt deze actie , na aanpassing van de gegevens , voor elk SNMP device dat je wilt uitlezen uitvoeren , maar ook kun je in de programma code zelf deze gegevens dynamisch aanpassen. (voorkeur) 

 

// Load classes and instances into <\\.\root> namespace

 

#pragma namespace("\\\\.\\root\\snmp")              

 

[

  AgentAddress( "localhost" ),

  AgentReadCommunityName( "public"),

  AgentWriteCommunityName( "private"),

  AgentRetryCount( 1 ),

  AgentRetryTimeout( 500 ),

  AgentVarBindsPerPdu( 10 ),

  AgentFlowControlWindowSize ( 3 )

]

 

  instance of __Namespace

  {

      Name = "localhost" ;

  };

 

 

1.1.4     Transformatie MIB naar MOF

 

In eerste instantie is er alleen de MIB file RFC1213 geïnstalleerd, verder zijn er nog geen MIB classes omgezet en daarom zijn er ook geen MOF classes aanwezig voor de WMI SNMP provider (zie de namespace: root\snmp\SMIR). Windows 2003 bevat standaard een aantal MIB files welke informatie van Windows platforms kunnen uitlezen. Indien je ook Windows computers wilt monitoren met behulp van SNMP Proxy dan moeten we deze MIB files ook importeren , in alle andere gevallen hoef je alleen de SNMP MIB files importeren welke bij het te monitoren device behoren:

1.1.4.1                   Windows platform

Indien men Windows devices gaat uitlezen is het onderstaande noodzakelijk. Open een command prompt en voer uit:

cd %windir%\system32\wbem\SNMP

Smi2smir /g ..\..\hostmib.mib > hostmib.mof

Smi2smir /g ..\..\ipforwd.mib > ipforwd.mof

Smi2smir /g ..\..\nipx.mib > nipx.mof

Smi2smir /g ..\..\mib_ii.mib > mib_ii.mof

Smi2smir /g ..\..\lmmib2.mib > lmmib2.mof

Smi2smir /g ..\..\mcastmib.mib > mcastmib.mof

Smi2smir /g ..\..\rfc2571.mib > rfc2571.mof

Smi2smir /g ..\..\wfospf.mib > wfospf.mof

Smi2smir /g ..\..\dhcp.mib ..\..\msft.mib > dhcp.mof

Smi2smir /g ..\..\wins.mib ..\..\msft.mib > wins.mof

Smi2smir /g ..\..\mipx.mib ..\..\msft.mib > mipx.mof

Smi2smir /g ..\..\mripsap.mib ..\..\msft.mib > mripsap.mof

Smi2smir /g ..\..\msipbtp.mib ..\..\msft.mib > msipbtp.mof

Smi2smir /g ..\..\msiprip2.mib ..\..\msft.mib > msiprip2.mof

 

1.1.4.2                   NON-windows bijvoorbeeld CISCO routers

In dit voorbeeld gaan gaan we de CPU belasting uit een CISCO router uitlezen. Hier voor heb je de volgende MIB file nodig: OLD-CISCO-CPU-MIB . Er zijn hier 2 versies van namelijk V1 en V2. Gebruik hier voor V1. Download via: http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2 .

Deze MIB file heeft echter dependicies welke dus eerst geladen moeten worden. Download via:

http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2&mibName=OLD-CISCO-CPU-MIB de onder staande files:

·         SNMPv2-SMI (sla op als SNMPv2-SMI.my.txt )

·         CISCO-SMI (sla op als CISCO-SMI.my.txt )

·         RFC-1212 (= gelijk aan de RFC-1213 welke reeds geïnstalleerd is)

·         OLD-CISCO-CPU-MIB (sla op als OLD-CISCO-CPU-MIB.my.txt )

 

Nu we de MIB files hebben moeten deze omgezet worden naar een MOF file en daarna moet de MOF files in WMI geladen worden. Voer het volgende commando uit op de locatie waar de MIB files staan:

 

1

%windir%\system32\wbem\SNMP\smi2smir.exe /g OLD-CISCO-CPU-MIB.my.txt CISCO-SMI-V1SMI.my.txt >> CISCO-OLD-CPU.MOF

2

mofcomp CISCO-OLD-CPU.MOF

 

Er mogen geen fouten optreden tijdens deze acties. Check daarom bij regel 1 op de tekst:

MOF file has been successfully parsed

Storing data in the repository...

Done!

 

En bij regel 2 op :

C:\WINDOWS\system32\wbem\SNMP\smi2smir.exe : Semantic Check successful on "OLD-CISCO-CPU-MIB.my.txt"

C:\WINDOWS\system32\wbem\SNMP\smi2smir.exe: Generated MOF successfully

 

Als deze bovengenoemde tekst aanwezig is dan hebben we een mogelijk werkende SNMP configuratie. In de onderstaande stap wordt uitgelegd hoe we dit kunnen testen.


1.1.5     Test SNMP

 

Met de volgende VB script applicatie kunnen we de WMI SNMP Proxy testen. Voordat het script uitgevoerd kan worden moet eerst de content aangepast worden zodat deze naar het juiste SNMP device wijst. Pas hiervoor regel 6 aan met het IP nummers (of DNS naam) van het SNMP device en verander regel 7 met de juiste community string. Voer daarna het script uit op de MOM management server mbv cscript .

 

1.       

Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")

2.       

wmiLocator.Security_.ImpersonationLevel = 3

3.       

Set wmiService = wmiLocator.ConnectServer(, "root\snmp\localhost")

4.       

 

5.       

Set wmiContext = CreateObject("WbemScripting.SWbemNamedValueSet")

6.       

Set strNamedValue = wmiContext.Add("AgentAddress", "127.0.0.1")

7.       

Set strNamedValue = wmiContext.Add("AgentReadCommunityName", "public")

8.       

 

9.       

Set mibDataObjects = wmiService.ExecQuery ("Select * from SNMP_RFC1213_MIB_ifTable", , , wmiContext)

10.    

wscript.echo "Count: " & mibDataObjects.count

11.    

 

12.    

' Read SNMP values

13.    

For Each mibDataObjecta In mibDataObjects

14.    

'wscript.echo "=============================="

15.    

'wscript.echo "ifDescr: " & mibDataObjecta.Properties_.item("x25OperLocalAddress")

16.    

'wscript.echo "ifInNUcastPkts: " & cstr(mibDataObjecta.Properties_.item("ifInNUcastPkts"))

17.    

wscript.echo "=============================="

18.    

 

19.    

            For Each mibDataObject in mibDataObjecta.Properties_

20.    

                        If Not IsNull( mibDataObject.Name ) Then

21.    

                                    str = mibDataObject.Name

22.    

                                    str = str & " == "

23.    

                                    str = str & mibDataObject.Value

24.    

                                    WScript.Echo str

25.    

                        End If

26.    

            Next

27.    

wscript.echo "=============================="

28.    

 

29.    

Next

 

In dit script wordt een SNMP class uitgelezen welke op de MOM management server aanwezig is , namelijk de ifTable uit de RFC1213 MIB waarin alle netwerk interfaces staan. Als alles goed is geconfigureerd zou je de onderstaande uitvoer moeten zien (kan afwijken als er meerdere netwerkkaarten aanwezig zijn):

 

Microsoft (R) Windows Script Host Version 5.6

Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

 

Count: 1

==============================

ifAdminStatus == up

ifDescr == Intel(R) PRO/100 Network Connection

ifIndex == 65539

ifInDiscards == 0

ifInErrors == 0

ifInNUcastPkts == 323401

ifInOctets == 1314208699

ifInUcastPkts == 2398296

ifInUnknownProtos == 1

ifLastChange == 0

ifMtu == 1500

ifOperStatus == up

ifOutDiscards == 0

ifOutErrors == 2

ifOutNUcastPkts == 3443

ifOutOctets == 531226388

ifOutQLen == 0

ifOutUcastPkts == 2206851

ifPhysAddress == 00:06:5b:3d:6e:15

ifSpecific == 0.0

ifSpeed == 100000000

ifType == ethernet-csmacd

==============================

 

 Hopelijk heeft deze HOWTO je geholpen. Mijzelf in iedergeval wel ;-) 

 

Published Tuesday, February 21, 2006 2:36 PM by michel kamp
Filed under: , ,
Anonymous comments are disabled
Powered by Community Server, by Telligent Systems