1、Linux下MRTG搭建实现对远程计算机的流量内存CPU端口连接数的监控Linux下MRTG搭建实现对远程计算机的流量、内存、CPU、端口连接数的监控 网上利用MRTG监控本机网卡流量的文章非常多,但对于监控远程计算机的文章相对就少很多了,能根据文章成功搭建的就更加少了。搭建成功翻阅了大量资料文档,也遇到过各种复杂的问题,接下来我会把遇到的问题极其对策列出来,希望给大家带来帮助。首先介绍下我的系统环境:RHEL6.0.语言中文坏境。 另外也用CentOS5.5做过测试,但用RHEL6.0遇到的问题就比较多了,下面是以RHEL为例来讲解的。MRTG服务器和被监控的都是这个系统。MRTG服务器:1
2、83.63.48.52被监控的服务器:183.63.48.52(本机)、183.63.48.55、183.63.48.36、183.63.48.35为了解决依赖包关系,我用网易163做网络YUM源,下面是详细的操作步骤: 1. RHEL6使用CentOS6的yum源1.1 RHEL6中卸载自身yum# rpm -aq|grep yum|xargs rpm -e nodeps这一步我真没用过,我拿到的服务器中文系统RHEL6.0和测试的纯英文CentOS5.5、纯英文RHEL6.0都是未搭建YUM的。我是直接从第二步开始。1.2 下载centos6相关包1. #wget2. #wget3. #w
3、get4. #wget1.3 安装1. #rpm-ivhpython-iniparse-0.3.1-2.1.el6.noarch.rpm2. #rpm-ivhyum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm3. #rpm-ivhyum-3.2.27-14.el6.centos.noarch.rpmyum-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm1.4、复制centos6中的repo到RHEL6新建文件/etc/yum.repos.d/CentOS-Base.repoREHL6# Vim /etc/yum
4、.repos.d/CentOS-Base.repo下面是网易163的源:# CentOS-Base.repo# This file uses a new mirrorlist system developed by Lance Davis for CentOS.# The mirror system uses the connecting IP address of the client and the# update status of each mirror to pick mirrors that are updated to and# geographically close to t
5、he client.You should use this for CentOS updates# unless you are manually picking other mirrors.# If the mirrorlist= does not work for you, as a fall back you can try the# remarked out baseurl= line instead.#basename=CentOS-$releasever - Basebaseurl=gpgcheck=1gpgkey=#released updatesupdatesname=Cent
6、OS-$releasever - Updatesbaseurl=gpgcheck=1gpgkey=#packages used/produced in the build but not released#addons#name=CentOS-$releasever - Addons#baseurl=#gpgcheck=1#gpgkey=#additional packages that may be usefulextrasname=CentOS-$releasever - Extrasbaseurl=gpgcheck=1gpgkey=#additional packages that ex
7、tend functionality of existing packagescentosplusname=CentOS-$releasever - Plusbaseurl=gpgcheck=1enabled=0gpgkey=把他们全部写进CentOS-Base.repo 文件里就好了。然后用下面的命令测试是否成功,反正我是Ok了Rhel6#yum clean allRhel6#yum list2. Linux下MRTG环境的搭建MRTG服务器(183.63.48.52)下:2.1)安装snmp,apache,mrtgrpm -ivh net-snmp*rpm ivh httpdrpm -iv
8、h mrtg2.1)编辑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 all none none把下面的#号去掉 80也删了#view all included .1 80改成view all included .1ok,接着重启下SNMPD服务:service sn
9、mpd restart测试下snmpdSnmpwalk v 2c c public 127.0.0.1 system 看有木有数值出现还是报错。这一步貌似不会出错的。没问题的话就直接把弄远程的网卡流量弄出来好了,然后慢慢添加进去对CPU、内存、TCP连接数的监控,远程的都弄好了,本机的你也该能举一反三弄出来了把。当然实际操作的话,当然还是从本机开始弄。MRTG服务器为183.63.48.52 被监控的机器为183.63.48.35,我会在命令行的将他们区别开来分别用48.52# 和 48.35#3.)48.35安装snmpd打开UDP161端口并且关闭Selinux,这里我直接将防火墙关了好了
10、48.35#yum ivh net-snmp*48.35#service iptables stop48.35#setenforce 0然后在服务器上检测下是否有数据传递过来48.52#snmpwalk v 2c c public 183.63.48.35 system按我的步骤应该会有数据产生的4)有数据的话MRTG服务器新建/var/www/mrtg/net目录,并在其目录下生成.cfg,指定监控的IP为183.63.48.35mkdir /var/www/mrtg/net/cfgmaker -output=/var/www/mrtg/net/48.52.cfg public183.63.
11、48.355.)编辑48.35.cfg文件,更改WorkDir为/var/www/mrtg/net WorkDir: /var/www/mrtg/net加入中文支持Language:Chinese6)Apache把待会要生成的MRTG网站挂上去编辑/etc/httpd/conf/httpd.conf配置文档Alias /mrtg /var/www/mrtg/net/ Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all找到这行:AddDefaultCharset
12、ISO-8859-1更改为:AddDefaultCharset GB2312或者加一个虚拟主机:加入 #ServerAdmin webmaster AddDefaultCharset GB2312 DocumentRoot /var/www/mrtg/net/ ServerName ErrorLog logs/-error_log #CustomLog logs/-access_log common7)重启httpd service httpd restart8)执行env LANG=C mrtg /var/www/mrtg/net/48.52cfg,执行三遍到不再报警9)用indexmake
13、r 制作48.35.html页面,存放路径为/var/www/mrtg/net/,title为183.63.48.35indexmaker -output=/var/www/mrtg/net/48.52html -title=183.63.48.35 /var/www/mrtg/net/48.35.cfg接着用IP或者域名去访问下是否有图显示出来http:/183.63.48.52/48.35.html 10)在crontab中加入在网卡流量的监控,每5分钟执行一次Crontab e by:83917378*/5 * * * * env LANG=C mrtg /var/www/mrtg/ne
14、t/48.35.cfg183.63.48.35的网卡流量就会出来了,11)接下来是加入对183.63.48.35的CPU的监控11.1)48.35上编写cpu监控的脚本我把这脚本放在家目录了48.35#Vim /root/cpu.sh# !/bin/shsar -u 1 3 | grep Average |awk print $3 sar -u 1 3 | grep Average |awk print $5 分别输出的是用户和系统占用的CPU百分比 我装的是中文系统 输出的是中文 平均时间而不是Average,所以要改变下语言环境:48.35#export LANG=en_US.UTF-8检
15、测脚本输出正常没问题后还要编写48.35的snmpd.conf配置文件加入:exec .1.3.6.1.4.1.2021.53 cpu /bin/sh /root/cpu.sh网上95%给出的是这条语句,这条语句很奇怪,在RHEL6.0下即使在本机下也不会输出任何值而我的CentOS5.5却可以。RP?不过测试确实是这样。怎么办?Q83917378这时你就不得不赞叹本人的英明神武。用另外一条语句来代替Extend .1.3.6.1.4.1.2021.53 cpu /bin/sh /root/cpu.sh保存重启snmpd48.35#service snmpd restart然后分别在35和52
16、俩台机器上进行测试:48.35#snmpwalk v 2c c public 183.63.48.35 .1.3.6.1.4.1.2021.53成功的话只要你有打开端口关闭selinux基本上MRTG服务器就能取到值了48.52#snmpwalk v 2c c public 183.63.48.35 .1.3.6.1.4.1.2021.53这个截图少许有些不一样,发现没有我的脚本其实是Extend .1.3.6.1.4.1.2021.53 cpu /bin/cat /home/admin/a因为我用Extend .1.3.6.1.4.1.2021.53 cpu /bin/sh /root/cp
17、u.sh无论是本机还是MRTG服务器有取到空值的情况即11.1)在中加入对cpu的监控设定,加入:Targetcpu,即mrtg执行时从snmpwalk -v 2c -c public 183.62.48.35 .1.3.6.1.4.1.2021.51|grep 51.4.|awk -F print $2 的返回值中取值“3.25”“1.84”是“”“”这个状态 没有数值在里面我找不到愿意只好把脚本cpu.sh改成# !/bin/shsar -u 1 3 | grep Average |awk print $3 /home/admin/asar -u 1 3 | grep Average |a
18、wk print $5 /home/admin/a然后用计划任务每5分钟执行一次/bin/sh /root/cpu.sh将值输出到/home/admin/a文件中48.35 的snmpd.conf用Extend .1.3.6.1.4.1.2021.53 cpu /bin/cat /home/admin/a在48.52上将生成的48.35.cfg打开11.2)加入:MaxBytes,即图表纵向数值的最大上限为10011.3)加入:Options: gauge, nopercent, growright,即图表向右延展11.4)加入:YLegend,即图表纵向显示的标题为CPU loading(%
19、)11.5)加入:ShortLegend,即在图标中数值后面所跟的单位11.6)加入:LegendI和LegendOcpu,即从脚本读取的第一个值和第二个值,第一个值统计CPU SYSTEM,第二个值统计CPU USER11.7)加入:Title:即网页的标题,设定为CPU state of 183.63.48.35 Server11.8)加入:PageTop:即网页显示的名称,设定为CPU loading具体为#Target183.62.48.35_3: snmpwalk -v 2c -c public 183.62.48.35 .1.3.6.1.4.1.2021.53|grep 53.4.
20、|awk -F print $2#Targey127.0.0.1_2: memTotalReal.0&memAvailReal.0:holdataholdata.3322.orgXsize183.62.48.35_3: 300Ysize183.62.48.35_3: 100Ytics183.62.48.35_3: 7MaxBytes183.62.48.35_3: 100Title183.62.48.35_3:CPU State of 183.62.48.35 ServerPageTop183.62.48.35_3:CPU State of 183.62.48.35 ServerShortLeg
21、end183.62.48.35_3:kmg183.62.48.35_3: %#kilo127.0.0.1_2:1024YLegend183.62.48.35_3: CPU loading(%)LegendI183.62.48.35_3: CPU USER:LegendO183.62.48.35_3: CPU SYSTEM:Options183.62.48.35_3: growright,gauge,nopercent其中方括号内的183.62.48.35_3 最后的3不要和网卡的不一样就可以了然后保存,接着就是老几样了48.35# env LANG=C mrtg /vat/www/mrtg/n
22、et/48.35.cfg48.35#Indexmake -output=/var/www/mrtg/net/48.52html -title=183.63.48.35 /var/www/mrtg/net/48.35.cfg然后刷新下网页就可以看到了内存和Tcp/ip连接数的代码附上内存:#! /bin/sha=free -m |grep Mem | awk print $3b=free -m | grep Mem | awk print $2echo $aecho $b80口连接数和httpd进程数#! /bin/shnetstat -an |grep -i 3306 | wc -lps -e
23、f | grep httpd | wc -l48.35的snmpd文档加上48.52的48.35.cfg文件加上Target183.63.48.35_5: snmpwalk -v 2c -c public 183.62.48.35 .1.3.6.1.4.1.2021.52|grep 52.4.|awk -F print $2#gargey183.63.48.35_5: memTotalReal.0&memAvailReal.0:holdataholdata.3322.orgXsize183.63.48.35_5: 300Ysize183.63.48.35_5: 100Ytics183.63.4
24、8.35_5: 7MaxBytes183.63.48.35_5:9000Title183.63.48.35_5:Memory State of ServerPageTop183.63.48.35_5:Memory State of ServerShortLegend183.63.48.35_5: MBkmg183.63.48.35_5: MBkilo183.63.48.35_5:1024YLegend183.63.48.35_5: Memory UsageLegendI183.63.48.35_5: Memory usedLegendO183.63.48.35_5: Memory tatolO
25、ptions183.63.48.35_5: growright,gauge,nopercent#Target183.62.48.35_6: snmpwalk -v 2c -c public 183.62.48.35 .1.3.6.1.4.1.2021.51|grep 51.4.|awk -F print $2#Targey183.62.48.35_5: memTotalReal.0&memAvailReal.0:holdataholdata.3322.orgXsize183.62.48.35_6: 300Ysize183.62.48.35_6: 100Ytics183.62.48.35_6:
26、7MaxBytes183.62.48.35_6:1000Title183.62.48.35_6:THE number of tcp connnect for ServerPageTop183.62.48.35_6:The number of TCP connecter for ServerShortLegend183.62.48.35_6:kmg183.62.48.35_6: times#kilo183.62.48.35_6:1024YLegend183.62.48.35_6: No. of connectedLegendI183.62.48.35_6: port 80LegendO183.62.48.35_6: httpd process numberOptions183.62.48.35_6: growright,gauge,nopercent这是我最后的效果图,我自己做了一个首页index.html完成。Copy的也累了把额外赠送给你vim的替换命令: :1,$s/183.63.48.35_3/127.0.0.1/g含义将183.62
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1