[Java] SNMP, OID's en MIBs

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • killingdjef
  • Registratie: Januari 2004
  • Laatst online: 19-10-2025
Recentelijk ben ik me gaan verdiepen in SNMP en heb hier eerder een post gemaakt. Ik heb in de tussentijd een hoop informatie opgedaan alleen zijn bepaalde essentiele dingen nog steeds onduidelijk.

Om het kort en bondig te houden zijn dit de punten waar ik graag een antwoord op zou hebben. Het liefst met concrete voorbeelden die bovenal duidelijk zijn. Het is namelijk zo dat er op heel internet geen enkele fatsoenlijke manier is hoe dit protocol toegepast dient te worden op de manier waarop ik het wil (en het waarschijnlijk ook hoort)

Ik heb zelf al iets van 4 SNMP (Westhawk, Advantnet, NET-SNMP etc.) stacks gebruikt en geen van allen hielpen. Daarnaast heb ik een stuk of 6-8 MIB (Mibble, Mib Designer, Mib Explorer, Agent Toolkit etc.) editors gebruikt en dat hielp ook niet veel.

Wat ik dus heeeeel graag beantwoord zou willen zien:

* Klopt het dat je een OID kan koppelen aan een process/device/ etc (basically alles wat je maar wilt, van netwerk router tot het checken of een app nog wel runt)?

* Hoe maak ik een MIB, welke syntax wordt er gebruikt, hoe assign ik een desbetreffend OID nummer.

*Hoe koppel ik hier traps aan die ik zelf ook wil specificeren in een MIB? (bijv. Trapcode 12 = Process killed)

*Hoe importeer ik in Java een MIB file

*Hoe zorg ik dat Java precies handelt volgens de MIB? (Hoe lees ik hem dus correct uit)


Ik ben er een beetje doorheen omdat ik hier nu al best wel heel lang al mee aan het kloten ben (zo'n anderhalve maand) en ik maar geen steek verder kom en het zo onduidelijk is als maar zijn kan.

Alvast bedankt voor het lezen

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ik zal deze week proberen om zoveel mogelijk van je vragen te beantwoorden.

je kan als editor ook eens de Visual MIBrowser proberen. die kregen we op school ook aangeraden en die's wel fijn.

ASSUME makes an ASS out of U and ME


  • killingdjef
  • Registratie: Januari 2004
  • Laatst online: 19-10-2025
HIGHGuY schreef op vrijdag 14 oktober 2005 @ 19:11:
ik zal deze week proberen om zoveel mogelijk van je vragen te beantwoorden.

je kan als editor ook eens de Visual MIBrowser proberen. die kregen we op school ook aangeraden en die's wel fijn.
Maandag, zal ik eens zoeken op Visual MIBrowser.. alvast bedankt voor de moeite.
:)

  • killingdjef
  • Registratie: Januari 2004
  • Laatst online: 19-10-2025
Ben nu Visual MIBuilder aan het downloaden.. het ziet er wel hoopgevend uit.. maar dat zegt natuurlijk nog niks :)

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ok, belofte maakt schuld:
killingdjef schreef op vrijdag 14 oktober 2005 @ 15:38:
* Klopt het dat je een OID kan koppelen aan een process/device/ etc (basically alles wat je maar wilt, van netwerk router tot het checken of een app nog wel runt)?
Voor zover ik weet kan dit, op voorwaarde dat je agent dit ondersteunt.
snmpd kan controleren of er nog X aantal instanties van een programma draaien bvb.

Wanneer je echter zelf een MIB schrijft, weet ik niet welke manier standaard is om die info op te halen.
Enkele mogelijkheden die ik mogelijk acht:
- SNMP agent extensibility (AgentX)
- SNMP Multiplexing Protocol (SMUX) << slechte/oudere implementatie van agentX

beide zorgen voor 1 master agent met meerdere subagents op 1 of meerdere machines.
Ik weet dat bepaalde constructeurs voor hun hardware (vb netwerkkaartje) constructeur specifieke data kunnen ophalen. Hoe ze dit doen weet ik niet direct.
* Hoe maak ik een MIB, welke syntax wordt er gebruikt, hoe assign ik een desbetreffend OID nummer.
de hele syntax is behoorlijk simpel (behalve voor tabellen) hier toch een poging:
code:
1
2
3
4
5
HOST-RESOURCES-MIB DEFINITIONS ::= BEGIN

