Linux snmp导入MIB库

摘要:
Linux中使用的net-snmp带有一些标准MIB,但世界上有无数种支持snmp的设备,每个制造商都有自己的定义。这些定义不能包含在net-snmp附带的MIB中。因此,如果要正确轮询此类设备,必须加载制造商自己的MIB文件。

Linux 中所使用的net-snmp自带了一些标准的MIB,但是世界上支持snmp的设备有无数种,各厂家都有自己的定义,这些定义不可能都包含在net-snmp自带的MIB中,因此,想要正确轮询一个这样的设备,必须载入厂家自己的MIB文件。
一般我们下载回来的MIB文件可能后缀名为.mib,为了清晰起见,一般改成 MIB_NAME.txt这样的形式,当然不改也可以,这个MIB文件叫什么名字无关紧要。
系统要载入一个MIB文 件,net-snmp必须知道从哪里载入。默认情况下是下边两个目录:
1. $HOME/.snmp/mibs
2. /usr/local/share/snmp/mibs
不过也有些发行版会改变这个默认路径,那么可以用下边两种方法之一获取它所使用的路径。
1.如果系统安装了net-snmp-config:
# net-snmp-config --default-mibdirs
2.如果未安装net-snmp-config:
# snmptranslate -Dinit_mib .1.3 2>&1 |grep MIBDIR
init_mib: Seen MIBDIRS: Looking in '/root/.snmp/mibs:/usr/share/snmp/mibs' for mib dirs ...

二、net-snmp加载MIB文件方法
一般来说MIB文件是一个纯文本文件,我们打开这个文件查看,找到第一个包含DEFINITIONS 的行
例如/usr/share/snmp/mibs/IP-MIB.txt中包含如下一行
# head /usr/share/snmp/mibs/IP-MIB.txt
IP-MIB DEFINITIONS ::= BEGIN
这个DEFINITIONS关键字前边的"IP-MIB"就是系统在调用这个MIB文件时所使用的Module名称,这个很重要。
网上有一些文档说增加一个新的mib文件就是把mib文件复制到'/usr/share/snmp/mibs/'中就可以了,其实这是不对的!
首先,我们要将下载到的MIB文件复制到前边所说的两个默认路径中的一个里
但是光复制过去还不能生效,net-snmp是不会自动加载所有在/usr/share/snmp/mibs/目录中的mib文件 的!
如果不能正确加载mib文件的话,就会出现"Unknown Object Identifier"这样的错误。

1、正确加载MIB文件的方法
如果要net-snmp自动加载我们下载的新MIB文件,有两种方法:
方法一: 放到snmp.conf中。
用 net-snmp-config --snmpconfpath可以确定snmp.conf文件的位置
[root@Kickstart-O ~]# net-snmp-config --snmpconfpath
/etc/snmp:/usr/share/snmp:/usr/lib/snmp:/root/.snmp:/var/net-snmp
将所要加载的MIB的Module名称加到snmp.conf中,如下例:
mibs +CISCO-RHINO-MIB
mibs +SOME-OTHER-SPIFFY-MIB
如果图省事也可以这样,当然我们不建议这样。
mibs +ALL
因为这样有可能会提示如下错误
# snmpwalk -v2c public 192.168.1.100
Warning: Module MAU-MIB was in /usr/share/snmp/mibs//DOT3-MAU-MIB.txt now is /usr/share/snmp/mibs//RFC2668-MIB.txt
Warning: Module DISMAN-EVENT-MIB was in /usr/share/snmp/mibs//EVENT-MIB.txt now is /usr/share/snmp/mibs//DISMAN-EVENT-MIB.txt
Warning: Module P-BRIDGE-MIB was in /usr/share/snmp/mibs//P-BRIDGE-MIB.txt now is /usr/share/snmp/mibs//P-BRIDGE.txt
可以将标准错误文件转向来屏蔽这些警告信息
# snmpwalk -v2c public 192.168.1.100 2>/dev/null
SNMPv2-MIB::sysDescr.0 = STRING: Linux server1 2.4.34-pre2 #170 Fri Sep 15 20:10:21 CEST 2006 mips
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (706980) 1:57:49.80

