现在的位置: 首页 > 综合 > 正文

在net-snmp agent中扩展自己的mib 的三种方式 在net-snmp agent中扩展自己的mib

2012年02月04日 ⁄ 综合 ⁄ 共 2653字 ⁄ 字号 评论关闭

在net-snmp agent中扩展自己的mib

net-snmp是遵循GPL的开源项目,www.net-snmp.org,目前已经被很多Linux发行版内置。Redhat就是典型代表。

  然而通常net-snmp中包含的MIB仅限于RFC或者其它规范统一了的MIB,另外对于特殊企业的MIB也纳入了事实上的规范,如Cisco、 Microsoft等大型公司,但是对于一些小型企业或者个人想要通过SNMP来实现远程监控的话,如果重新自己实现SNMP AGENT,显然工作量很大,不仅要包含规范统一定义的MIB,还有企业私有的欲纳入监管的MIB;

  net-snmp显然认真地考虑了这样的需求,笔者经过18个小时的简单了解,大概整理出使用net-snmp扩展私有MIB的大致方法,草于下文。 参考: http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/mib_module/index.html

  step 1、首先需要使用net-snmp的相关API编写MIB相关C代码,

  1、MFD/mib2c:这是一种通过net-snmp提供的mib2c程序自动生成相关代码的方式

  2、A simple scalar attached to a variable:适合于简单变量类型的object

  3、A simple scalar with the value returned from code:适用于任何变量类型的object

  step 2、然后将刚写的MIB C code编译进net-snmp,有几种方法:

  1、compile it into master agent:

  1)将刚编写的码加入net-snmp的src目录,

  2)通过configure的option指示make编译该mib,如./configure --with-mib-modules="myobject" 3)make

  4)make install

  这样,你的MIB就已经被内置如snmp服务程序中了,MIB的生效也就理所当然

  2、compile your code into a “subagent”:这种方式可以将subagent通过agentx协议与master agent通信,参考: http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/demon/index.html

  这种情况subagent最终是一个独立的application,包含两种生成方式,一是通过net-snmp-config工具生成;二是自己编写程序控制调用;后者更为灵活,subagent功能可以被集成在其它application中。

  3、compile your code into pluggable shared object and tell the snmpd agent to load it,这种方式最后生成一个.so的共享库,用户启动snmpd服务时可以通过指定参数的方式加载该共享库以扩展MIB,参考: http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/dlmod/index.html

net-snmp是遵循GPL的开源项目,www.net-snmp.org,目前已经被很多Linux发行版内置。Redhat就是典型代表。

  然而通常net-snmp中包含的MIB仅限于RFC或者其它规范统一了的MIB,另外对于特殊企业的MIB也纳入了事实上的规范,如Cisco、 Microsoft等大型公司,但是对于一些小型企业或者个人想要通过SNMP来实现远程监控的话,如果重新自己实现SNMP AGENT,显然工作量很大,不仅要包含规范统一定义的MIB,还有企业私有的欲纳入监管的MIB;

  net-snmp显然认真地考虑了这样的需求,笔者经过18个小时的简单了解,大概整理出使用net-snmp扩展私有MIB的大致方法,草于下文。 参考: http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/mib_module/index.html

  step 1、首先需要使用net-snmp的相关API编写MIB相关C代码,

  1、MFD/mib2c:这是一种通过net-snmp提供的mib2c程序自动生成相关代码的方式

  2、A simple scalar attached to a variable:适合于简单变量类型的object

  3、A simple scalar with the value returned from code:适用于任何变量类型的object

  step 2、然后将刚写的MIB C code编译进net-snmp,有几种方法:

  1、compile it into master agent:

  1)将刚编写的码加入net-snmp的src目录,

  2)通过configure的option指示make编译该mib,如./configure --with-mib-modules="myobject" 3)make

  4)make install

  这样,你的MIB就已经被内置如snmp服务程序中了,MIB的生效也就理所当然

  2、compile your code into a “subagent”:这种方式可以将subagent通过agentx协议与master agent通信,参考: http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/demon/index.html

  这种情况subagent最终是一个独立的application,包含两种生成方式,一是通过net-snmp-config工具生成;二是自己编写程序控制调用;后者更为灵活,subagent功能可以被集成在其它application中。

  3、compile your code into pluggable shared object and tell the snmpd agent to load it,这种方式最后生成一个.so的共享库,用户启动snmpd服务时可以通过指定参数的方式加载该共享库以扩展MIB,参考: http://net-snmp.sourceforge.net/tutorial/tutorial-5/toolkit/dlmod/index.html

抱歉!评论已关闭.