IMPORTS
xxx,yyy,zzz FROM aaa      # vb MODULE-IDENTITY, OBJECT-TYPE, mib-2 FROM SNMPv2-SMI
ttt,uuu,vvv FROM blah

imports sectie importeert symbolen en oid's
code:
1
2
3
4
5
6
7
8
hostResourcesMibModule MODULE-IDENTITY
   LAST-UPDATED "200510171839"
   ORGANIZATION "..."
   CONTACT-INFO "..."
   DESCRIPTION "..."
   REVISION "200510171840"
   DESCRIPTION "over revisie"
   ::= { myNode 1 }

informatie over je MIB
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 } # impliciete declaratie van org en dod
directory OBJECT IDENTIFIER ::= {internet 1}
...
private OBJECT IDENTIFIER ::= { internet 4 }
enterprises OBJECT IDENTIFIER ::= {private 1 }
...
host     OBJECT IDENTIFIER ::= {mib-2 25} # mib-2 moet geimporteerd/gedefinieerd zijn dan
myNode OBJECT IDENTIFIER ::= { host 101 } # fictief getal

bladNaam OBJECT-TYPE
   SYNTAX  INTEGER {  # type
         ja(1),                   # eventueel met beperking of waarden
        nee(0)
   }
   ACCESS  read-write # read-only, read-write, not-accessible, write-only
   STATUS mandatory # obsolete, optional, mandatory
   DESCRIPTION "..."
   ::= { myNode 1 }  # locatie in boom

# andere types:
#INTEGER
#OCTET STRING
#OBJECT IDENTIFIER
#SEQUENCE {
#   type naam,
#   type2 naam2,
#}
#SEQUENCE OF type

#tabel:

#definitie van de tabel
ipAddrTable OBJECT-TYPE
   SYNTAX SEQUENCE OF IpAddrEntry #tabel van IP entries
   ACCESS not-accessible #moet!
   STATUS mandatory
   DESCRIPTION "blah"
  ::= {ip 20}

#defnitie van type tabelinhoud
IPAddrEntry ::=
   SEQUENCE {
      ipAdEntAddr  IpAddress,
      ipAdEntIfIndex  INTEGER,
      ipAdEntNetMask  IpAddress,
      ipAdEntReasmMaxSize  INTEGER (0..65535)  # bereik aanduiding zo mogelijk
   }
#definitie van type rij-object
ipAddrEntry OBJECT-TYPE
   SYNTAX IpAddrEntry
   ACCESS not-accessible
   STATUS mandatory
   DESCRIPTION "..."
   INDEX { ipAdEntAddr }
   ::= { ipAddrTable 1 }

defnities van nodes en bladobjecten
code:
1
2
3
4
5
6
7
8
9
10
11
12
#stel gedefinieerd:
oid OBJECT IDENTIFIER ::= { enterprises 318 }
trapArgs OBJECT IDENTIFIER ::= { oid 1 }
mijnInteger OBJECT-TYPE .... #info # ...::= { trapArgs 1}
mijnString OBJECT-TYPE ...#info#... ::= { trapArgs 2 }

trapNaam TRAP-TYPE
   ENTERPRISE oid
   VARIABLES { mijnInteger, mijnString }
   DESCRIPTION "..."
::= 20  #trapnummer
END

traps en notificaties

voor verdere syntax wijs ik je door naar de verschillende RFC's die SNMP beschrijven, ze zijn behoorlijk informatief ;)
*Hoe koppel ik hier traps aan die ik zelf ook wil specificeren in een MIB? (bijv. Trapcode 12 = Process killed)
bepaalde traps kun je bvb in snmpd zelf specifieren (bvb process killed afaik)
*Hoe importeer ik in Java een MIB file

*Hoe zorg ik dat Java precies handelt volgens de MIB? (Hoe lees ik hem dus correct uit)
weet ik niet. MIB's worden gecompileerd tot een soort databank in boomstructuur. mss eens die gecompileerde bestanden bekijken...

ASSUME makes an ASS out of U and ME