Linux AS3下通过MRTG,SNMP,APACHE进行监测流量,内存,CPU

发布于 2022-10-02 13:17:19 字数 4618 浏览 14 评论 0

感谢 abel 对我的支持和帮助,以及platinum的指点才能
完成MRTG的配置,下面是我总结的文档,有什么错误的地方
请高手指点

--------------------------------------------------------------
本机IP地址: 192.168.1.10
RedHat Linux AS3 U2
这里apache的安装和配置就略过了

MRTG是用Perl写成的,并且使用了zlib、gd以及png等函数(zlib用来压缩图表、gd用来绘制图表)。服务器中已经含有下列的软件:perl(perl-5.0xx以上)、zlib(zlib-1.1.3-xx以上)、gd(gd-1.3.xx以上)、libpng和Apache。

rpm -qa | grep perl  
rpm -qa | grep zlib  
rpm -qa | grep gd
rpm -qa | grep libpng

安装SNMP ucd-snmp-4.2.1.tar.gz。

[root@tooth src]#cd /usr/local/src  
[root@ tooth src]#cp /root/ucd-snmp-4.2.1.tar.gz  
[root@ tooth src]#tar -zxvfucd-snmp-4.2.1.tar.gz  
[root@ tooth src]#cd ucd-snmp-4.2.1  
[root@ tooth cd-snmp-4.2.1]# ./configure --prefix=/usr/local/snmp
[root@ tooth cd-snmp-4.2.1]# make  
[root@ tooth cd-snmp-4.2.1]# makeinstall

System Contact Information (root@): localhost
System Location (Unknown):
Location to write logfile (/var/log/snmpd.log):
Location to write persistent information (/var/ucd-snmp):

启动ucd-snmp。
直接在shell下面打上/usr/local/snmp/sbin/snmpd start即可,或者直接加在/etc/rc.d/rc.local当中,就可以自动开机启动了。

[root@tooth root] # /etc/rc.d/init.d/snmpd start

修改snmpd.conf文件
将#view systemview included mib2的内容修改为:

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

然后再重新启动snmpd

-----------------------------------------------
安装 MRTG

[root@tooth root] # cd/usr/local/src
[root@tooth src]# cp/root/mrtg-2.9.17.tar.gz
[root@tooth src]# tar-zxvfmrtg-2.9.17.tar.gz
[root@tooth src]# cd mrtg-2.9.17
[root@tooth mrtg-2.9.17]# ./configure --prefix=/usr/local/mrtg-2
[root@tooth mrtg-2.9.17]# make;make install

生成mrtg的工作目录和mrtg的配置文件mrtg.cfg

[root@tooth mrtg-2.9.17]# mkdir /tmp/wsbm/mrtg/conf
[root@tooth rtg-2.9.17]# cp images/* /tmp/wsbm/mrtg/conf
[root@tooth mrtg-2.9.17]# cd /usr/local/mrtg-2/bin
[root@tooth bin]# perl cfgmaker public @192.168.1.10 --global "WorkDir: /tmp/wsbm/mrtg" --ifref=ip --output=/tmp/wsbm/mrtg/conf/mrtg.cfg  
[root@tooth bin]# vi /tmp/wsbm/mrtg/mrtg.cfg

如图1

不过由于程序自动设定的mrtg.cfg会有问题,因此,请将下面这三行修改成你自己的样式。
WorkDir: /tmp/wsbm/mrtg/conf/  
Options[_]:growright,bits  
Language:GB2312

[root@tsaibin]# ./mrtg /tmp/wsbm/mrtg/conf/mrtg.cfg

在/mrtg-2.9.29/bin下有cfgmaker  indexmaker  mrtg  rateup 4个文件,如果执行不了可以#chmod a+x rateup

