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