用shell实现informix的性能监控[抛砖引玉]


用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 "

 1<tr align='\"center\"' valign='\"middle\"'><font size='\"1\"'>\n"   
 2set $line   
 3j=0   
 4for i in $*   
 5do   
 6if [ "$j" != "0" ]   
 7then   
 8printf " <td>%.2f</td>\n" $i   
 9else   
10printf " <td>%s</td>\n" $i   
11fi   
12j=j+1   
13done   
14printf "</font></tr>

\n"
done
}

header(){
cat - <

 1<body>
 2<table align="center" border="1" bordercolordark="#FF6633" bordercolorlight="#FFCCCC" width="95%">
 3<caption><font size="+2"><b>${bname}</b></font></caption>
 4<tr align="center" valign="middle"><font face="宋体">
 5<td rowspan="2"><font size="2">VPS</font></td>
 6<td colspan="7"><font size="+2">原始数据(onstat -g glo)</font></td>
 7<td colspan="6"><font size="+2">资源利用率(%)</font></td>
 8<td colspan="5"><font size="+2">累计利用量(秒)</font></td>
 9</font></tr>
10<tr align="center" valign="middle"><font size="1">
11<td>A</td>
12<td>B</td>
13<td>C</td>
14<td>D</td>
15<td>E</td>
16<td>F</td>
17<td>G</td>
18<td>时段一</td>
19<td>时段二</td>
20<td>时段三</td>
21<td>时段四</td>
22<td>时段五</td>
23<td>时段六</td>
24<td>200秒</td>
25<td>300秒</td>
26<td>400秒</td>
27<td>500秒</td>
28<td>600秒</td>
29</font></tr>   
30!   
31}   
32  
33tailer(){   
34D=`date +%Y/%m/%d-%H:%M`   
35cat - &lt;<!--   
36</table-->
37<p><font size="1">Report Date:${D}</font></p>
38   
39!   
40}   
41  
42  
43# program main body   
44getdata &gt;$GLODAT   
45header &gt;$tdir/$bname.html   
46body &gt;&gt;$tdir/$bname.html   
47tailer &gt;&gt;$tdir/$bname.html   
48rm -rf ${TMP}[/code:1:eeefa54fd9]   
49输出样例:   
50
51
52![用shell实现informix的性能监控\[抛砖引玉\]](http://www.cndw.com/ShowImg.asp?p=/2006-4-25/775954fp131_1.jpg) 点击查看大图</table></body>
Published At
Categories with 数据库类
comments powered by Disqus