Linux下的snmpd.conf配置說明

SNMP(Simple Network Management Protocol,簡單網絡管理協議)的前身是簡單網關監控協議(SGMP),用來對通訊線路進行管理。在RHEL中,SNMP的配置文件地址是/etc/snmp/snmpd.conf。snmpd.conf的配置項不少,可是真正經常使用的就那麼幾個,下面來逐個介紹。html

com2sec命令,它的基本語法是「com2sec NAME SOURCE COMMUNITY」。這裏要提一下SNMP的安全策略,其實SNMP的安全性並很差,在這個協議中使用COMMUNITY這個東西來作訪問控制的。簡單來理解就是如今有一個幫會的一我的找去了總舵,那麼這我的怎麼跟總舵相認呢?他們直接約定一個「暗號」,例如見面就說「牀前明月光」,那麼總舵的前臺就會帶你去「牀前明月光」想對應的地方。如今回過頭來看這行配置,假若有如下一句話linux

com2sec  magusu default  magusios

意思就是作一個映射,把magus這個COMMUNITY串和magusu這個名字作好一對映射,那麼之後在調用SNMP的時候,只要你聲明你就是magus,那麼就能夠得到相應的權限了。有了映射之後下面須要作的是創建一個從magusu到組的一個映射,用到的命令是group,它的基本語法是「group NAME MODEL SECURITY」安全

group  magusg v2c  magusu服務器

上面這句話的意思就是把magusu放到組magusg裏面,用的協議是v2c,插一句,SNMP如今一般用的有3個版本。那好了,組建好了下來要作什麼呢?就是要創建一個VIEW,VIEW的基本語法是「view NAME TYPE SUBTREE [MASK]」網絡

view  magusv  included  .1.3.6.1.4.1.9129app

像上面這句話的意思就是賦予magusv這個view可以查看1.3.6.1.4.1.9129下面全部節點的權限。最後要作的是設定哪些組的人,哪些view的用戶能夠作什麼具體的事情,用access來設置,基本語法是「access NAME CONTEXT MODEL LEVEL PREFX READ WRITE NOTIFY」。post

access   magusg   「」   any   noauth   exact   magusv   magusv   none測試

因爲例子中用的是v2c版本的協議,因此CONTEXT必須爲空,MODEL也就是協議的版本號,在這裏例子裏面能夠是any也能夠是v2c,仍是因爲v2c的緣故,因此LEVEL是noauth;READ、WRITE和NOTIFY分別須要指定一個view或者什麼都不指定;在這裏的設置就是magusv這個view能夠對前面設置好的節點進行讀和寫操做。spa

到此,服務端的配置已經完成,重啓一下snmpd就能夠了,下面看看如何經過SNMP獲得咱們想要的數據

snmpwalk -v 2c -c magus localhost 1.3.6.1.4.1.9129.1.2.2

snmpwalk能夠便利指定節點下的全部子節點,-v 參數指定SNMP的協議版本,這個跟咱們以前配置服務器的版本是要一致的,也就是2c,而後-c參數就指定了community的字符串,也就是剛纔定義的magus,而後就是主機地址,因爲我在本機測試,因此用的localhost,實際中能夠填上IP,最後就是OID的值。搞定!

對於剛剛接觸SNMP的朋友來講,理解community的做用是關鍵,其實說的通俗點就是接頭暗號,並且仍是個明文的「暗號」。

No related posts.

如今咱們在目標機上來寫一些腳原本顯標 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 public@192.168.13.103   命令生 成的,
後面的是我跟據 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 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: '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:public@192.168.13.103:  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:public@192.168.13.103:  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:holdata@holdata.3322.org  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:holdata@holdata.3322.org  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:holdata@holdata.3322.org  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 中打入 http: //192.168.13.105/mrtg/103,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 數據)。

相關文章
相關標籤/搜索