首页 > 学技术 > 技术网文 > Informix > 正文

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


来源 chinaunix.net 酷勤网整理

用shell实现informix的性能监控,并以html格式输出,直观方便。
适合informix系统初建时监控系统性能。
本例是按cron机制运行设计的,安排它在每天系统繁忙时进行监控,以便对系统的资源分配,参数设置进行分析和合理调整。
#!/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}

输出样例:








 caosir 回复于:2003-12-29 01:13:53

顶一下,不过生成报表的活,用perl最好了  :em02:


 xixihaha009 回复于:2003-12-29 09:32:19

好东西,收下了
谢谢楼主分享


 czw1413_cn 回复于:2003-12-29 18:52:46

楼主的功力还是很深厚的哟
不过用perl可能确实方便,还可以分析到很多指标


 admirer 回复于:2003-12-29 19:54:11

引用:原帖由 "czw1413_cn" 发表:
楼主的功力还是很深厚的哟
不过用perl可能确实方便,还可以分析到很多指标


谢谢鼓励!
有空一定学学perl!!


 amiescort 回复于:2003-12-29 21:27:11

靠,走错门了,一屋子的达人……


 alinxiong 回复于:2003-12-30 09:52:31

高,又学了一招




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=232417
转载请注明作者名及原文出处



收藏本页到: