xx110 SNMP代理开发说明(完整)

本文档详细介绍了如何开发一个SNMP代理,包括需求、设计思想、信息节点实现、Trap告警功能以及SNMP移植到eX110设备上的步骤。代理程序基于net-snmp开源软件,通过mib2c工具将MIB库转换为代理框架,实现CPU占用率等信息节点的查询和Trap告警功能。同时,文章提供了移植到eX110的Makefile配置和配置文件示例。
摘要由CSDN通过智能技术生成

1SNMP代理需求

(1) 提供设备相关的信息节点,供SNMP管理端查询,可支持getget nextwalk查询命令。提供SNWANIPCPU占用率、内存使用率、进程个数、网络接口状态、网络接口当前流量、软件版本信息等节点信息。

(2) 提供对特俗事件到来时的发往SNMP管理端得TRAP告警功能。包括CPU使用率超阈值、内存超阈值、网口流量超阈值、WANIP改变、设备重启等告警功能(暂未做)。

提供对snmp v1v2版本的支持(v3版本将在后期实现)

 

2、总体设计思想

(1) 开发环境:基于开源软件net-snmp-5.4.2

(2) MIB库来源:根据管理端的功能需求和节点的定义自行开发。

(3) 程序实现:利用mib2c工具将MIB库转化为代理程序框架,然后基于此框架进行进一步开发。最后将开发的代理程序静态编译进net-snmp框架中,它将注册到net-snmp框架中。注册的方法是再特定目录下(以agent/mibgroup/bamboo目录为例)分别建立一个.c文件和头文件,例如,名称分别取为bamboo.cbamboo.h,在bamboo中存放自己开发的所有c程序和头文件(xxx.cxxx.h),然后在bamboo.h中添加module_require(xxx),并在configure时跟上:—with-mib_modules=bamboo”来配置Makefile,使之在编译时加载bamboo文件下面的xxx文件(可以有多个xxx文件)。

 

3get信息节点的实现,以cpu占用率信息节点为例

(1) 自己编写该节点MIB库,由于eX110只有一个CPU,所以编写一个节点即可:

          hr_proc  OBJECT-TYPE

          SYNTAX      Integer32

              MAX-ACCESS  read-only

              STATUS      current

              DESCRIPTION "cpu usage"           

              ::= { my_cpu 2 }

(2) 利用mib2c工具mib2c_old-api.conf将该mib库转化为get信息节点的程序框架,然后基于该框架,添加需要实现的功能,部分代码如下:

 

/*由系统基于MIB库生成的与节点相关的信息的结构体*/

#define    HRPROC_LOAD           2

struct variable4 hrproc_variables[] = {

    {HRPROC_LOAD, ASN_INTEGER, RONLY, var_hrproc, 3, {1, 2, 768}}

};

oid             hrproc_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 3 };

 

 

/*由系统生成的该节点初始化函数,在该初始化函数中注册了针对该节点的处理函数*/

void init_hr_proc(void)

{

    REGISTER_MIB("bamboo/hr_proc", hrproc_variables, variable4,

                 hrproc_variables_oid);

}

 

 

/*

 * header_hrproc:自己编写实现的函数,该函数将已注册到net-snmp的节点信息和管理端与访问的节点信息作比较。由于规定第一个CPU是用节点编号768开始,并且eX110只有一个CPU即要求该节点为1.3.6.1.2.1.25.3.3.1.2.768 ,所以将netsnmp 中提供head_generic()函数中将已注册节点最后加“0”这步去掉, 直接将注册的该节点和跟管理端欲访问的节点作对比。

 * vp     IN      - 指向已注册节点数组的指针

 * name    IN/OUT  - 指向管理端欲访问节点的指针

 * length  IN/OUT  - length of IN/OUT oid's

 * exact   IN      - TRUE if an exact match was requested

 * var_len OUT     - length of variable or 0 if function returned

 * write_method

 */

 

Int header_hrproc(struct variable *vp,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值