如何使用SNMP4J_AGENT定义oid来实现数据库实例和数据库参数的一对多关系?

问题描述

我正在尝试通过 snmp4j-agent 监控数据库信息。首先找到了RDBMS-MIB.txt文件,实现了对应的RdbmsMib.java。然后,我按照SampleAgent.java的例子和snmp4j-agent-1.4-InstrumentationGuide.pdf的提示,学习如何通过覆盖MOMutableColumn.java来动态更新表;但在这里我遇到了一些问题:

  1. 当RdbmsMib.java中创建entry时,会根据对应的MIB文件创建对应的索引定义,但是不知道这些索引的用途;
public class MyMIB 
//--AgentGen BEGIN=_EXTENDS
//--AgentGen END
implements MOGroup 
//--AgentGen BEGIN=_IMPLEMENTS
//--AgentGen END
{
    .
    .
    .

public static final OID oidTableEntry = 
    new OID(new int[] { 1,3,6,1,4,99,5,1 });
    .
    .
    .

private void createTableEntry(MOFactory moFactory) {
// Index definition // question 1
    .
    .
    .
// Columns definition
    .
    .
    .

// Table model
tableEntryModel = 
  moFactory.createTableModel(oidTableEntry,tableEntryIndex,tableEntryColumns);
((MOMutableTableModel)tableEntryModel).setRowFactory(
  new TableEntryRowFactory());
tableEntry = 
  moFactory.createTable(oidTableEntry,tableEntryColumns,tableEntryModel);

//Adding rows
ArrayList<Integer> oidMon1List= new ArrayList<Integer>();
oidRow1List = this.getListFromArray(oidTableEntry.getValue());
oidRow1List.add(1);

ArrayList<Integer> oidMon2List= new ArrayList<Integer>();
oidRow2List = this.getListFromArray(oidTableEntry.getValue());
oidRow2List.add(2);

DefaultMOMutableTableModel model =
               (DefaultMOMutableTableModel)tableEntry.getModel();

synchronized(model){
//question 2 : the relationship of new OID("1") and index definition
model.addRow(
        model.createRow(
                new OID("1"),new Variable[]{
                    new Integer32(123)
                    }));

model.addRow(
        model.createRow(
                new OID("2"),new Variable[]{
                    new Integer32(456)
                    }));   
    }
}
  1. 如何使用 SNMP4J-AGENT 定义 OID 来实现数据库实例和数据库参数之间的一对多关系?。比如我有一个数据库实例,里面有很多参数名和对应的参数信息(包括参数值和参数描述),类似于RDBMS-MIB.txt rdbmsDbParamTable。但是,我的理解是它们都对应一个OID值,所以我不知道如何区分它们?是否与问题 1 中的索引有关?
paramName paramVal paramComment
-------------------------------
pageSize  20       the page size
-------------------------------
logSize   30       the log size
   .
   .
   .

例如,我有两个数据库实例,db1 和 db2。因此,db1 有 params(pageSize=20,logSize=30,...) 和 db2 有 params(pageSize=40,logSize=50),但在 Rdbms-MIB.txt 中,它们使用一个表条目 OID ...39.1 .3.1,在这种情况下,如何区分它们并定义OID?提前说声谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)