服务器 频道

MRTG+SNMP构建服务器信息统计系统

  【IT168 服务器学院】当服务器达到30台的的情况下必须要进行统一管理,例如统计服务器群的网络流量, 内存状态, CPU状态, 磁盘存储状态,经过无数小时的努力,终于把它应用在IDC的30多台服务器群,大大方便每天检查服务器运行状态、负载等情况。

  MRTG+SNMP构建服务器流量统计系统

  当服务器达到30台的的情况下必须要进行统一管理,例如统计服务器群的网络流量, 内存状态, CPU状态, 磁盘存储状态,经过无数小时的努力,终于把它应用在IDC的30多台服务器群,大大方便每天检查服务器运行状态、负载等情况。

  硬件:

  其中1台服务器安装mrtg, apache,net-snmp 其他服务器只需安装net-snmp

  系统环境:

  redhat9.0

  必备软件:

  系统必须已经安装以下软件:

  mrtg-2.9.28.tar.gz

  gd-1.8.4.tar.gz 

  libpng-1.0.15.tar.gz
  perl-5.8.0-88
  zlib-1.1.4-8
  apache
  gcc-3.2.2-5

  net-snmp-5.0.6-17

  net-snmp-devel-5.0.6-17

  net-snmp-utils-5.0.6-17

  1、首先来安装配置net-snmp

  光盘里有net-snmp的安装rpm包,或者在添加/删除程序里选择安装ethereal-网络交通分析器,也会自动安装net-snmp软件包。

  安装完以后,需要配置/etc/snmp/snmpd.conf文件,使其能配合mrtg工作.

  把下面的#号去掉
  #view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

  把下面的语句
  access notConfigGroup "" any noauth exact systemview none none
  改成:
  access notConfigGroup "" any noauth exact mib2 none none

  由于需要对CPU,Mem,IO状态进行监控,所以本人在/etc/snmp/目录下分别创建cpustat.sh 、 iostat.sh 、mfree.sh 三个文件,通过snmp取得本机系统相关数据。

  vim /etc/snmp/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

  vim /etc/snmp/iostat.sh

     #!/bin/sh

  used1=`sar -d 1 3 | tail -1 | awk ''{print $4}''`

  used2=`echo "$used1 / 2" | bc -l`

  echo $used2

  echo $used2

  vim /etc/snmp/mfree.sh

  #!/bin/sh

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

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

  然后,在/etc/snmp/snmp.conf加入如下内容:

  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

  exec .1.3.6.1.4.1.2021.56 load /bin/sh /etc/snmp/load.sh

  ok,改完以后,就可以启动snmpd服务

  以下是本人的/etc/snmp/snmp.conf的配置文档,可作参考:

  #### /etc/snmp/snmp.conf start##########

  # 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

  view all   included  .1

  ##add by yzjboy

  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

  exec .1.3.6.1.4.1.2021.56 load /bin/sh /etc/snmp/load.sh

  ####

  # Finally, grant the group read-only access to the systemview view. #给notConfigGroup组所定义view名 all 以只读权限。

  #       group          context sec.model sec.level prefix read   write  notif

  access  notConfigGroup ""      any       noauth    exact  all  none none

  #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

  #### /etc/snmp/snmp.conf endt##########

  /etc/rc.d/init.d/snmpd start

0
相关文章