这几天没有更新Blog是因为给一个项目安装MRTG的监控系统。MRTG监控想必大家很收悉了,不过这次安装还是学到一些新东西,拿来跟大家分享一下。
监控网络流量的就不再叙述了,因为这时MRTG的看家本领,大多数人都会,这里说一下监控CPU利用率或者SMTP Queue等等;
要监控这些东西就要先写个脚本,然后让MRTG去读脚本产生的数据,然后以图形的方式呈现出来就可以了。
下面是我写的一些脚本:
监控CPU利用率:
代码
#!/bin/bash
cputmp=`/usr/bin/sar -u 1 4 | tail -1`
cpuusr=`echo $cputmp | awk '{print $2}'`
cpusys=`echo $cputmp | awk '{print $3}'`
UPtime=`uptime |awk -F, '{print $1}'`
echo $cpuusr
echo $cpusys
echo $UPtime
echo `hostname`
这个脚本执行执行结果如下:
代码
2
1
73 day(s) 17:09
表示用户占用2%,系统占用1%,系统已经连续运行了73天17小时零9分。
然后就是让MRTG去读取这些数据,现在写一个MRTG的cfg文件:
代码
WorkDir:/var/www/html/mrtg/
Options[cpu]:gauge, nopercent, growright
Language:chinese
EnableIPv6: no
Target[cpu]:`/var/script/cpu_util.sh`
MaxBytes[cpu]: 100
YLegend[cpu]: CPU loading (%)
ShortLegend[cpu]: %
LegendO[cpu]: CPU Used;
LegendI[cpu]: CPU Sys;
Title[cpu]: Utilization Analysis for CPU -- mail2
PageTop[cpu]:
Utilization Analysis for CPU -- mail2
解释一下上面的一些参数:
WorkDir----生成MRTG页面文件的地方;
gauge----MRTG生成的图片上带有标尺;
nopercent----计算百分比;
growright----图形向右增长;
Language:chinese----页面显示中文,这个地方可以填写其它语言支持;
EnableIPv6----是否支持IPv6;
Target----告诉MRTG去执行那个脚本;
MaxBytes----最大字节数,这里我们监控CPU利用率的百分比,所以最大我们填100,如果监控其它参数要视情况而定;
YLegend----纵坐标(Y轴)单位和参数;
ShortLegend----单位;等页面生成以后你就可以看到这些东西出现的位置,不满意的话可以再进行修改;
LegendO,LegendI----MRTG监控的两个读数分别代表的什么;
Title----这个图片的标题;
PageTop----这个html页面的标题;
然后就是去mrgt去执行这个配置文件生成监控页面;
代码
/usr/local/mrtg/bin/mrtg /usr/local/mrtg/cfg/cpu_until.cfg
这条命令要执行3次以上,直到没有报错;
然后再写进crontab:
代码
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg/bin/mrtg /usr/local/mrtg/cfg/cpu_until.cfg
这样这个cpu利用率的监控就做好了,5分钟就刷新一次。
一下是监控其它参数的一些脚本,希望对大家有帮助;
HTTP连接数:
代码
#!/bin/bash
HTTP_CONN=`netstat -an|grep ESTABLISHED|awk '$1~/\.80$/ {print $0}'|wc -l`
UPtime=`uptime |awk -F, '{print $1 $2}' | awk '{print $3 " " $4 " " $5}'`
echo $HTTP_CONN
echo $HTTP_CONN
echo $UPtime
echo `hostname`
SMTP连接数、POP连接数只需要修改上面脚本把80更换成25和110即可;
代码
SMTP_CONN=`netstat -an|grep ESTABLISHED|awk '$1~/\.25$/ {print $0}'|wc -l`
POP_CONN=`netstat -an|grep ESTABLISHED|awk '$1~/\.110$/ {print $0}'|wc -l`
内存使用率:
代码
#!/bin/bash
MEM_U=`sar -r 1 5|tail -1|awk '{print $4}'`
UPtime=`uptime |awk '{print $2 " " $3 " " $4 " " $5}'`
echo $MEM_U
echo $MEM_U
echo $UPtime
echo `hostname`
以 上脚本在不同操作系统上可能需要进行小的修改;我都是在solaris9上测试过了,监控内存这个脚本操作系统不同,内存总量不同脚本就不同, solaris显示的是内存空余的数量,所以要用总内存减去空余的才是内存使用的情况;所以这个内存脚本我帖上来的是在linux上跑的一个脚本。脚本的 原理都一样;