Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101350801
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-04-08 21:18:45

作者:admirer  出处:Unix爱好者家园unix-cd.com  

用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 ""center\" valign=\"middle\">"1\">\n" 
   set $line 
   j=0 
   for i in $* 
   do 
       if [ "$j" != "0" ] 
       then 
          printf "    
\n" $i 
       else 
          printf "    
\n" $i 
       fi 
       j=j+1 
   done 
   printf "
\n" 
done 


header(){ 
cat - < 
 
"95%" border="1" align="center" bordercolorlight="#FFCCCC" bordercolordark="#FF6633"
 
"center" valign="middle">"宋体"
VPS
 
    原始数据(onstat -g glo) 
    资源利用率(%) 
    累计利用量(秒) 
 
"center" valign="middle">"1"
    
 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
 



tailer(){ 
D=`date +%Y/%m/%d-%H:%M` 
cat - <
%.2f%s
${bname}
ABCDEFG时段一时段二时段三时段四时段五时段六200秒300秒400秒500秒600秒
 

"1">Report Date:${D}

 
 




# program main body 
getdata   >$GLODAT 
header   >$tdir/$bname.html 
body   >>$tdir/$bname.html 
tailer   >>$tdir/$bname.html 
rm -rf ${TMP} 

输出样例: 
 

阅读(904) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~