amwdnuff 发表于 2009-5-12 13:39

snmp.conf配置

snmp.conf配置
用snmp+mrtg可以很好的实现对局域网内服务器状态的监控。
现在就以用snmp+mrtg监控一台局域网内的redhat机器(IP:192.168.13.103)的网卡、内存、CPU、 DISKIO为例子,谈一下如何实现。
基本的法办就是用一台redhat监控机器(IP:192.168.13.105),通过snmpwalk命令去抓 目标服务器的状态数据,然后用mrtg画出图来。
1、首先我们要把目标snmpd.conf文件的配好。这是用snmpwalk命令 一抓取数据的关健。下面是目标机器(IP: 192.168.13.103)上的/etc/snmp/snmpd.conf文件
部份内容,红色的部份是我对snmpd.conf所做的改动。
# cat /etc/snmp/snmpd.conf

####
# First, map the community name \"public\" into a \"security name\"

# sec.namesourcecommunity
com2sec notConfigUserdefault public#定义community名称为 public,映射到安全名 notConfigUser。

####
# Second, map the security name into a group name:

# groupNamesecurityModel securityName
group notConfigGroup v1 notConfigUser #定义安全用户名notConfigUser映射到notConfigGroup组。
group notConfigGroup v2c notConfigUser

####
# Third, create a view for us to let the group have rights to: #定义一个view,来决定notConfigUser可以操作的范围。


# Make at leastsnmpwalk -v 1 localhost -c public system fast again. #定义可查看的snmp的范围。
# name incl/excl subtree mask(optional)
viewsystemviewincluded .1.3.6.1.2.1.1
viewsystemviewincluded .1.3.6.1.2.1.25.1.1
view all included.1
####
# Finally, grant the group read-only access to the systemview view. #给notConfigGroup组所定义view名 all 以只读权限。

# groupcontext sec.model sec.level prefix read writenotif
accessnotConfigGroup \"\"any noauthexactallnone none#accessnotConfigGroup \"\"any noauthexactmib2 none none

# -----------------------------------------------------------------------------

# Here is a commented out example configuration that allows less
# restrictive access.

# YOU SHOULD CHANGE THE \"COMMUNITY\" TOKEN BELOW TO A NEW KEYWORD ONLY
# KNOWN AT YOUR SITE.YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO
# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE.

## sec.namesourcecommunity
#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24COMMUNITY

## group.name sec.modelsec.name
#group MyRWGroupanylocal
#group MyROGroupanymynetwork
#
#group MyRWGroupanyotherv3user
#...

## incl/excl subtreemask
#view allincluded.1 80

## -or just the mib2 tree-

#view mib2 included.iso.org.dod.internet.mgmt.mib-2 fc
#view mib2 included.iso.org.dod.internet.mgmt.mib-2 fc


##context sec.model sec.level prefix read writenotif
#access MyROGroup \"\"any noauth0allnone none
#access MyRWGroup \"\"any noauth0allallall


其实配制一个snmpd.conf文件不算太难,
(1)首选是定义一个共同体名(community),这里是public,及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:)
# sec.namesourcecommunity
com2sec notConfigUserdefault public
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
groupNamesecurityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3)定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
viewall included .1
(4)定义notConfigUser这个组在all这个view范围内可做的操作,这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
# groupcontext sec.model sec.level prefix read writenotif
accessnotConfigGroup \"\"any noauthexactallnone none

ok,这样我们的snmpd.conf文件就基本配成了,用servicesnmpdrestart重启snmpd服务。现在我们做一个测试,在监控机上打下面的命令:
# snmpwalk -v 1 192.168.13.103 -c public system
SNMPv2-MIB::sysDescr.0 = STRING: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (7565377) 21:00:53.77
SNMPv2-MIB::sysContact.0 = STRING: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: wy1
SNMPv2-MIB::sysLocation.0 = STRING: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10
``````````````````````
“Linux wy1 2.4.20-8smp”操作系统的信息已经出来了:)
现在我们在目标机上来写一些脚本来显标MEM、CPU、DiskIO
MEM数据的抓取脚本:
# catmfree.sh
#!/bin/sh
/usr/bin/free -m | grep Mem |awk &#39;{print $4}&#39;
/usr/bin/free -m | grep Mem |awk &#39;{print $2}&#39;
# shmfree.sh (上面一个数据是内存使用量,下面的是内存总量,M)
442
1006
CPU数据的抓取脚本
# catcpustat.sh
#!/bin/sh
idle=`sar-u 1 3 | grep Average | awk &#39;{print $6}&#39;`
used=`echo \"101 - $idle\" | bc -l -s`
echo $used
echo $idle
DiskIO数据的抓取脚本
# catiostat.sh(显示硬盘IO,k/s)
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk &#39;{print $4}&#39;`
used2=`echo \"$used1 / 2\" | bc -l`
echo $used2
echo $used2

好现在我们已经能得到这数据了,怎么才能让监控主机通过snmpd得到这些数据呢?可以在目标主机的/etc/snmp/snmpd.conf文件下面加个这些行:
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /root/mfree.sh
exec .1.3.6.1.4.1.2021.54 cpustat /bin/sh /root/cpustat.sh
exec .1.3.6.1.4.1.2021.55 iostat /bin/sh /root/iostat.sh
servicesnmpdrestart重启目标主机上的snmpd服务。
这样在监控主机上运行:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53
UCD-SNMP-MIB::ucdavis.53.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.53.2.1 = STRING: \"mfree\"
UCD-SNMP-MIB::ucdavis.53.3.1 = STRING: \"/bin/sh /root/mfree.sh\"
UCD-SNMP-MIB::ucdavis.53.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: \"442\"
UCD-SNMP-MIB::ucdavis.53.101.2 = STRING: \"1006\"
UCD-SNMP-MIB::ucdavis.53.102.1 = INTEGER: 0
其中UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: \"442\" 中的442就是mfree.sh输出的第一个数据,1006是mfree.sh输出的第二个数据。OK,再做一下加工:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\\\" &#39;{print $2}&#39;
443
1006
好,我们已经通过snmpd从监控主机上得到了目标主机上内存使用的这两个数据了:),其它的两个脚本也一样:
CPU使用、空闲。
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\\\" &#39;{print $2}&#39;
1.17
99.83
DISK IO 状态:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\\\" &#39;{print $2}&#39;
43.00000000000000000000
43.00000000000000000000

最 后是编辑监控主机上的mrtg.cfg文件,在Target中加入上面的命令,下面是我的mrtg.cfg文件,前面的两个 Target是我用/usr/bin/cfgmaker --global &#39;WorkDir: /home/httpd/mrtg/net&#39; -- global &#39;Options:growright,bits&#39; --ifref=ip public@192.168.13.103命令生 成的,
后面的是我跟据platinum 的\"mrtg能做些什么\"的贴子内的mrtg.cfg文件改的。(在精华里,大家可以看一下)。
# cat /home/httpd/mrtg/103/mrtg.cfg
# Created by
# /usr/bin/cfgmaker --global &#39;WorkDir: /home/httpd/mrtg/net&#39; --global &#39;Options:growright,bits&#39; --ifref=ip public@192.168.13.103


### Global Config Options

#for UNIX
# WorkDir: /home/http/mrtg

#or for NT
# WorkDir: c:\\mrtgdata

### Global Defaults

#to get bits instead of bytes and graphs growing to the right
# Options: growright, bits

WorkDir: /home/httpd/mrtg/103
Options:growright,bits
Language: chinese
######################################################################
# System: wy1
# Description: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
# Contact: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf)
# Location: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
######################################################################


### Interface 2 >> Descr: &#39;eth0&#39; | Name: &#39;&#39; | Ip: &#39;192.168.13.103&#39; | Eth: &#39;00-06-5b-19-9d-ea&#39; ###

Target: /192.168.13.103:public@192.168.13.103:
SetEnv: MRTG_INT_IP=\"192.168.13.103\" MRTG_INT_DESCR=\"eth0\"
MaxBytes: 1250000
Xsize: 300
Ysize: 100
#kmg: K/s,M/s
#kilo: 1024
Title: Traffic for eth0 192.168.13.103 -- wy1
PageTop: <H1>Traffic for eth0 192.168.13.103 -- wy1</H1>
#Options: growright,gauge,nopercent

### Interface 3 >> Descr: &#39;eth1&#39; | Name: &#39;&#39; | Ip: &#39;172.16.0.188&#39; | Eth: &#39;00-06-5b-19-9d-e9&#39; ###

Target: /172.16.0.188:public@192.168.13.103:
SetEnv: MRTG_INT_IP=\"172.16.0.188\" MRTG_INT_DESCR=\"eth1\"
Xsize: 300
Ysize: 100
MaxBytes: 1250000
#ShortLegend:
#kmg: b/s,Kb/s
#kilo: 1024
Title: Traffic for eth1 172.16.0.188 -- wy1
PageTop: <H1>Traffic for eth1 172.16.0.188 -- wy1</H1>
#Options: growright,gauge,nopercent

###MEM status

Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 1006
Title:Memory State of WY1 IP 192.168.13.103 Server
PageTop:<H1>Memory State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend: MB
kmg: MB
kilo:1024
YLegend: Memory Usage
Legend1: 可用内存
Legend2: 总内存量
Legend3: 可用内存
Legend4: 总内存量
LegendI: 可用内存
LegendO: 总内存量
Options: growright,gauge,nopercent

###cpu status
Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 100
Title:CPU State of WY1 IP 192.168.13.103 Server
PageTop:<H1>CPU State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend:
kmg: %
#kilo:1024
YLegend: CPU Usage
Legend1: 已用CPU:
Legend2: 可用CPU:
LegendI: 已用CPU:
LegendO: 可用CPU:
Options: growright,gauge,nopercent

###iostat
###cpu status
Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 10000
Title: DISK IO State of WY1 IP 192.168.13.103 Server
PageTop:<H1>DISK IO State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend:
kmg: K/s,M/s
kilo:1024
YLegend: DISK IO SPEED
Legend1: IO速度:
Legend2: IO速度:
LegendI: IO速度:
LegendO: IO速度:
Options: growright,gauge,nopercent


用indexmaker -o/home/httpd/mrtg/103/index.html/home/httpd/mrtg/103/mrtg.cfg 生成网页,在crontab 中加入*/5 * * * * mrtg /home/httpd/mrtg/103/mrtg.cfg
OK, 这样我们就能通过mrtg生成的图来监控我们linux的机器的状态了。在IE中打入http: //192.168.13.105/mrtg/103,mrtg的监控网页就出来啦
(/home/httpd/是我appache的主目录)。当然我们也 能用snmpwalk命令来得到安装有snmp服务的win2000机器的状态的数据:
如:

# snmpwalk -v 1 192.168.1.5 -c public HOST-RESOURCES-MIB::hrStorage
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 3800424 KBytes
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2
HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3
HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4
HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5
HOST-RESOURCES-MIB::hrStorageIndex.6 = INTEGER: 6
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRemovableDisk
HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageCompactDisc
HOST-RESOURCES-MIB::hrStorageType.6 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: A:\\
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: C:\\ Label:Serial Number 581e89fe
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: D:\\ Label:New VolumeSerial Number 1cde6e55
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E:\\ Label:DATA_BAKSerial Number 30d29147
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: F:\\
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 2050287
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 15703529
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 53263499
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.6 = INTEGER: 89444
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 1233681
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 591593
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 23583930
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 50611
HOST-RESOURCES-MIB::hrStorageAllocationFailures.1 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.2 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.3 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.4 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.5 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.6 = Counter32: 0
上面显示的是192.168.1.5这台win2000SERVER的磁盘信息,可以看到盘符、每个分区的空间总量、使用量等。其它的相应建值还有:
Diskused: HOST-RESOURCES-MIB::hrStorageUsed
CPU:HOST-RESOURCES-MIB::hrProcessorLoad
RUN Proc: HOST-RESOURCES-MIB::hrSWRunName
SYS Uptime: HOST-RESOURCES-MIB::hrSystemUptime SNMPv2-MIB::sysUpTime
SYS Date: HOST-RESOURCES-MIB::hrSystemDate
SYS Device: HOST-RESOURCES-MIB::hrDeviceDescr
SYS Descr:SNMPv2-MIB::sysDescr
SYS Name: SNMPv2-MIB::sysName
netcard speed:IF-MIB::ifSpeed
netcard physcal address:IF-MIB::ifPhysAddress
这样我们就可以用一台linux主机通过snmp+mrtg来监控多台局域网内的linux/win2000SERVER了:)。
现在我最关心的是如何让snmp包穿过防火墙,(我用snmpwalk试了一下,抓不到公司在IDC防火墙后的SERVER的snmp数据)。不然,
我就可以用snmp去监控公司在IDC防火墙后的SERVER的状态了。听说perl能实现,但不知用什么样的方法来实现?

amwdnuff 发表于 2009-5-12 13:39

snmp.conf配置

snmp.conf配置
用snmp+mrtg可以很好的实现对局域网内服务器状态的监控。
现在就以用snmp+mrtg监控一台局域网内的redhat机器(IP:192.168.13.103)的网卡、内存、CPU、 DISKIO为例子,谈一下如何实现。
基本的法办就是用一台redhat监控机器(IP:192.168.13.105),通过snmpwalk命令去抓 目标服务器的状态数据,然后用mrtg画出图来。
1、首先我们要把目标snmpd.conf文件的配好。这是用snmpwalk命令 一抓取数据的关健。下面是目标机器(IP: 192.168.13.103)上的/etc/snmp/snmpd.conf文件
部份内容,红色的部份是我对snmpd.conf所做的改动。
# cat /etc/snmp/snmpd.conf

####
# First, map the community name \"public\" into a \"security name\"

# sec.namesourcecommunity
com2sec notConfigUserdefault public#定义community名称为 public,映射到安全名 notConfigUser。

####
# Second, map the security name into a group name:

# groupNamesecurityModel securityName
group notConfigGroup v1 notConfigUser #定义安全用户名notConfigUser映射到notConfigGroup组。
group notConfigGroup v2c notConfigUser

####
# Third, create a view for us to let the group have rights to: #定义一个view,来决定notConfigUser可以操作的范围。


# Make at leastsnmpwalk -v 1 localhost -c public system fast again. #定义可查看的snmp的范围。
# name incl/excl subtree mask(optional)
viewsystemviewincluded .1.3.6.1.2.1.1
viewsystemviewincluded .1.3.6.1.2.1.25.1.1
view all included.1
####
# Finally, grant the group read-only access to the systemview view. #给notConfigGroup组所定义view名 all 以只读权限。

# groupcontext sec.model sec.level prefix read writenotif
accessnotConfigGroup \"\"any noauthexactallnone none#accessnotConfigGroup \"\"any noauthexactmib2 none none

# -----------------------------------------------------------------------------

# Here is a commented out example configuration that allows less
# restrictive access.

# YOU SHOULD CHANGE THE \"COMMUNITY\" TOKEN BELOW TO A NEW KEYWORD ONLY
# KNOWN AT YOUR SITE.YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO
# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE.

## sec.namesourcecommunity
#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24COMMUNITY

## group.name sec.modelsec.name
#group MyRWGroupanylocal
#group MyROGroupanymynetwork
#
#group MyRWGroupanyotherv3user
#...

## incl/excl subtreemask
#view allincluded.1 80

## -or just the mib2 tree-

#view mib2 included.iso.org.dod.internet.mgmt.mib-2 fc
#view mib2 included.iso.org.dod.internet.mgmt.mib-2 fc


##context sec.model sec.level prefix read writenotif
#access MyROGroup \"\"any noauth0allnone none
#access MyRWGroup \"\"any noauth0allallall


其实配制一个snmpd.conf文件不算太难,
(1)首选是定义一个共同体名(community),这里是public,及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:)
# sec.namesourcecommunity
com2sec notConfigUserdefault public
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
groupNamesecurityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3)定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
viewall included .1
(4)定义notConfigUser这个组在all这个view范围内可做的操作,这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
# groupcontext sec.model sec.level prefix read writenotif
accessnotConfigGroup \"\"any noauthexactallnone none

ok,这样我们的snmpd.conf文件就基本配成了,用servicesnmpdrestart重启snmpd服务。现在我们做一个测试,在监控机上打下面的命令:
# snmpwalk -v 1 192.168.13.103 -c public system
SNMPv2-MIB::sysDescr.0 = STRING: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (7565377) 21:00:53.77
SNMPv2-MIB::sysContact.0 = STRING: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: wy1
SNMPv2-MIB::sysLocation.0 = STRING: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10
``````````````````````
“Linux wy1 2.4.20-8smp”操作系统的信息已经出来了:)
现在我们在目标机上来写一些脚本来显标MEM、CPU、DiskIO
MEM数据的抓取脚本:
# catmfree.sh
#!/bin/sh
/usr/bin/free -m | grep Mem |awk &#39;{print $4}&#39;
/usr/bin/free -m | grep Mem |awk &#39;{print $2}&#39;
# shmfree.sh (上面一个数据是内存使用量,下面的是内存总量,M)
442
1006
CPU数据的抓取脚本
# catcpustat.sh
#!/bin/sh
idle=`sar-u 1 3 | grep Average | awk &#39;{print $6}&#39;`
used=`echo \"101 - $idle\" | bc -l -s`
echo $used
echo $idle
DiskIO数据的抓取脚本
# catiostat.sh(显示硬盘IO,k/s)
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk &#39;{print $4}&#39;`
used2=`echo \"$used1 / 2\" | bc -l`
echo $used2
echo $used2

好现在我们已经能得到这数据了,怎么才能让监控主机通过snmpd得到这些数据呢?可以在目标主机的/etc/snmp/snmpd.conf文件下面加个这些行:
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /root/mfree.sh
exec .1.3.6.1.4.1.2021.54 cpustat /bin/sh /root/cpustat.sh
exec .1.3.6.1.4.1.2021.55 iostat /bin/sh /root/iostat.sh
servicesnmpdrestart重启目标主机上的snmpd服务。
这样在监控主机上运行:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53
UCD-SNMP-MIB::ucdavis.53.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.53.2.1 = STRING: \"mfree\"
UCD-SNMP-MIB::ucdavis.53.3.1 = STRING: \"/bin/sh /root/mfree.sh\"
UCD-SNMP-MIB::ucdavis.53.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: \"442\"
UCD-SNMP-MIB::ucdavis.53.101.2 = STRING: \"1006\"
UCD-SNMP-MIB::ucdavis.53.102.1 = INTEGER: 0
其中UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: \"442\" 中的442就是mfree.sh输出的第一个数据,1006是mfree.sh输出的第二个数据。OK,再做一下加工:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\\\" &#39;{print $2}&#39;
443
1006
好,我们已经通过snmpd从监控主机上得到了目标主机上内存使用的这两个数据了:),其它的两个脚本也一样:
CPU使用、空闲。
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\\\" &#39;{print $2}&#39;
1.17
99.83
DISK IO 状态:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\\\" &#39;{print $2}&#39;
43.00000000000000000000
43.00000000000000000000

最 后是编辑监控主机上的mrtg.cfg文件,在Target中加入上面的命令,下面是我的mrtg.cfg文件,前面的两个 Target是我用/usr/bin/cfgmaker --global &#39;WorkDir: /home/httpd/mrtg/net&#39; -- global &#39;Options:growright,bits&#39; --ifref=ip public@192.168.13.103命令生 成的,
后面的是我跟据platinum 的\"mrtg能做些什么\"的贴子内的mrtg.cfg文件改的。(在精华里,大家可以看一下)。
# cat /home/httpd/mrtg/103/mrtg.cfg
# Created by
# /usr/bin/cfgmaker --global &#39;WorkDir: /home/httpd/mrtg/net&#39; --global &#39;Options:growright,bits&#39; --ifref=ip public@192.168.13.103


