用shell实现informix的性能监控[抛砖引玉] |
作者: 来源: 阅读 数 303 人次 , 2006-4-25 9:23:00 |
|
用shell实现informix的性能监控,并以html格式输出,直观方便。 适合informix系统初建时监控系统性能。 本例是按cron机制运行设计的,安排它在每天系统繁忙时进行监控,以便对系统的资源分配,参数设置进行分析和合理调整。 [code:1:eeefa54fd9]#!/bin/ksh #ScriptName:getgloinfo #定义环境变量 INFORMIXDIR=/usr/informix INFORMIXSERVER=server0 ONCONFIG=onconfig.server0 PATH=$PATH:$INFORMIXDIR/bin export INFORMIXDIR INFORMIXSERVER ONCONFIG PATH LOGG=$INFORMIXDIR/log #建立数据存放目录 YUE=`date +%Y%m` if [ ! -d ${LOGG}/${YUE} ] then mkdir ${LOGG}/html/${YUE} >/dev/null 2>&1 mkdir ${LOGG}/data/${YUE} >/dev/null 2>&1 fi
#准备临时数据目录 TMP=/tmp/GLO;mkdir $TMP
#数据文件名:格式MMDD-HHMM D=`/bin/date +%m%d-%H%M` GLODAT=${LOGG}/data/${YUE}/${D}.glo tdir=${LOGG}/html/${YUE} bname=`/bin/basename $GLODAT` umask 133
#采集数据 getdata(){ #提取统计项目 onstat -g glo|awk '{print $3}'|sed -e '1,/^class/d' -e '/^$/d'|sed '$d' >${TMP}/glotmp #采集数据:时间间隔100秒 for i in 1 2 3 4 5 6 7 do onstat -g glo|awk '{print $6}'|sed -e '1,/total/d' -e '/^$/d' >${TMP}/glo.$i paste ${TMP}/glotmp ${TMP}/glo.${i} >${TMP}/glo.$$ mv ${TMP}/glo.$$ ${TMP}/glotmp [ $i -lt 7 ] && sleep 100 done awk '{printf"%s ",$1;for(i=2;i<9;printf"%.2f ",$i++); for(i=3;i<9;i++)printf"%.2f ",($i-$(i-1)); for(i=4;i<9;i++)printf"%.2f ",($i-$2);printf"\n"}' ${TMP}/glotmp }
body(){ cat $GLODAT|while read line do printf "<tr align=\"center\" valign=\"middle\"><font size=\"1\">\n" set $line j=0 for i in $* do if [ "$j" != "0" ] then printf " <td>%.2f</td>\n" $i else printf " <td>%s</td>\n" $i fi j=j+1 done printf "</tr>\n" done }
header(){ cat - <<! <html> <body> <table width="95%" border="1" align="center" bordercolorlight="#FFCCCC" bordercolordark="#FF6633"> <CAPTION><FONT SIZE=+2><b>${bname}</b></FONT></CAPTION> <tr align="center" valign="middle"><font face="宋体"> <td rowspan=2><font size=2>VPS</font></td> <td colspan=7><font size=+2>原始数据(onstat -g glo)</font></td> <td colspan=6><font size=+2>资源利用率(%)</font></td> <td colspan=5><font size=+2>累计利用量(秒)</font></td> </tr> <tr align="center" valign="middle"><font size="1"> <td>A</td> <td>B</td> <td>C</td> <td>D</td> <td>E</td> <td>F</td> <td>G</td> <td>时段一</td> <td>时段二</td> <td>时段三</td> <td>时段四</td> <td>时段五</td> <td>时段六</td> <td>200秒</td> <td>300秒</td> <td>400秒</td> <td>500秒</td> <td>600秒</td> </tr> ! }
tailer(){ D=`date +%Y/%m/%d-%H:%M` cat - <<! </table> <p><font size="1">Report Date:${D}</font></p> </html> ! }
# program main body getdata >$GLODAT header >$tdir/$bname.html body >>$tdir/$bname.html tailer >>$tdir/$bname.html rm -rf ${TMP}[/code:1:eeefa54fd9] 输出样例:
点击查看大图 |
|