---------------------------------------------------------------------------
开始测试你的参数项,要执行三次,就可以正常工作了,不过,若是有问题的话,就需要改mrtg.cfg,再执行直到没有错误发生为止。
这里的--global参数表示后面的选项是对后面指定的设备都是有效的(如果希望对多个设 备进行监控时,该参数就会发生作用)。WorkDir用来指示mrtg的工作目录;Options用来 指定一些特定的选项,这里的growright,bits是用来指定默认options配置的,对于常见 的应用来说默认options配置就可以满足需求了。ifref用来指示用什么选项来标识设备接 口,这里指定使用IP地址来标识网络设备接口。ifref可以指定为 nr、ip、eth、descr、name。nr表示用接口在MIBII库中Interface接口的ifIndex来识别 接口;IP表示使用ip地址识别接口;eth表示使用接口的物理地址标识接口;descr表示使 用接口的描述信息来标识接口;name表示使用接口名来标识接口。一般来说ip地址是唯一 的,但是有些情况下接口是没有IP地址的,例如交换机就会出现这种情况。对于接口来说 nr(接口号)是唯一的,因此对于一般情况使用IP地址就可以了,而对于其他一些情况则需 要采用nr了。"--output /etc/mrtg.cfg"标识将生成的配置文件存放在/etc/目录 下。"public@192.168.1.10"表示监控IP地址为192.168.1.10的设备,采用public作为共同 体名通过snmp协议来监控设备192.168.1.10。
-----------------------------------------------------------------------------

--------------------------------------------
生成监测流量的页面

[root@tooth bin]# ./indexmaker --output=/tmp/wsbm/mrtg/conf/index.html --title=Vbird  /tmp/wsbm/mrtg/conf/mrtg.cfg

上面这个程序indexmaker是在制作首页。会自动地输出一个index.html的文件中。

打开浏览器输入地址:http://192.168.1.10/mrtg/conf 我们可以看到mrtg的页面(图2)

但这并不是我们想看到的流量监测页面,在生成index.html文件的同时,在/tmp/wsbm/mrtg下生成了192.168.1.10_2.html文件,现在我们在浏览器地址输入http://192.168.1.10/mrtg/192.168.1.10_2.html,我们可以看到了mrtg监测流量的页面,但使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生 成统计信息,默认为五分钟运行一次。作为root身份crontab -e进入编辑状态,添加内容 如下:

*/5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg

到此我们就可以对一台服务器进行流量监测工作。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

音盲 2022-10-09 13:17:19

-----------------------------
内存的监测
编写MEM数据的抓取脚本:

[root@tooth root]# cd /usr/local/mrtg-2/bin
[root@tooth bin]# vi mfree.sh

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

[root@tooth bin]# chmod 755 mfree.sh
[root@tooth bin]# sh mfree.sh
442
1006

(上面一个数据是内存使用量,下面的是内存总量,M)

修改mrtg.cfg文件内容

Options[_]: growright,bits,gauge,nopercent

上面我们已经进行了修改,这里我们只修改Options[_]:
否则会有错误提示

ERROR:Line 110 (Optiong[Memory] growright,gauge,nopercent) in CGF file (mrtg.cfg) does not make sense

找个地方再添加下面内容:

###MEM status
Target[Memory]:`/usr/local/mrtg-2/bin/mfree.sh ` (刚才编写的脚本)Xsize[Memory]: 300
Ysize[Memory]: 100
Ytics[Memory]: 7
MaxBytes[Memory]: 2048   
Title[Memory]:Memory State of Memory tooth Server
PageTop[Memory]:<H1>;Memory State of tooth Server</H1>; ShortLegend[Memory]: MB
kmg[Memory]: % kilo[Memory]:1024
YLegend[Memory]: Memory Usage
LegendI[Memory]: 可用内存
LegendO[Memory]: 总内存量
Options[Memory]: growright,gauge,nopercent

这样就可以监测服务器的内存情况

魂牵梦绕锁你心扉 2022-10-09 13:17:19

好,但图在哪里:)

怪我入戏太深 2022-10-09 13:17:19

-----------------------------
连接数监测:

编写脚本

[root@tooth bin]# vi person.sh

