用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"
1<tralign=\"center\"valign=\"middle\"><fontsize=\"1\">\n"
2
3set$line
4
5j=0
6
7foriin$*
8
9do
10
11if["$j"!="0"]
12
13then
14
15printf"<td>%.2f</td>\n"$i
16
17else
18
19printf"<td>%s</td>\n"$i
20
21fi
22
23j=j+1
24
25done
26
27printf"\n"
28
29done
30
31}
32
33header(){
34
35cat-<<!--
36
37<html-->
38<body>
39<tablewidth="95%"border="1"align="center"bordercolorlight="#ffcccc"bordercolordark="#ff6633">
40<caption><fontsize=+2><b>${bname}</b></fontsize=+2></caption>
41<tralign="center"valign="middle"><fontface="宋体">
42<tdrowspan=2><fontsize=2>VPS
43<tdcolspan=7><fontsize=+2>原始数据(onstat-gglo)
44<tdcolspan=6><fontsize=+2>资源利用率(%)
45<tdcolspan=5><fontsize=+2>累计利用量(秒)
46
47<tralign="center"valign="middle"><fontsize="1">
48<td>A</td>
49<td>B</td>
50<td>C</td>
51<td>D</td>
52<td>E</td>
53<td>F</td>
54<td>G</td>
55<td>时段一</td>
56<td>时段二</td>
57<td>时段三</td>
58<td>时段四</td>
59<td>时段五</td>
60<td>时段六</td>
61<td>200秒</td>
62<td>300秒</td>
63<td>400秒</td>
64<td>500秒</td>
65<td>600秒</td>
66
67
68!
69
70}
71
72tailer(){
73
74D=`date+%Y/%m/%d-%H:%M`
75
76cat-<<!--
77
78</table-->
79<p><fontsize="1">ReportDate:${D}</fontsize="1"></p>
80
81
82!
83
84}
85
86#programmainbody
87
88getdata >$GLODAT
89
90header >$tdir/$bname.html
91
92body >>$tdir/$bname.html
93
94tailer >>$tdir/$bname.html
95
96rm-rf${TMP}
97
98输出样例:
99
100</fontsize="1"></tralign="center"valign="middle"></fontsize=+2></tdcolspan=5></fontsize=+2></tdcolspan=6></fontsize=+2></tdcolspan=7></fontsize=2></tdrowspan=2></fontface="宋体"></tralign="center"valign="middle"></tablewidth="95%"border="1"align="center"bordercolorlight="#ffcccc"bordercolordark="#ff6633"></body></fontsize=\"1\"></tralign=\"center\"valign=\"middle\">