⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmp+mrtg实现对局域网内的linuxserver的监控.txt

📁 linux 网络开发,非常简洁全面,适合入门者参考
💻 TXT
📖 第 1 页 / 共 2 页
字号:
snmp+mrtg实现对局域网内的linuxServer的监控 


 
    现在就以用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:0e8fbf9ac6]view all   included  .1[/color:0e8fbf9ac6] 
#### 
# 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:0e8fbf9ac6]access  notConfigGroup ""      any       noauth    exact  all  none none[/color:0e8fbf9ac6]#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 <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数据的抓取脚本: 
[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 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -