snmp+mrtg實現對局域網內的linuxServer的監控

上回看了platinum的"mrtg能做些什麼"貼子,很受啓發,於是也試着做了一個。但當時對snmpd不是很熟,所以沒有做成功,後來仔細看了一下snmd的有關文章和RH中的/etc/snmp/snmpd.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所做的改動。
   [root@wy1 root]# cat /etc/snmp/snmpd.conf 

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

#       sec.name  source          community
com2sec notConfigUser  default       public  #定義community名稱爲 public,映射到安全名 notConfigUser。

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

#       groupName      securityModel 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 least  snmpwalk -v 1 localhost -c public system fast again. #定義可查看的snmp的範圍。
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
[color=red]view all   included  .1[/color]
####
# Finally, grant the group read-only access to the systemview view. #給notConfigGroup組所定義view名 all 以只讀權限。

#       group          context sec.model sec.level prefix read   write  notif
[color=red]access  notConfigGroup ""      any       noauth    exact  all  none none[/color]#access  notConfigGroup ""      any       noauth    exact  mib2 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.name  source          community
#com2sec local     localhost       COMMUNITY
#com2sec mynetwork NETWORK/24      COMMUNITY

##     group.name sec.model  sec.name
#group MyRWGroup  any        local
#group MyROGroup  any        mynetwork
#
#group MyRWGroup  any        otherv3user
#...

##           incl/excl subtree                          mask
#view all    included  .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   write  notif
#access MyROGroup ""      any       noauth    0      all    none   none
#access MyRWGroup ""      any       noauth    0      all    all    all


其實配製一個snmpd.conf文件不算太難,
(1)首選是定義一個共同體名(community),這裏是public,及可以訪問這個public的用戶名(sec name),這裏是notConfigUser。Public相當於用戶notConfigUser的密碼:)
#       sec.name  source          community
com2sec notConfigUser  default       public
(2)定義一個組名(groupName)這裏是notConfigGroup,及組的安全級別,把notConfigGroup這個用戶加到這個組中。 
            groupName      securityModel securityName
group   notConfigGroup   v1           notConfigUser  
group   notConfigGroup   v2c           notConfigUser
 (3)定義一個可操作的範圍(view)名, 這裏是all,範圍是 .1
    #       name           incl/excl     subtree         mask(optional)
       view  all             included     .1
  (4)定義notConfigUser這個組在all這個view範圍內可做的操作,這時定義了notConfigUser組的成員可對.1這個範圍做只讀操作。
     #       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all  none none

ok,這樣我們的snmpd.conf文件就基本配成了,用service  snmpd  restart重啓snmpd服務。現在我們做一個測試,在監控機上打下面的命令:
  [root@wy2 root]# 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 <[email][email protected][/email]>; (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數據的抓取腳本:
[root@wy1 root]# cat  mfree.sh   
#!/bin/sh
/usr/bin/free -m | grep Mem |awk '{print $4}'
/usr/bin/free -m | grep Mem |awk '{print $2}'
[root@wy1 root]# sh  mfree.sh   (上面一個數據是內存使用量,下面的是內存總量,M)
442 
1006
CPU數據的抓取腳本
[root@wy1 root]# cat  cpustat.sh
#!/bin/sh
idle=`sar  -u 1 3 | grep Average | awk '{print $6}'`
used=`echo "101 - $idle" | bc -l -s`
echo $used
echo $idle
DiskIO數據的抓取腳本
[root@wy1 root]# cat  iostat.sh    (顯示硬盤IO,k/s)
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk '{print $4}'`
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
service  snmpd  restart  重啓目標主機上的snmpd服務。
這樣在監控主機上運行:
   [root@wy2 root]# snmpwalk -v 1  192.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,再做一下加工:
[root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.53 | grep 53.101 | awk -F\" '{print $2}'
443
1006
好,我們已經通過snmpd從監控主機上得到了目標主機上內存使用的這兩個數據了:),其它的兩個腳本也一樣:
  CPU使用、空閒。
[root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.54 | grep 54.101 | awk -F\" '{print $2}'
1.17
99.83
   DISK IO 狀態:
[root@wy2 root]# snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\" '{print $2}'
43.00000000000000000000
43.00000000000000000000

最後是編輯監控主機上的mrtg.cfg文件,在Target[xxxx]中加入上面的命令,下面是我的mrtg.cfg文件,前面的兩個Target是我用/usr/bin/cfgmaker --global 'WorkDir: /home/httpd/mrtg/net' --global 'Options[_]:growright,bits' --ifref=ip [email protected]  命令生成的,後面的是我跟據platinum 的"mrtg能做些什麼"的貼子內的mrtg.cfg文件改的。(在精華里,大家可以看一下)。
[root@wy1 root]# cat /home/httpd/mrtg/103/mrtg.cfg 
# Created by 
# /usr/bin/cfgmaker --global 'WorkDir: /home/httpd/mrtg/net' --global 'Options[_]:growright,bits' --ifref=ip [email protected]


### 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 <[email][email protected][/email]>; (configure /etc/snmp/snmp.local.conf)
# Location: wy1.wuying.com (edit /etc/snmp/snmpd.conf)
######################################################################


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

Target[192.168.13.103_192.168.13.103]: /192.168.13.103:[email protected]:
SetEnv[192.168.13.103_192.168.13.103]: MRTG_INT_IP="192.168.13.103" MRTG_INT_DESCR="eth0"
MaxBytes[192.168.13.103_192.168.13.103]: 1250000
Xsize[192.168.13.103_192.168.13.103]: 300
Ysize[192.168.13.103_192.168.13.103]: 100
#kmg[192.168.13.103_192.168.13.103]: K/s,M/s
#kilo[192.168.13.103_192.168.13.103]: 1024
Title[192.168.13.103_192.168.13.103]: Traffic for eth0 192.168.13.103 -- wy1
PageTop[192.168.13.103_192.168.13.103]: <H1>;Traffic for eth0 192.168.13.103 -- wy1</H1>;
#Options[192.168.13.103_192.168.13.103]: growright,gauge,nopercent

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

Target[192.168.13.103_172.16.0.188]: /172.16.0.188:[email protected]:
SetEnv[192.168.13.103_172.16.0.188]: MRTG_INT_IP="172.16.0.188" MRTG_INT_DESCR="eth1"
Xsize[192.168.13.103_172.16.0.188]: 300
Ysize[192.168.13.103_172.16.0.188]: 100
MaxBytes[192.168.13.103_172.16.0.188]: 1250000
#ShortLegend[192.168.13.103_172.16.0.188]: 
#kmg[192.168.13.103_172.16.0.188]: b/s,Kb/s
#kilo[192.168.13.103_172.16.0.188]: 1024
Title[192.168.13.103_172.16.0.188]: Traffic for eth1 172.16.0.188 -- wy1
PageTop[192.168.13.103_172.16.0.188]: <H1>;Traffic for eth1 172.16.0.188 -- wy1</H1>;
#Options[192.168.13.103_172.16.0.188]: growright,gauge,nopercent

###MEM status

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

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

###iostat
###cpu status
Target[wy1_IO]:`snmpwalk -v 1  192.168.13.103 -c public .1.3.6.1.4.1.2021.55 | grep 55.101 | awk -F\" '{print $2}'`
#Targey[wy1_IO]: memTotalReal.0&memAvailReal.0:[email protected]
Xsize[wy1_IO]: 300
Ysize[wy1_IO]: 100
Ytics[wy1_IO]: 7
MaxBytes[wy1_IO]: 10000
Title[wy1_IO]: DISK IO State of WY1 IP 192.168.13.103 Server
PageTop[wy1_IO]:<H1>;DISK IO State of WY1 IP 192.168.13.103 Server</H1>;
ShortLegend[wy1_IO]: 
kmg[wy1_IO]: K/s,M/s
kilo[wy1_IO]:1024
YLegend[wy1_IO]: DISK IO SPEED
Legend1[wy1_IO]: IO速度:
Legend2[wy1_IO]: IO速度:
LegendI[wy1_IO]: IO速度:
LegendO[wy1_IO]: IO速度:
Options[wy1_IO]: 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中打入[url]http://192.168.13.105/mrtg/103[/url],mrtg的監控網頁就出來啦(/home/httpd/是我appache的主目錄)。當然我們也能用snmpwalk命令來得到安裝有snmp服務的win2000機器的狀態的數據:
如:

[root@wy1 103]# 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 Volume  Serial Number 1cde6e55
HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: E:\ Label:DATA_BAK  Serial 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能實現,但不知用什麼樣的方法來實現?

[ 本帖最後由 llzqq 於 2005-12-9 19:52 編輯 ]



 platinum 回覆於:2004-01-15 07:57:28

我喜歡這種精神,我給你頂:)


 zor 回覆於:2004-01-15 11:50:55

到 perl CPAN 查找 Net-SSH-Perl  這個包就可以實現加密穿過防火牆了。
[url]www.cpan.org[/url]
我用過這個,很好用。


 lyking 回覆於:2004-01-15 12:00:49

支持樓主,頂


 我愛臭豆腐 回覆於:2004-01-15 12:01:57

好文章支持:)


 redeyes 回覆於:2004-01-22 04:08:42

as root,
1) edit /etc/snmp/snmpd.conf, and add the following:
rocommunity public 
2) then, in the section "process checks", edit
#proc mountd

to 

proc httpd ( if you want to monitor httpd processes) 

or

proc java ( if you want to monitor java processes)

3) then, in section "disk checks", edit/add

disk /
disk /var

( to monitor / and /var partitions)

4) restart SNMP daemon
# /etc/rc.d/init.d/snmpd restart

5) now, SNMP is running with a read-only community string of public to answer snmp queries


嘿嘿,×××貼就送給你了,,,要請客給紅包的


 q1208c 回覆於:2004-01-22 08:59:24

鼓勵一下。


 zhangweibo 回覆於:2004-03-08 20:51:54

snmpwalk -v 1 ip地址 -c public system 

顯示如下錯誤

Timeout: No Response from 210.51.0.123

服務確信起來,沒有防火牆,配置跟上面一摸一樣,爲什麼?


 牙齒曬太陽 回覆於:2004-09-28 11:34:28

snmpwalk
command not found


 zd724 回覆於:2004-09-29 00:38:17

ding


 78020281 回覆於:2004-10-29 13:22:40

snmp 是161端口,防火牆有沒有過濾這個端口? 或者使用防火牆映射到別的端口上呢?


 ijimp 回覆於:2005-07-08 14:58:03

我是深圳一菜鳥,現在要用net snmp,eagerlinuxer可否留個email或者是電話聯繫。急需你的幫助。謝謝


 海鷹 回覆於:2005-10-27 11:45:30

引用:原帖由 "platinum"]我喜歡這種精神,我給你頂:)
 發表:


ssssssssss :evil:  :twisted:


 phpcool 回覆於:2005-12-08 11:09:32

[root@dbserver sh]# snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.57
UCD-SNMP-MIB::ucdavis.57.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.57.2.1 = STRING: "cpustat"
UCD-SNMP-MIB::ucdavis.57.3.1 = STRING: "/bin/sh /home/Linux/mrtg/sh/cpustat.sh"
UCD-SNMP-MIB::ucdavis.57.100.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.57.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.57.103.1 = ""

奇怪,我得到的數據是這樣的!怎麼回事。。。。。


 phpcool 回覆於:2005-12-08 12:48:42

頂一下。


 phpcool 回覆於:2005-12-08 21:21:26

實在找不出問題所在.做過的進來看看..............


 phpcool 回覆於:2005-12-09 18:18:26

機子上安裝snmp的都可以試試.!一起討論.


 llzqq 回覆於:2005-12-09 19:54:42

發貼是記得禁用表情,不然滿篇都是笑臉


 phpcool 回覆於:2005-12-10 22:37:41

改成rh9就OK了。現在用的fc3就是不行。大家分析一下是什麼問題。難道高版本配製上有什麼特殊的要求。


 xy-coordinate 回覆於:2005-12-23 16:19:48

1.RH9   192.168.167.167 
引用:[root@localhost root]# rpm -qa net-snmp
net-snmp-5.0.6-17
[root@localhost root]# snmpwalk -v 1 192.168.167.68 -c public .1.3.6.1.4.1.2021.53
-bash: snmpwalk: command not found



2.RH8.2   192.168.167.68
引用:[root@localhost root]# rpm -qa net-snmp
net-snmp-5.0.1-6
[root@localhost root]# snmpwalk -v 1  192.168.167.167 -c public .1.3.6.1.4.1.2021.53
Timeout: No Response from 192.168.167.167




PS:
防火牆都關閉了!
RH8與RH9都能互相ping通!!!
都service snmpd start

:em12::em12::em12:

爲什麼呀???

[ 本帖最後由 xy-coordinate 於 2005-12-23 16:40 編輯 ]


 zxpxyz 回覆於:2006-02-07 15:21:56

-bash: snmpwalk: command not found 是因爲snmpwalk需要安裝額外的軟件包 net-snmp-utils

Timeout: No Response 是因爲以下4種原因:1、安全映射名(還有別的叫法,反正默認的就是public)。2、防火牆。3、系統沒有啓動服務。4、您自己寫的蒐集狀態的腳本運行時間較長。第四種原因還沒有證實,目前我碰到的情況應該就是第四種。

PS 多長時間就算超時?

[ 本帖最後由 zxpxyz 於 2006-2-7 15:23 編輯 ]


 xujian200412 回覆於:2006-03-01 10:46:23

兄弟,太感謝你了,正好有用!:D:em02:


 9394952 回覆於:2006-05-30 13:59:01

已按此文成功配置多臺RH8.RH9的監控了。謝樓主


 langhaihhu 回覆於:2006-12-18 10:33:14

在局域網中能實現遠程監控嗎?我按照樓主的配置了,監控時確出現Timeout: No Response 。


 hhxxttxs 回覆於:2007-08-10 19:44:18

真是好東西,我把我的服務器給弄好了,可以檢測到好多數據了,呵呵!


 123freebird 回覆於:2007-08-13 10:23:17

snmp用的 是udp161端口


 Kobe520 回覆於:2007-08-28 11:51:32

我是個新手,現在要爲公司做網絡監控系統,在網上搜到了你的文檔,認真的看了下覺得你寫的跟我要做的差不多極其佩服欣賞你的才能,並按照此文檔在服務器上配置了,但是出現了這些問題不知道是什麼原因了,請樓主務必幫忙解決下!!!
我的郵箱是:[email][email protected][/email]


我的目標主機腳本是:[root@synchronizer snmp]# cat cpustat.sh 
#!/bin/sh
idle=`sar -u 1 3 | grep Average | awk '{print $6}'`
used=`echo "101 - $idle" | bc -l -s`
echo $used
echo $idle

[root@synchronizer snmp]# sh cpustat.sh 
97.50
3.50
[root@synchronizer snmp]# cat iostat.sh 
#!/bin/sh
used1=`sar -d 1 3 | tail -1 | awk '{print $4}'`
used2=`echo "$used1 / 2" | bc -l`
echo $used2
echo $used2
[root@synchronizer snmp]# sh iostat.sh 
0
0
[root@synchronizer snmp]# sh mfree.sh 
11
2026
[root@synchronizer snmp]# cat mfree.sh 

#!/bin/sh
/usr/bin/free -m | grep Mem |awk '{print $4}'
/usr/bin/free -m | grep Mem |awk '{print $2}

目標snmp文件添加了:
exec .1.3.6.1.4.1.2021.53 mfree /bin/sh /etc/snmp/mfree.sh
exec .1.3.6.1.4.1.2021.54 cpustat /bin/sh /etc/snmp/cpustat.sh
exec .1.3.6.1.4.1.2021.55 iostat /bin/sh /etc/snmp/iostat.sh



我的監控機器用“snmpwalk"命令去抓取目標機器上腳本的數據:

[root@source snmp]# snmpwalk -v 1 192.168.0.218 -c public system

[root@source snmp]# snmpwalk -v 1 192.168.0.218 -c public system
SNMPv2-MIB::sysDescr.0 = STRING: Linux synchronizer 2.6.8-1.521smp #1 SMP Mon Aug 16 09:25:06 EDT 2004 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (13234) 0:02:12.34
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: synchronizer
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.3 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.4 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.5 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.6 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.7 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.8 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.9 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module to describe generic objects for network interface sub-layers
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.7 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.8 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.9 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (1) 0:00:00.01
[root@source snmp]#snmpwalk -v 1 192.168.0.218 -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 /etc/snmp/mfree.sh"
UCD-SNMP-MIB::ucdavis.53.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "25"
UCD-SNMP-MIB::ucdavis.53.101.2 = STRING: "2026"
UCD-SNMP-MIB::ucdavis.53.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.53.103.1 = ""
[root@source snmp]# snmpwalk -v 1 192.168.0.218 -c public .1.3.6.1.4.1.2021.54 (問題出現在CPU這了,抓到一半沒有數據返回,並提示”Timeout: No Response from 192.168.0.218“不知道什麼原因了?????哪位高手如果知道的話請給個提示,是不是我目標機器上腳本的問題,但我用SH打開它時又能正常顯示數據,真是奇怪了!!!!是不是還有別的問題????????)
UCD-SNMP-MIB::ucdavis.54.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.54.2.1 = STRING: "cpustat"
UCD-SNMP-MIB::ucdavis.54.3.1 = STRING: "/bin/sh /etc/snmp/cpustat.sh"
UCD-SNMP-MIB::ucdavis.54.100.1 = INTEGER: 0
Timeout: No Response from 192.168.0.218
[root@source snmp]# snmpwalk -v 1 192.168.0.218 -c public .1.3.6.1.4.1.2021.55 (同樣的,我的DISK也跟CPU一樣無法抓取數據只有內存能正常抓取到)
UCD-SNMP-MIB::ucdavis.55.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.55.2.1 = STRING: "iostat"
UCD-SNMP-MIB::ucdavis.55.3.1 = STRING: "/bin/sh /etc/snmp/iostat.sh"
UCD-SNMP-MIB::ucdavis.55.100.1 = INTEGER: 0
Timeout: No Response from 192.168.0.218
防火牆和SNMP服務都起來了,確定擁有權限!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章