### Global Config Options

#for UNIX
# WorkDir: /home/http/mrtg

#or for NT
# WorkDir: c:\\mrtgdata

### Global Defaults

#to get bits instead of bytes and graphs growing to the right
# Options: growright, bits

WorkDir: /home/httpd/mrtg/103
Options:growright,bits
Language: chinese
######################################################################
# System: wy1
# Description: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
# Contact: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf)
# Location: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
######################################################################


### Interface 2 >> Descr: &#39;eth0&#39; | Name: &#39;&#39; | Ip: &#39;192.168.13.103&#39; | Eth: &#39;00-06-5b-19-9d-ea&#39; ###

Target: /192.168.13.103:public@192.168.13.103:
SetEnv: MRTG_INT_IP=\"192.168.13.103\" MRTG_INT_DESCR=\"eth0\"
MaxBytes: 1250000
Xsize: 300
Ysize: 100
#kmg: K/s,M/s
#kilo: 1024
Title: Traffic for eth0 192.168.13.103 -- wy1
PageTop: <H1>Traffic for eth0 192.168.13.103 -- wy1</H1>
#Options: growright,gauge,nopercent

### Interface 3 >> Descr: &#39;eth1&#39; | Name: &#39;&#39; | Ip: &#39;172.16.0.188&#39; | Eth: &#39;00-06-5b-19-9d-e9&#39; ###

Target: /172.16.0.188:public@192.168.13.103:
SetEnv: MRTG_INT_IP=\"172.16.0.188\" MRTG_INT_DESCR=\"eth1\"
Xsize: 300
Ysize: 100
MaxBytes: 1250000
#ShortLegend:
#kmg: b/s,Kb/s
#kilo: 1024
Title: Traffic for eth1 172.16.0.188 -- wy1
PageTop: <H1>Traffic for eth1 172.16.0.188 -- wy1</H1>
#Options: growright,gauge,nopercent

###MEM status

Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 1006
Title:Memory State of WY1 IP 192.168.13.103 Server
PageTop:<H1>Memory State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend: MB
kmg: MB
kilo:1024
YLegend: Memory Usage
Legend1: 可用内存
Legend2: 总内存量
Legend3: 可用内存
Legend4: 总内存量
LegendI: 可用内存
LegendO: 总内存量
Options: growright,gauge,nopercent

###cpu status
Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 100
Title:CPU State of WY1 IP 192.168.13.103 Server
PageTop:<H1>CPU State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend:
kmg: %
#kilo:1024
YLegend: CPU Usage
Legend1: 已用CPU:
Legend2: 可用CPU:
LegendI: 已用CPU:
LegendO: 可用CPU:
Options: growright,gauge,nopercent

###iostat
###cpu status
Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 10000
Title: DISK IO State of WY1 IP 192.168.13.103 Server
PageTop:<H1>DISK IO State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend:
kmg: K/s,M/s
kilo:1024
YLegend: DISK IO SPEED
Legend1: IO速度:
Legend2: IO速度:
LegendI: IO速度:
LegendO: IO速度:
Options: growright,gauge,nopercent


用indexmaker -o/home/httpd/mrtg/103/index.html/home/httpd/mrtg/103/mrtg.cfg 生成网页,在crontab 中加入*/5 * * * * mrtg /home/httpd/mrtg/103/mrtg.cfg
OK, 这样我们就能通过mrtg生成的图来监控我们linux的机器的状态了。在IE中打入http: //192.168.13.105/mrtg/103,mrtg的监控网页就出来啦
(/home/httpd/是我appache的主目录)。当然我们也 能用snmpwalk命令来得到安装有snmp服务的win2000机器的状态的数据:
如:

# snmpwalk -v 1 192.168.1.5 -c public HOST-RESOURCES-MIB::hrStorage
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 3800424 KBytes
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2
HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3
HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4
HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5
HOST-RESOURCES-MIB::hrStorageIndex.6 = INTEGER: 6
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRemovableDisk
HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageCompactDisc
HOST-RESOURCES-MIB::hrStorageType.6 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: A:\\
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: C:\\ Label:Serial Number 581e89fe
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: D:\\ Label:New VolumeSerial Number 1cde6e55
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E:\\ Label:DATA_BAKSerial Number 30d29147
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: F:\\
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 2050287
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 15703529
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 53263499
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.6 = INTEGER: 89444
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 1233681
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 591593
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 23583930
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 50611
HOST-RESOURCES-MIB::hrStorageAllocationFailures.1 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.2 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.3 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.4 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.5 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.6 = Counter32: 0
上面显示的是192.168.1.5这台win2000SERVER的磁盘信息,可以看到盘符、每个分区的空间总量、使用量等。其它的相应建值还有:
Diskused: HOST-RESOURCES-MIB::hrStorageUsed
CPU:HOST-RESOURCES-MIB::hrProcessorLoad
RUN Proc: HOST-RESOURCES-MIB::hrSWRunName
SYS Uptime: HOST-RESOURCES-MIB::hrSystemUptime SNMPv2-MIB::sysUpTime
SYS Date: HOST-RESOURCES-MIB::hrSystemDate
SYS Device: HOST-RESOURCES-MIB::hrDeviceDescr
SYS Descr:SNMPv2-MIB::sysDescr
SYS Name: SNMPv2-MIB::sysName
netcard speed:IF-MIB::ifSpeed
netcard physcal address:IF-MIB::ifPhysAddress
这样我们就可以用一台linux主机通过snmp+mrtg来监控多台局域网内的linux/win2000SERVER了:)。
现在我最关心的是如何让snmp包穿过防火墙,(我用snmpwalk试了一下,抓不到公司在IDC防火墙后的SERVER的snmp数据)。不然,
我就可以用snmp去监控公司在IDC防火墙后的SERVER的状态了。听说perl能实现,但不知用什么样的方法来实现?

