如何在snmp代理端调用mib

如何在snmp代理端调用mib,第1张

SNMP Server 的设定请参考 netman 兄的文件,我巳不能增减其一字

http://www.study-area.org/tips/tipsfr1.htm

SNMP Client 则是本篇的重点, 简单的介绍一下 snmp client 的使用

一般我们大多是使用 snmpget 及 snmpwalk, 但个人较习惯用 snmpwalk + MIBS

的使用方法,这些东西我都是刚学没多久 (从 Google Search 来的),不过我想

在一般的使用上对我应没有什么问题了才是 (下一步学 trap)

snmpget 要指定整个 OID,

snmpwalk 则是指出一个节段,他会帮你走完以下全部的点及值

不过以 OID 的数字机制,简直比 IP 还难背,而 IP 有 DNS 支援解析

相同的 OID 也有 MIBS (Management Information Base) 以名称来表示

只要援用相关设备的 MIBS ,就可以很方便的找到你要的 SNMP 信息

CISCO 的 MIBS 网页

http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml

CISCO MIBS FTP site ftp://ftp.cisco.com/pub/mibs/

(其它厂商我不知道....)

这里有一个很多 System 或 Vendor 的 MIBS 的网页,大家亦可参考看看(很多有用的东西哦)

http://smurfland.cit.buffalo.edu/ftp/pub/mibs/

1. 设定档

Server 端一般的 snmpd.conf 我就不介, 由于敝单位大多使用 CISCO 设备,

所以得先在 Router 或 Switch 开 snmp-server

(开法都很简单 snmp-server ....,所以我就不多言了,但一定要设 Access Control,

也要注意你的 IOS 版本是否有 SNMP 漏洞的问题)

一般 Vendor 设备开 snmp 起来时,其也会 load MIBS 进入系统,所以也可使用相关的指

令查到其 MIBS 或 OID

那 Client 端要怎么设才能抓到设备或远程的 SNMP 数据呢 ?

本处我仅介绍使用 MIBS 的方法, 不用 MIBS 实在太不人道了

下列例子我皆以 CISCO 2950 为例

方法一:

环境变量(目录,及那一个 MIBS file,不要加最后的 .my :

$>export MIBDIRS=/usr/share/snmp/mibs

$>export MIBS=CISCO-C2900-MIB

MIBS 除了装 SNMP 套件时会少量附一些外,其它你需要的可能都是要到 Vendor 处下载,

若要使用全的的 MIBS 的话可以将 CISCO-C2900-MIB 换成 ALL, 如果你的 MIBS file 不多

的话倒还无所课,但很多的话不建议你如此做,要使用多个 MIBS ,则可以

$>export MIBS=CISCO-C2900-MIB:UDP-MIB:TCP-MIB

来使用,

设定档 /etc/snmp/snmp.conf (系统 snmp 定义,没有 d 哦) ~/.snmp/snmp.conf (User)

内容很多,可参考 man page, 而我个人大概仅使用下列项目

#/etc/snmp/snmp.conf

mibdirs /usr/share/snmp/mibs/

mibs CISCO-C2900-MIB:TCP-MIB:UDP-MIB

defVersion 2c

defCommunity Public

#(def 这两行不写在 snmpwalk/snmpget 上要打 snmp???? -v 2c IP Public OID

上两行同上变量意义,第三行为 snmp version, 需与 sever 端配合,不过现在大概多是 2c 版

最后一个 Community 大家习惯设 Public, 如果可以的话建议你换成一个只有你知道的名称

(指 SNMP Server 的 Community , snmp.conf 这里要配合 Server 端)

2. 指令

我只介绍有 MIBS 的状况,不然这个数字 1.1.0 可是很长的,CISCO 设备描述):

snmpget 一次只能抓一个哦~目标明确时使用

$>snmpget My_2900_IP 1.1.0

system.sysDescr.0 = Cisco Internetwork Operating System Software ...后略

$>snmpget My_2900_IP sysDescr.0

system.sysDescr.0 = Cisco Internetwork Operating System Software ...后略

snmpwalk 取得该位置以下所有的节点,用 MIBS 是不是很清楚呢 ? 不需要考虑其 OID 为何

只要 MIBS 用对了即可

$>snmpwalk My_2900_IP tcp

tcp.tcpRtoAlgorithm.0 = vanj(4)

tcp.tcpRtoMin.0 = 300

tcp.tcpRtoMax.0 = 60000

tcp.tcpMaxConn.0 = -1

tcp.tcpActiveOpens.0 = Counter32: 1

tcp.tcpPassiveOpens.0 = Counter32: 29

tcp.tcpAttemptFails.0 = Counter32: 0

tcp.tcpEstabResets.0 = Counter32: 1

tcp.tcpCurrEstab.0 = Gauge32: 0

tcp.tcpInSegs.0 = Counter32: 10183

tcp.tcpOutSegs.0 = Counter32: 6850

tcp.tcpRetransSegs.0 = Counter32: 55

tcp.tcpInErrs.0 = Counter32: 0

tcp.tcpOutRsts.0 = Counter32: 9

$>snmpwalk My_2900_IP IfInOctets

interfaces.ifTable.ifEntry.ifInOctets.1 = Counter32: 266156610

interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 4021982

interfaces.ifTable.ifEntry.ifInOctets.3 = Counter32: 3675832515

interfaces.ifTable.ifEntry.ifInOctets.4 = Counter32: 242336

interfaces.ifTable.ifEntry.ifInOctets.5 = Counter32: 2555185044

interfaces.ifTable.ifEntry.ifInOctets.6 = Counter32: 1611529637

interfaces.ifTable.ifEntry.ifInOctets.7 = Counter32: 2376795729

...后略....

Counter32 是 32bit 的累计值

Gauge32 是 32bit 的差异值

如果 .1 的Counter值依四次 timestamp 分原是 1 5 6 9

则其 Gauge 值则为 1 4 1 3

这个值的 TYPE 对画 mrtg 是有些影响的

如果想对 MIBS 熟一点可以找一个叫 MIBBroswer 的软件 (我没用过),相信对 SNMP

的管控可以更清楚明了,MIBS file 内基本上即会有每个定义的解释,多看几遍就知

道他的语法了

要取一个值或取多个值完全看个人需要,再根据值来画图即可

用这套方法,加上 RRD (或 mrtg+rrd 即可画出每个 Switch port 的流量(下例是有接线我的才画,没接的就不画,有没有接可用 snmp 抓到,本例我将 IP 拿掉了)

该环境设计一个网络管理系统进行相关管理。要求:

采用SNMP协议作为网络管理协议(允许采用基于WEB或CORBA的新型网管技术)

给出系统使用网络环境描述(包括设备类型、网络拓扑、IP分布)

给出系统总体设计(包括系统需求、结构设计)

给出系统各功能模块设计

说明系统使用的方法和需要访问的MIB对象以及如何访问

系统在实现时至少采用一种方案对表结构进行遍历


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11260053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存