#!/bin/sh
echo `netstat -a | grep www | awk '{print $5}' | sort | wc -l | awk '{print $1 - 1}'`
echo `netstat –a | grep www | awk '{print $5}' | cut -d ":" -f1 | sort | uniq | wc -l | awk '{print $1 -1}'`
UPtime=`/usr/bin/
uptime | awk '{print $3 " " $4 " " $5}'`
echo $UPtime
echo root@localhost

[root@tooth bin]# chmod 755 person.sh

修改mrtg.cfg文件,添加下面内容:

### On line people
Target[on_line_people]: `/usr/local/mrtg-2/bin/person.sh`
Xsize[on_line_people]: 300
Ysize[on_line_people]: 100
Ytics[on_line_people]: 7
MaxBytes[on_line_people]: 1000
Options[on_line_people]: gauge, nopercent, growright
YLegend[on_line_people]: Online UsersShort
Legend[on_line_people]: man
LegendI[on_line_people]: & connection number
LegendO[on_line_people]: & on line number
Title[on_line_people]: on line people statistical
PageTop[on_line_people]: <H1>; on line number of people</H1>;

梦言归人 2022-10-09 13:17:19

-------------------------------
CPU负载的监测

编写脚本:

[root@tooth bin]# vi cpu.sh

#!/bin/bash #使用 sar 來监测 CPU 的 user 及 System负载
cpuusr=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $3}'`
cpusys=`/usr/bin/sar -u 1 3 | grep Average | awk '{print $5}'`
UPtime=`/usr/bin/uptime | awk '{print $3 " " $4 " " $5}'`
echo $cpuusr   
echo $cpusys   
echo $UPtime   
echo root@localhost  

[root@tooth bin]# chomd 755 cpu.sh

修改mrtg.cfg文件,添加下面内容:

### CPU load
Target[localhost]: `/usr/local/mrtg-2/bin/cpu.sh`
MaxBytes[localhost]: 100
Options[localhost]: gauge, nopercent, growright
YLegend[localhost]: CPU loading (%)
ShortLegend[localhost]: %
LegendO[localhost]: & CPU 使用者负载;
LegendI[localhost]: & CPU 纯系统负载;
Title[localhost]: CPU ?t???v
PageTop[localhost]: <H1>;CPU 负载</H1>;

注意事项:person.sh 和 mfree.sh  两个脚本的权限;脚本和mrtg.cfg文档中mrtg.cfg 的路径,以及Options[_]: growright,bits,gauge,nopercent 的设置

灯角 2022-10-09 13:17:19

发不了图片哦

可可 2022-10-09 13:17:19

牙齿兄,好强喔!!!

万劫不复 2022-10-09 13:17:19

收起來,備用!

迟月 2022-10-09 13:17:19

牙齿兄~不錯哦,很大的進步
相信這個過程中有許多甘苦~冷暖自知,
但自己學習,實作,碰到問題並努力克服,久了,你碰到任何問題大概都知道應
如何去思考,我並沒有給您什麼幫忙,只是告知您學習上的盲點而以

----------------------
以下,對本文的一些建議:
1.Options 的項目可以再弄清楚些,這個很重要.
  若可以加看 mrtg.cfg 中的 LogFormat: rrd 用法,再加看
  http://my14all.sourceforge.net/
2. snmpd.conf 的項目可以再加強,不然您可密切注意 DNS 版,近期我會發一篇介紹

對於您之前的問題, Web 及 Oracle , 我相信怎麼做您應該有頭緒了,
只要您真的了解 SNMP, Oracle 的運行狀況從 Oracle 的 MIBs 中
都可以得到,這並沒有任何困難.
至於 Web 就看您要測的是什麼項目,例如您提到的 Connection 計算
或是 Web In/Out 流量 or 每個 virtualhost 流量等, httpd 程式運行狀\r
況等....,這些都可以畫出來.

愿得七秒忆 2022-10-09 13:17:19

好样的!
能看看效果吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文