[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 namespace


 


#pragma namespace(“\.rootsnmp”)              


 


[


  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: rootsnmpSMIR). 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%system32wbemSNMP


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%system32wbemSNMPsmi2smir.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:WINDOWSsystem32wbemSNMPsmi2smir.exe : Semantic Check successful on “OLD-CISCO-CPU-MIB.my.txt”


C:WINDOWSsystem32wbemSNMPsmi2smir.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(, “rootsnmplocalhost”)


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 😉