方法二: 使用系统变量(定义MIBS变量)
# MIBS=+CISCO-RHINO-MIB:SOME-OTHER-SPIFFY-MIB
# export MIBS #导入MIBS

通过上述两种方法之一,net-snmp就可以正确加载我们的新MIB文件,使用snmpget也就可以轮询到新MIB文件中所定义 的OID了。
# snmpget -v1 -c public 192.168.49.253 BREEZECOM-DOT11EXT-MIB::roamQuality.1
BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3
或者这样也可以
# snmpget -v1 -c public 192.168.49.253 roamQuality.1
BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3

三、snmp常用命令
1、snmptranslate
使用'snmptranslate' 命令可以获得一个文本项对应的OID值
# snmptranslate -On BREEZECOM-DOT11EXT-MIB::roamQuality
.1.3.6.1.4.1.710.7.1.5.1.23.1.7
也可以使用'snmptranslate'命令查询一个指定的对象
# snmptranslate -IR roamQuality
BREEZECOM-DOT11EXT-MIB::roamQuality
还可以用snmptranslate命令把OID转化成文字描述
# snmptranslate .1.2.840.10036.2.2.1.12
IEEE802dot11-MIB::dot11FCSErrorCount
# snmptranslate -Of .1.2.840.10036.2.2.1.12
.iso.member-body.us.ieee802dot11.dot11mac.dot11CountersTable.dot11CountersEntry.dot11FCSErrorCount
也可用snmptranslate命令从mib文件获得某个对象的全部细节
# snmptranslate -Td BREEZECOM-DOT11EXT-MIB:roamQuality
BREEZECOM-DOT11EXT-MIB::roamQuality
roamQuality OBJECT-TYPE
-- FROM BREEZECOM-DOT11EXT-MIB
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "An indicator for the quality of the BSS. The quality is
calculated over the received Beacons of the BSS and depends
on the selected quality indicator. The semantics of the
indicator is 'low is good quality' and 'high is bad quality'."
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) breezeCOM(710)ds11Products(7) dot11ExtMIB(1) dot11ExtWBUObjs(5) roam(1) roamTable
(23) roamEntry(1) 7 }

2、snmpwalk
# snmpwalk -v1 -c public 192.168.49.253 dot11CountersTable
IEEE802dot11-MIB::dot11TransmittedFragmentCount.1 = INTEGER: 122172497
IEEE802dot11-MIB::dot11MulticastTransmittedFrameCount.1 = INTEGER: 45242
IEEE802dot11-MIB::dot11FailedCount.1 = INTEGER: 4009
IEEE802dot11-MIB::dot11RetryCount.1 = INTEGER: 1601483
IEEE802dot11-MIB::dot11MultipleRetryCount.1 = INTEGER: 885859
IEEE802dot11-MIB::dot11FrameDuplicateCount.1 = INTEGER: 543281
IEEE802dot11-MIB::dot11RTSSuccessCount.1 = INTEGER: 0
IEEE802dot11-MIB::dot11RTSFailureCount.1 = INTEGER: 0
IEEE802dot11-MIB::dot11ACKFailureCount.1 = INTEGER: 3971754
IEEE802dot11-MIB::dot11ReceivedFragmentCount.1 = INTEGER: 108826417
IEEE802dot11-MIB::dot11MulticastReceivedFrameCount.1 = INTEGER: 31359
IEEE802dot11-MIB::dot11FCSErrorCount.1 = INTEGER: 831325
IEEE802dot11-MIB::dot11TransmittedFrameCount.1 = INTEGER: 122156588
IEEE802dot11-MIB::dot11WEPUndecryptableCount.1 = INTEGER: 0

