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