amwdnuff 发表于 2009-5-12 13:39

snmp.conf配置

snmp.conf配置
用snmp+mrtg可以很好的实现对局域网内服务器状态的监控。
现在就以用snmp+mrtg监控一台局域网内的redhat机器(IP:192.168.13.103)的网卡、内存、CPU、 DISKIO为例子,谈一下如何实现。
基本的法办就是用一台redhat监控机器(IP:192.168.13.105),通过snmpwalk命令去抓 目标服务器的状态数据,然后用mrtg画出图来。
1、首先我们要把目标snmpd.conf文件的配好。这是用snmpwalk命令 一抓取数据的关健。下面是目标机器(IP: 192.168.13.103)上的/etc/snmp/snmpd.conf文件
部份内容,红色的部份是我对snmpd.conf所做的改动。
# cat /etc/snmp/snmpd.conf

####
# First, map the community name \"public\" into a \"security name\"

# sec.namesourcecommunity
com2sec notConfigUserdefault public#定义community名称为 public,映射到安全名 notConfigUser。

####
# Second, map the security name into a group name:

# groupNamesecurityModel securityName
group notConfigGroup v1 notConfigUser #定义安全用户名notConfigUser映射到notConfigGroup组。
group notConfigGroup v2c notConfigUser

####
# Third, create a view for us to let the group have rights to: #定义一个view,来决定notConfigUser可以操作的范围。


# Make at leastsnmpwalk -v 1 localhost -c public system fast again. #定义可查看的snmp的范围。
# name incl/excl subtree mask(optional)
viewsystemviewincluded .1.3.6.1.2.1.1
viewsystemviewincluded .1.3.6.1.2.1.25.1.1
view all included.1
####
# Finally, grant the group read-only access to the systemview view. #给notConfigGroup组所定义view名 all 以只读权限。

# groupcontext sec.model sec.level prefix read writenotif
accessnotConfigGroup \"\"any noauthexactallnone none#accessnotConfigGroup \"\"any noauthexactmib2 none none

# -----------------------------------------------------------------------------

# Here is a commented out example configuration that allows less
# restrictive access.

# YOU SHOULD CHANGE THE \"COMMUNITY\" TOKEN BELOW TO A NEW KEYWORD ONLY
# KNOWN AT YOUR SITE.YOU *MUST* CHANGE THE NETWORK TOKEN BELOW TO
# SOMETHING REFLECTING YOUR LOCAL NETWORK ADDRESS SPACE.

## sec.namesourcecommunity
#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24COMMUNITY

## group.name sec.modelsec.name
#group MyRWGroupanylocal
#group MyROGroupanymynetwork
#
#group MyRWGroupanyotherv3user
#...

## incl/excl subtreemask
#view allincluded.1 80

## -or just the mib2 tree-

#view mib2 included.iso.org.dod.internet.mgmt.mib-2 fc
#view mib2 included.iso.org.dod.internet.mgmt.mib-2 fc


##context sec.model sec.level prefix read writenotif
#access MyROGroup \"\"any noauth0allnone none
#access MyRWGroup \"\"any noauth0allallall


其实配制一个snmpd.conf文件不算太难,
(1)首选是定义一个共同体名(community),这里是public,及可以访问这个public的用户名(sec name),这里是notConfigUser。Public相当于用户notConfigUser的密码:)
# sec.namesourcecommunity
com2sec notConfigUserdefault public
(2)定义一个组名(groupName)这里是notConfigGroup,及组的安全级别,把notConfigGroup这个用户加到这个组中。
groupNamesecurityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
(3)定义一个可操作的范围(view)名, 这里是all,范围是 .1
# name incl/excl subtree mask(optional)
viewall included .1
(4)定义notConfigUser这个组在all这个view范围内可做的操作,这时定义了notConfigUser组的成员可对.1这个范围做只读操作。
# groupcontext sec.model sec.level prefix read writenotif
accessnotConfigGroup \"\"any noauthexactallnone none

ok,这样我们的snmpd.conf文件就基本配成了,用servicesnmpdrestart重启snmpd服务。现在我们做一个测试,在监控机上打下面的命令:
# snmpwalk -v 1 192.168.13.103 -c public system
SNMPv2-MIB::sysDescr.0 = STRING: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (7565377) 21:00:53.77
SNMPv2-MIB::sysContact.0 = STRING: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: wy1
SNMPv2-MIB::sysLocation.0 = STRING: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (10) 0:00:00.10
``````````````````````
“Linux wy1 2.4.20-8smp”操作系统的信息已经出来了:)
现在我们在目标机上来写一些脚本来显标MEM、CPU、DiskIO
MEM数据的抓取脚本:
# catmfree.sh
#!/bin/sh
/usr/bin/free -m | grep Mem |awk &#39;{print $4}&#39;
/usr/bin/free -m | grep Mem |awk &#39;{print $2}&#39;
# shmfree.sh (上面一个数据是内存使用量,下面的是内存总量,M)
442
1006
CPU数据的抓取脚本
# catcpustat.sh
#!/bin/sh
idle=`sar-u 1 3 | grep Average | awk &#39;{print $6}&#39;`
used=`echo \"101 - $idle\" | bc -l -s`
echo $used
echo $idle
DiskIO数据的抓取脚本
# catiostat.sh(显示硬盘IO,k/s)
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk &#39;{print $4}&#39;`
used2=`echo \"$used1 / 2\" | bc -l`
echo $used2
echo $used2

好现在我们已经能得到这数据了,怎么才能让监控主机通过snmpd得到这些数据呢?可以在目标主机的/etc/snmp/snmpd.conf文件下面加个这些行:
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /root/mfree.sh
exec .1.3.6.1.4.1.2021.54 cpustat /bin/sh /root/cpustat.sh
exec .1.3.6.1.4.1.2021.55 iostat /bin/sh /root/iostat.sh
servicesnmpdrestart重启目标主机上的snmpd服务。
这样在监控主机上运行:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53
UCD-SNMP-MIB::ucdavis.53.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.53.2.1 = STRING: \"mfree\"
UCD-SNMP-MIB::ucdavis.53.3.1 = STRING: \"/bin/sh /root/mfree.sh\"
UCD-SNMP-MIB::ucdavis.53.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: \"442\"
UCD-SNMP-MIB::ucdavis.53.101.2 = STRING: \"1006\"
UCD-SNMP-MIB::ucdavis.53.102.1 = INTEGER: 0
其中UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: \"442\" 中的442就是mfree.sh输出的第一个数据,1006是mfree.sh输出的第二个数据。OK,再做一下加工:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\\\" &#39;{print $2}&#39;
443
1006
好,我们已经通过snmpd从监控主机上得到了目标主机上内存使用的这两个数据了:),其它的两个脚本也一样:
CPU使用、空闲。
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\\\" &#39;{print $2}&#39;
1.17
99.83
DISK IO 状态:
# snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\\\" &#39;{print $2}&#39;
43.00000000000000000000
43.00000000000000000000

最 后是编辑监控主机上的mrtg.cfg文件,在Target中加入上面的命令,下面是我的mrtg.cfg文件,前面的两个 Target是我用/usr/bin/cfgmaker --global &#39;WorkDir: /home/httpd/mrtg/net&#39; -- global &#39;Options:growright,bits&#39; --ifref=ip public@192.168.13.103命令生 成的,
后面的是我跟据platinum 的\"mrtg能做些什么\"的贴子内的mrtg.cfg文件改的。(在精华里,大家可以看一下)。
# cat /home/httpd/mrtg/103/mrtg.cfg
# Created by
# /usr/bin/cfgmaker --global &#39;WorkDir: /home/httpd/mrtg/net&#39; --global &#39;Options:growright,bits&#39; --ifref=ip public@192.168.13.103


### Global Config Options

#for UNIX
# WorkDir: /home/http/mrtg

#or for NT
# WorkDir: c:\\mrtgdata

### Global Defaults

#to get bits instead of bytes and graphs growing to the right
# Options: growright, bits

WorkDir: /home/httpd/mrtg/103
Options:growright,bits
Language: chinese
######################################################################
# System: wy1
# Description: Linux wy1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686
# Contact: Root <root@wuying.com> (configure /etc/snmp/snmp.local.conf)
# Location: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
######################################################################


### Interface 2 >> Descr: &#39;eth0&#39; | Name: &#39;&#39; | Ip: &#39;192.168.13.103&#39; | Eth: &#39;00-06-5b-19-9d-ea&#39; ###

Target: /192.168.13.103:public@192.168.13.103:
SetEnv: MRTG_INT_IP=\"192.168.13.103\" MRTG_INT_DESCR=\"eth0\"
MaxBytes: 1250000
Xsize: 300
Ysize: 100
#kmg: K/s,M/s
#kilo: 1024
Title: Traffic for eth0 192.168.13.103 -- wy1
PageTop: <H1>Traffic for eth0 192.168.13.103 -- wy1</H1>
#Options: growright,gauge,nopercent

### Interface 3 >> Descr: &#39;eth1&#39; | Name: &#39;&#39; | Ip: &#39;172.16.0.188&#39; | Eth: &#39;00-06-5b-19-9d-e9&#39; ###

Target: /172.16.0.188:public@192.168.13.103:
SetEnv: MRTG_INT_IP=\"172.16.0.188\" MRTG_INT_DESCR=\"eth1\"
Xsize: 300
Ysize: 100
MaxBytes: 1250000
#ShortLegend:
#kmg: b/s,Kb/s
#kilo: 1024
Title: Traffic for eth1 172.16.0.188 -- wy1
PageTop: <H1>Traffic for eth1 172.16.0.188 -- wy1</H1>
#Options: growright,gauge,nopercent

###MEM status

Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 1006
Title:Memory State of WY1 IP 192.168.13.103 Server
PageTop:<H1>Memory State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend: MB
kmg: MB
kilo:1024
YLegend: Memory Usage
Legend1: 可用内存
Legend2: 总内存量
Legend3: 可用内存
Legend4: 总内存量
LegendI: 可用内存
LegendO: 总内存量
Options: growright,gauge,nopercent

###cpu status
Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 100
Title:CPU State of WY1 IP 192.168.13.103 Server
PageTop:<H1>CPU State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend:
kmg: %
#kilo:1024
YLegend: CPU Usage
Legend1: 已用CPU:
Legend2: 可用CPU:
LegendI: 已用CPU:
LegendO: 可用CPU:
Options: growright,gauge,nopercent

###iostat
###cpu status
Target:`snmpwalk -v 1192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\\\" &#39;{print $2}&#39;`
#Targey: memTotalReal.0&memAvailReal.0:holdata@holdata.3322.org
Xsize: 300
Ysize: 100
Ytics: 7
MaxBytes: 10000
Title: DISK IO State of WY1 IP 192.168.13.103 Server
PageTop:<H1>DISK IO State of WY1 IP 192.168.13.103 Server</H1>
ShortLegend:
kmg: K/s,M/s
kilo:1024
YLegend: DISK IO SPEED
Legend1: IO速度:
Legend2: IO速度:
LegendI: IO速度:
LegendO: IO速度:
Options: growright,gauge,nopercent


用indexmaker -o/home/httpd/mrtg/103/index.html/home/httpd/mrtg/103/mrtg.cfg 生成网页,在crontab 中加入*/5 * * * * mrtg /home/httpd/mrtg/103/mrtg.cfg
OK, 这样我们就能通过mrtg生成的图来监控我们linux的机器的状态了。在IE中打入http: //192.168.13.105/mrtg/103,mrtg的监控网页就出来啦
(/home/httpd/是我appache的主目录)。当然我们也 能用snmpwalk命令来得到安装有snmp服务的win2000机器的状态的数据:
如:

# snmpwalk -v 1 192.168.1.5 -c public HOST-RESOURCES-MIB::hrStorage
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 3800424 KBytes
HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2
HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3
HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4
HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5
HOST-RESOURCES-MIB::hrStorageIndex.6 = INTEGER: 6
HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRemovableDisk
HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageFixedDisk
HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageCompactDisc
HOST-RESOURCES-MIB::hrStorageType.6 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: A:\\
HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: C:\\ Label:Serial Number 581e89fe
HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: D:\\ Label:New VolumeSerial Number 1cde6e55
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E:\\ Label:DATA_BAKSerial Number 30d29147
HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: F:\\
HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Virtual Memory
HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 4096 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 0 Bytes
HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 65536 Bytes
HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 2050287
HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 15703529
HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 53263499
HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageSize.6 = INTEGER: 89444
HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 1233681
HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 591593
HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 23583930
HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 0
HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 50611
HOST-RESOURCES-MIB::hrStorageAllocationFailures.1 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.2 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.3 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.4 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.5 = Counter32: 0
HOST-RESOURCES-MIB::hrStorageAllocationFailures.6 = Counter32: 0
上面显示的是192.168.1.5这台win2000SERVER的磁盘信息,可以看到盘符、每个分区的空间总量、使用量等。其它的相应建值还有:
Diskused: HOST-RESOURCES-MIB::hrStorageUsed
CPU:HOST-RESOURCES-MIB::hrProcessorLoad
RUN Proc: HOST-RESOURCES-MIB::hrSWRunName
SYS Uptime: HOST-RESOURCES-MIB::hrSystemUptime SNMPv2-MIB::sysUpTime
SYS Date: HOST-RESOURCES-MIB::hrSystemDate
SYS Device: HOST-RESOURCES-MIB::hrDeviceDescr
SYS Descr:SNMPv2-MIB::sysDescr
SYS Name: SNMPv2-MIB::sysName
netcard speed:IF-MIB::ifSpeed
netcard physcal address:IF-MIB::ifPhysAddress
这样我们就可以用一台linux主机通过snmp+mrtg来监控多台局域网内的linux/win2000SERVER了:)。
现在我最关心的是如何让snmp包穿过防火墙,(我用snmpwalk试了一下,抓不到公司在IDC防火墙后的SERVER的snmp数据)。不然,
我就可以用snmp去监控公司在IDC防火墙后的SERVER的状态了。听说perl能实现,但不知用什么样的方法来实现?
页: [1]
查看完整版本: snmp.conf配置