...
- Define or download a MIB. If you need to create one, use MIB Designer because you will have to redesign your MIB often in an iterative process. Using a visual tool which is capable of undo/redo and moving/refactoring MIB nodes saves many hours of work and bug search.
- Create the SNMP4J-Agent object initialization for MOTables & MOScalars to hold the MIB structure. This step is called "creating the MIB stubs". This can be done automated for SNMP4J-Agent by AgenPro (code generation from the MIB).
- Create a your own MOFactory ({code}
myJmxMoFactory
{code}) based on JMXDefaultMOFactory that actually creates SNMP4J-AgentJMX based ManagedObjects (MOScalarJMX and MOTableJMX). Subclass the Mib class generated by AgenPro from the MIB and call (see also the
addJvmManagementMibInstrumentaton
method of the sample MIB instrumentation classJvmManagementMibInst
):Code Block createMO(myJmxMoFactory);
Statically map the OIDs of the MIB (generated in the Mib class by AgenPro) to the MBean names of the MBean server:
Code Block private static final Object[][] SCALAR_MBEANS_JVM_RUNTIME = { { JvmManagementMib.oidJvmRTName, "Name", String.class }, { JvmManagementMib.oidJvmRTVMName, "VmName", String.class }, { JvmManagementMib.oidJvmRTVMVendor, "VmVendor", String.class }, { JvmManagementMib.oidJvmRTVMVersion, "VmVersion", String.class }, { JvmManagementMib.oidJvmRTSpecName, "SpecName", String.class }, { JvmManagementMib.oidJvmRTSpecVendor, "SpecVendor", String.class }, { JvmManagementMib.oidJvmRTSpecVersion, "SpecVersion", String.class }, { JvmManagementMib.oidJvmRTManagementSpecVersion, "ManagementSpecVersion", String.class }, { JvmManagementMib.oidJvmRTBootClassPathSupport, new InverseBooleanType("BootClassPathSupported") }, { JvmManagementMib.oidJvmRTInputArgsCount,"InputArguments", Long.class }, { JvmManagementMib.oidJvmRTUptimeMs, "Uptime", Long.class }, { JvmManagementMib.oidJvmRTStartTimeMs, "StartTime", Long.class } };