利用脚本扩展snmp收集信息

本文介绍了如何通过配置snmpd.conf扩展agent,并利用snmp4j作为snmp manager来实现信息收集。snmp4j提供API进行封装,简化了OID的指定。同时讨论了net-snmp的agent缓存机制,强调了设置合适缓存时间的重要性。
摘要由CSDN通过智能技术生成
最近需要开发一个适用于自己集群的监控软件,在调研了ganlia等监控工具后,决定采用snmp+rrd+MySQL的方式来完成节点数据的采集和存储工作。以前没有接触过snmp,简单记录一下开发过程,下文主要会涉及:
  • snmpd.conf简单配置
  • 通过脚本方式扩展agent采集自身所需要的信息
  • 一个基于snmp4j的snmp manager实现
其实snmp还有一个很重要的trap功能,个人理解是可以完成主动汇报(报警)工作,但暂时没有用到。

有关snmp的介绍不想多说,它本身只是一个协议,在各操作系统平台下都有自己的实现。由于集群都是Linux系统,所以选择了最流行的net-snmp,各个Linux版本的软件库中应该都会包含(其实windows下面也有)。软件本身也可分为agent(snmpd包)和manager(snmp包)两部分。顾名思义,snmpd作为deamon,应该部署到被监控的节点上;而manager则包含了一系列snmpget、snmpset、snmpwalk等工具,应该被安装在监控服务器上。由于我们会用snmp4j来进行信息收集和一些配置工作(它本身就能提供snmpget、snmpset等功能),因此从理论上来讲,snmp这个包可有可无,但为了方便调试,一般还是会装上。

在安装完snmpd之后,首要任务是修改/etc/snmp/snmpd.conf配置。默认的配置文件会给出很多的注释和参考示例,很清晰。总结来说需要修改或添加以下项:

agentAddress udp:161,udp6:[::1]:161 ####### 为了能在非本地访问,监听所有161端口
view   all❘-included   .1 ####### 添加一个名为all的可以访问.1入口下所有MIB库的组
rwcommunity test default -V all ####### 添加一个对于组all具有读写权限的用户名test
extend-sh disk_info_sda1 /bin/bash /tmp/script/disk_info.sh sda1 ####### 扩展一个名为disk_info_sda1的项,执行所给地址的脚本,并以sda1为参数,结果为脚本的输出值

注意修改完后要重启一下snmpd服务。snmp协议的3个版本,只有v3才提供了安全方面的功能,也可以通过这个文件配置,这里我们先略去不谈。

snmp以MIB库的形式来管理数据。就像是一棵树,其每个叶子节点所对应的OID都可以用来访问某个特定的数据项。可以利用snmpget命令来获取某个OID对应的值,也可以用snmpwalk来遍历以给定节点为根的子树,输出其包含的所有数据项。snmp本身为我们提供了很多可以获取的有用的数据,可以通过http://www.oidview.com/mibs/detail.html这个网站进行查询,但有时候,这些数据格式或内容可能与我们想要的不一致,这时候就要用到agent扩展。net-snmp本身提供了多种扩展方式,我们仅用到了最简单的脚本方式(上述已经配置过),新添加的扩展都会被添加到NET-SNMP-EXTEND-MIB(1.3.6.1.4.1.8072.1.3.2)这个入口之下。我们通过遍历命令,可以得到如下结果(假设只有一个disk_info_sda1扩展项):

snmpwalk -v 2c -c  test  localhost 1.3.6.1.4.1.8072.1.3.2
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendCommand."disk_info_sda1" = STRING: /bin/bash
NET-SNMP-EXTEND-MIB::nsExtendArgs."disk_info_sda1" = STRING: /tmp/script/disk_info.sh sda1
NET-SNMP-EXTEND-MIB::nsExtendInput."disk_info_sda1" = STRING: 
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."disk_info_sda1" = INTEGER:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值