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 拿掉了)
MIB库和OID不能混淆。 看SNMP的资料先。 用mibbrower导入思科mib库,印象中思科的mib库默认就有。 用mibbwower或其他snmp工具 walk一遍,oid和值都出来了,或者get next慢慢来也行。 注意snmp版本,目前常用v2c和v3PySNMP是一种跨平台的纯 Python SNMP 引擎实现。它具有功能齐全的SNMP引擎,能够以代理/管理器/代理角色运行,通过IPv4 / IPv6和其他网络传输来讨论SNMP v1 / v2c / v3协议版本。
尽管它的名字,SNMP并不是一个简单的协议。例如,它的第三个版本引入了复杂的开放式安全框架,多语言功能,远程配置和其他功能。PySNMP实施紧密遵循复杂的系统细节和功能,为用户带来最大的功能和灵活性。
———— pysnmp官网
这将导出一个名为的新文件 MY-MIB.py 。如果要查询我们的代理,您需要将MIB的副本添加到 net-snmp搜索MIB的位置我添加了MY-MIB文件 /usr/lib/python2.7/site-packages/pysnmp/smi/mibs
启动
测试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)