用shell实现informix的性能监控,并以html格式输出,直观方便。 适合informix系统初建时监控系统性能。本例是按cron机制运行设计的,安排它在每天系统繁忙时进行监控,以便对系统的资源分配,参数设置进行分析和合理调整。
#!/bin/ksh
#ScriptName:getgloinfo
#定义环境变量
INFORMIXDIR=/usr/informix
INFORMIXSERVER=server0
ONCONFIG=onconfig.server0
PATH=$PATH:$INFORMIXDIR/bin
exportINFORMIXDIRINFORMIXSERVERONCONFIGPATH
LOGG=$INFORMIXDIR/log
#建立数据存放目录
YUE=`date+%Y%m`
if[!-d${LOGG}/${YUE}]
then
mkdir${LOGG}/html/${YUE}>/dev/null2>&1
mkdir${LOGG}/data/${YUE}>/dev/null2>&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`
umask133
#采集数据
getdata(){
#提取统计项目
onstat-gglo|awk'{print$3}'|sed-e'1,/^class/d'-e'/^$/d'|sed'$d'>${TMP}/glotmp
#采集数据:时间间隔100秒
foriin1234567
do
onstat-gglo|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-lt7]&&sleep100
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|whilereadline
do
printf"<tralign=\"center\"valign=\"middle\"><fontsize=\"1\">\n"
set$line
j=0
foriin$*
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>
<tablewidth="95%"border="1"align="center"bordercolorlight="#FFCCCC"bordercolordark="#FF6633">
<CAPTION><FONTSIZE=+2><b>${bname}</b></FONT></CAPTION>
<tralign="center"valign="middle"><fontface="宋体">
<tdrowspan=2><fontsize=2>VPS</font></td>
<tdcolspan=7><fontsize=+2>原始数据(onstat-gglo)</font></td>
<tdcolspan=6><fontsize=+2>资源利用率(%)</font></td>
<tdcolspan=5><fontsize=+2>累计利用量(秒)</font></td>
</tr>
<tralign="center"valign="middle"><fontsize="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><fontsize="1">ReportDate:${D}</font></p>
</html>
!
}
#programmainbody
getdata >$GLODAT
header >$tdir/$bname.html
body >>$tdir/$bname.html
tailer >>$tdir/$bname.html
rm-rf${TMP}
输出样例: