使用Linux上的MRTG监测Windows2000设备状态

发表于:2007-07-04来源:作者:点击数: 标签:
研究了一个下午,终于可以使用在 Linux 上部署的MRTG去监测 网络 中 Windows 2000各种设备的运行状态!不敢独享,拿出来和朋友们分享!该体系的原理是利用 LINUX 上的MRTG通过 Windows 2000上的SNMP服务获取分析 Windows 2000设备的 MI B码并获取相应数据,

研究了一个下午,终于可以使用在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 在命令窗口上右键,选择属性,后面的事嘛,呵呵

原文转自:http://www.ltesting.net