3、snmpget
需要注意的是,在使用snmpget命令的时候,需要在查询的OID尾部增加.0或者.1,不然会报错。
# snmpget -v1 -c public 192.168.49.253 dot11ACKfailureCount
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: IEEE802dot11-MIB::dot11ACKFailureCount
# snmpget -v1 -c public 192.168.49.253 dot11ACKFailureCount.1
IEEE802dot11-MIB::dot11ACKFailureCount.1 = INTEGER: 3971912

四、导入mib库并获取负载均衡F5的Mib信息
按以下方法将F5的mib库mibs_f5.tar.gz解压后的文件放到snmpd服务器的mib库目录,重启服务service snmpd restart即可。
Linux snmp导入MIB库第1张
验证成功:
snmpwalk -c public -v 2c 123.123.123.123 F5-BIGIP-LOCAL-MIB::ltmVirtualServVaName

参考链接:
      Management Information Base(管理信息库,MIB)是一组对象,定义可对某个设备提出的查询。我们所用的snmp监控主机如果要轮询一个支持snmp的设备的某项数据,它必须发出被查询设备所能理解的查询命令,这个就需要监控主机载入被查询设备对应的 MIB,这个MIB将通知snmp监控主机有关由 MIB 模块化的数据的布局和组成。

  https://moneyslow.com/%E5%AF%BC%E5%85%A5mib%E5%BA%93%E5%B9%B6%E8%8E%B7%E5%8F%96%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1f5%E7%9A%84mib%E4%BF%A1%E6%81%AF.html

免责声明:文章转载自《Linux snmp导入MIB库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python爬取图片遇见src乱码: data:image/png;base64Delphi国内优秀网站及开源项目下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux内核:关于中断你需要知道的

1、中断处理程序与其他内核函数真正的区别在于,中断处理程序是被内核调用来相应中断的,而它们运行于中断上下文(原子上下文)中,在该上下文中执行的代码不可阻塞。中断就是由硬件打断操作系统。 2、异常与中断不同,它在产生时必须考虑与处理器时钟同步。异常被称为同步中断,例如:除0、缺页异常、陷入内核(trap)引起系统调用处理程序异常。 3、不同的设备对应的中断不...

linux与Windows使用编译区别及makefile文件编写

一、Windows与;Linux嵌入式开发区别 Windows下编辑、编译、执行 编辑:sourceInsight;ADS; 编译:指定链接地址,指定链接顺序,编译 执行:烧写到单板再启动 Linux下编辑、编译、执行 编辑可在Windows下编写上传 编译:链接脚本(lds),用命令行链接时,文件顺序(makefile)gcc -o ;由makefil...

Linux下一次性清除Redis所有缓存

Linux下一次性清除Redis所有缓存 第一步:进入redis客户端   1.查看进程  ps -ef|grep redis   2.执行./redis-cli或者./redis-cli -h 127.0.0.1 -p 6379 第二步:执行dbsize命令(查看缓存大小) 127.0.0.1:6379> dbsize 第三步:清理。命令 flu...

linux内核之文件系统

本文主要是基于百度文库的《Linux2.4.30内核文件系统学习(多图).doc》和360doc的《Linux内核虚拟文件系统》修改而来,当然还参考了其他的一些文档,在此就不一一列出了。本来在看到这些文章后,都没有勇气再写点文件系统方面的东西了,这些文章实在太精彩了。最后还是鼓足勇气决定把整理的资料增加了一点自己的理解写下来,主要目的是让各位高手看看我的理...

linux下生成core dump文件方法及设置【转】

转自:https://blog.csdn.net/andy31688/article/details/84493251?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source...

Linux服务器性能查看分析调优

一 linux服务器性能查看 1.1 cpu性能查看 1、查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l 2、查看每个物理cpu中的core个数: cat /proc/cpuinfo |grep "cpu cores"|wc -l 3、逻辑cpu的个数: cat /proc...