研究了一个下午,终于可以使用在Linux上部署的MRTG去监测网络中Windows2000各种设备的运行状态!不敢独享,拿出来和朋友们分享!该体系的原理是利用LINUX上的MRTG通过Windows2000上的SNMP服务获取分析Windows2000设备的MIB码并获取相应数据,最后用MRTG绘制出图表。
这篇文章仅以对WINDOWS2000 CPU的监测为例,其他设备的监测基本也是这个原理,重要的是掌握原理。
一、配置Windows2000环境
=======================
1、如果你的Window2000没有安装“简单网络管理协议SNMP”的话,请先从安装光盘中安装SNMP服务;另外,这篇文章仅仅是对WINDOWS2000进行监测,其他WINDOWS系统不保证能行。在安装完SNMP服务后可以在“服务”里更改SNMP的社区名称,默认为“public”。
2、给SNMP服务打补丁
这里说的补丁可不是微软的那些让人头疼的补丁,而是一个转为Windows2000的SNMP服务开发的增强工具,叫SNMP4W2K-STD,可以在http://www.wtcs.org/snmp4tpc/snmp4w2k.htm下载。
下载完成后,安装。安装完毕,进入CMD[color=red:f1e66855e5],(注意:进入CMD之前要把CMD的纵缓冲区设置为大于500的数值,否则会因为纵缓冲区不足而引起错误)[/color:f1e66855e5]执行:
[quote:f1e66855e5]C:\Program Files\SNMP4W2K-STD\MIBINST.BAT[/quote:f1e66855e5]根据提示进行选择,不过通常只要一路y就可以完成,最后程序会自动重新启动Windows2000的SNMP服务。这样,就成功的给SNMP服务打上了补丁。
3、获取CPU的MIB码:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48[/code:1:f1e66855e5]
二、配置MRTG
============
1、创建wincpu.cfg
[quote:f1e66855e5]vi /etc/wincpu.cfg[/quote:f1e66855e5]
[code:1:f1e66855e5]### Crated by Nanu
# http://nanu.8866.org
### Global Config Options
# for UNIX
WorkDir: /www/sys/WINMRTG
# or for NT
# WorkDir: c:\mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
Options[_]: growright
Language: chinese
EnableIPv6: no
# CPU
Target[CPU]: .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48&.1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48:public@win2000'sIP
Ysize[CPU]: 200
Xsize[CPU]: 400
Ytics[CPU]: 10
MaxBytes[CPU]: 100
Title[CPU]: Windows2000 CPU使用率
PageTop[CPU]: <H1>Windows2000 CPU使用率</H1>
ShortLegend[CPU]: %
YLegend[CPU]: CPU Load
Legend1[CPU]: CPU Utilization # CPU可用资源
Legend2[CPU]: .
Legend3[CPU]: Max Value Per-Interval # 每个周期内CPU的最大负载值
Legend4[CPU]: .
LegendI[CPU]: CPU:
LegendO[CPU]:
Options[CPU]: gauge, growright, nopercent, unknaszero[/code:1:f1e66855e5]
2、生成MRTG统计
===============
[quote:f1e66855e5]# /path-to-mrtg/bin/mrtg /etc/wincpu.cfg[/quote:f1e66855e5]需要连续运行三次。如果没有错误产生就说明成功了。
[quote:f1e66855e5]# /path-to-mrtg/bin/indexmaker /etc/wincpu.cfg > /www/sys/WINMRTG/index.html[/quote:f1e66855e5]
这样就可以完成了对Windows2000上CPU的统计!
三、总结
========
这里提供的只是一个方法,对于其他WINDOWS2000设备的统计都是相同的原理,重要的是要让SNMP可以对外提供这些信息,也就是上面的那个补丁,其次要知道相关设备的MIB码,有了这两步,就可以监测任何东西了。关于MIB的资料网上有很多,推荐大家去国外的网站上研究,国内网站这方面的资料太少了。
四、附
======
1、WINDOWS2000 其他设备MIB码:
内存:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.1.2.0[/code:1:f1e66855e5]
硬盘:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.4.1.5.0[/code:1:f1e66855e5]
逻辑磁盘:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.5.1.4.0[/code:1:f1e66855e5]
页面文件:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.6.1.3.0[/code:1:f1e66855e5]
进程:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.7.#[/code:1:f1e66855e5]
缓存:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.11.27.0[/code:1:f1e66855e5]
TCP连接:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.12.2.0[/code:1:f1e66855e5]
UDP连接:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.14.5.0[/code:1:f1e66855e5]
IP连接:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.13.9.0[/code:1:f1e66855e5]
ICMP连接:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.23.1.0[/code:1:f1e66855e5]
DNS:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.15.45.0[/code:1:f1e66855e5]
DHCP服务器:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.16.9.0[/code:1:f1e66855e5]
IIS文件缓存命中:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.17.8.0[/code:1:f1e66855e5]
WEB服务器连接数:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.18.1.5.0[/code:1:f1e66855e5]
WEB服务器活动页面:
[code:1:f1e66855e5].1.3.6.1.4.1.311.1.1.3.1.1.23.1.0[/code:1:f1e66855e5]
2、GetIf
=====
GetIf是一个运行于WINDOWS平台的SNMP工具。功能非常强大,可以查询WINDOWS很多设备的MIB码和其他网络设备,如思科等的MIB码。有了这些MIB码就可以方便的对设备进行监测了。
GetIf可以在:http://www.wtcs.org/snmp4tpc/getif.htm 下载。
安装GetIf的方法如下:
1、下载GETIF2.3
http://www.wtcs.org/snmp4tpc/FILES/Tools/SNMP/getif/getif-2.3.1.zip
2、下载MIB库
http://www.wtcs.org/snmp4tpc/FILES/Tools/SNMP/getif/GETIF-MIBS.ZIP
3、解压GETIF2.3后进行安装,按照默认设置安装即可。
4、删除GETIF2.3安装目录中MIBs子目录里的.index文件。
5、解压GETIF-MIBS.ZIP到上步中.index文件所在的目录。
6、运行GetIf2.3
里面有很多页签,先在第一个页签里填写需要监测的设备IP地址或主机名,然后填写SNMP的社区名称。就可以获取相应的信息。
其中有一个页签中就是对MIB码进行查询的,GETIF使用标准的树行结构列出MIB码,找到相应的设备后,MIB码也就显示在下面了。非常方便!
恍若如梦 回复于:2005-04-05 10:12:48 |
太棒了。 只是有一个问题,楼主你是怎么得到MIB代码的呢?有什么办法或软件呢?多谢! |
freedom_L 回复于:2005-04-05 10:13:37 |
不错,支持.多谢共享! |
守夜人 回复于:2005-04-05 10:16:51 |
好东西,顶!!! |
Nanu 回复于:2005-04-05 11:30:00 |
[quote:6a157397ae="恍若如梦"]太棒了。 只是有一个问题,楼主你是怎么得到MIB代码的呢?有什么办法或软件呢?多谢![/quote:6a157397ae] 可以用一个叫GetIf的软件获得,在GOOGLE上搜索一下GetIf,去官方网站上下载安装(还有一个MIB库需要安装,官方网站也提供下载),研究一下安装使用文档。这个软件在SNMP方面的功能非常强大! |
ioiioi 回复于:2005-04-05 13:40:22 |
那如果我在cisco的网站上找到一个oid,但是用net-snmp的snmpget oid确说没有此oid,请问又是什么原因呢? |
恍若如梦 回复于:2005-04-05 14:23:25 |
[quote:8fa42ed330="Nanu"] 可以用一个叫GetIf的软件获得,在GOOGLE上搜索一下GetIf,去官方网站上下载安装(还有一个MIB库需要安装,官方网站也提供下载),研究一下安装使用文档。这个软件在SNMP方面的功能非常强大![/quote:8fa42ed330] 多谢,有空一定试试,很好的东西,多谢楼主分享!! |
zor 回复于:2005-04-07 10:01:25 |
2000可以说是最简单的snmp应用实例了,只要能查所有关于2000的信息全部可以检索到。具体的数值说明可以检索winnt目录内的 *.mib 文件 snmp 返回信息的类型含义都有详细的介绍,不过都是英文的。 http://snmpboy.msft.net/ 这个网站比较简单的应用了一些,想更好使用的可以看看。 |
wind521 回复于:2005-04-07 10:40:10 |
可以去看RFC 也可以去找一本叫《Essential SNMP》的书,介绍的都很好 |
andyliu 回复于:2005-04-07 11:29:30 |
好东西好东西,非常有用. |
wild_li 回复于:2005-04-08 09:48:44 |
你们试过可以吗??为什么我测的时候不行!!!! 我的linux 为 as 3.0 为什么下了 perl mrtg wincpu.cfg之后,路径下面却没有东西>> |
chenzq1604 回复于:2005-04-08 09:57:13 |
好东西,有时间试试。多谢楼主了 |
mylinger 回复于:2005-04-08 11:02:12 |
顶一下,我也测试不成功,楼主是不是忘了加参数了。我监控linux 机器上的CPU MEM IO 都是需要这样写的 例如内存 snmpwalk -v 1 192.168.0.2 -c mrtg .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\" '{print $2}' 执行后就会得到2个数值 但楼主的这句,怎么执行呢???我上面的是用 net-snmp的snmpwalk 命令,楼主的是用 net-snmp的什么命令呢?? .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48&.1.3.6.1.4.1.311.1.1.3. 1.1.2.1.3.1.48:public@192.168.0.3 执行后出现错误 [1] 25053 -bash: .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48: command not found -bash: .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48:public@192.168.0.3 : command not found [1]+ Exit 127 .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48 敢问一句,楼主你试验过吗?还是照抄那里的文章呀! |
Nanu 回复于:2005-04-08 15:48:45 |
[quote:290e33b8d5="mylinger"]t 127 .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48 敢问一句,楼主你试验过吗?还是照抄那里的文章呀![/quote:290e33b8d5] 仔细查一下你的配置,如果不放心的话,可以用GETIF去获取你机器上的CPU MIB码,另外,你的机器有几个CPU?是否是SMP CPU?这些都有关系。 关于我是否成功的问题,你可以去问问Platinum版主。 :mrgreen: |
Nanu 回复于:2005-04-08 15:50:18 |
[quote:be57b75100="wild_li"]你们试过可以吗??为什么我测的时候不行!!!! 我的linux 为 as 3.0 为什么下了 perl mrtg wincpu.cfg之后,路径下面却没有东西>>[/quote:be57b75100] 你指的路径是什么? |
myster 回复于:2005-04-10 00:06:28 |
不错不错,受益! |
wild_li 回复于:2005-04-11 12:49:38 |
你作mrtg的话。你 mrtg wincpu.cfg之后应该在他的workdir: 的路径下面会产生一些文件吧。。但是我mrtg wincpu.cfg之后,什么都没有。 |
Nanu 回复于:2005-04-11 13:10:46 |
嗯,应该在WORKDIR中生成一些图形和文件。 如果没有生成的话就可能是出现了问题。 可是能WINDOWS2000 SNMP的配置问题,也可能是LINUX的问题,总之可能产生问题的因素很多,需要看出错信息,然后慢慢查找。 另外,我只是对WINDOWS2000监测成功,对于其他版本的WINDOWS不敢保证能行。 |
wild_li 回复于:2005-04-11 13:13:08 |
如此精华的东西,能不能step to step的写清楚一点。如getif在哪下载,win2000系统的需求。要求装什么特殊的东西???请“Nanu 精灵"再来一次。。。 |
wild_li 回复于:2005-04-11 13:48:30 |
我终于好像测出来了。不过在测准不准确 |
Nanu 回复于:2005-04-11 16:36:39 |
[quote:14c563d631="wild_li"]如此精华的东西,能不能step to step的写清楚一点。如getif在哪下载,win2000系统的需求。要求装什么特殊的东西???请“Nanu 精灵"再来一次。。。[/quote:14c563d631] 嗯,我会尽快整理一下,把这些东西加上去的。在原贴后面编译! |
stone21cn 回复于:2005-04-12 13:54:55 |
学习中 ,真想一下子成为此中高手,但是我们学习能力还是有限的 多谢楼主提供 |
wild_li 回复于:2005-04-13 14:29:19 |
我试ok了,问一下版主,有篮绿两种线,篮线不知道是指什么,绿线是指什么?? |
Nanu 回复于:2005-04-13 16:20:59 |
在wincpu.cfg文件里我写了注释的。 |
oicqonly 回复于:2005-05-01 14:51:26 |
装好后没有那么多东西啊,windowsNT下只有可怜的server和dc两项,没有官方主页上图示的performance等?怎么办? |
Nanu 回复于:2005-05-01 18:02:34 |
需要下载安装最新的MIB库,在官方网站上有下载的。 |
oicqonly 回复于:2005-05-02 14:57:39 |
我确信已经安装好了SNMP4W2K-STD,也安装了getif和它的MIB,但是还是只有零零几项.过程中唯一有一点出入的就是,当我装好getif 后mibs文件夹中没有.index,所以后来我就直接把官方MIB解压到这个文件夹下了. 要不我试试2.2版本的getif? |
bananalx 回复于:2005-05-02 16:14:49 |
怎么样设置CMD的纵缓冲区~~~~? THX |
oicqonly 回复于:2005-05-02 17:30:38 |
请教一下,有哪个软件可疑比较方便的浏览和查询Solaris和Linuxx下 OID数值和信息?谢谢... |
oicqonly 回复于:2005-05-02 20:00:14 |
[quote:7fd6e775fc="bananalx"]怎么样设置CMD的纵缓冲区~~~~? THX[/quote:7fd6e775fc] 运行cmd 在命令窗口上右键,选择属性,后面的事嘛,呵呵 |
文章来源于领测软件测试网 https://www.ltesting.net/