rev |
line source |
slaxemulator@12
|
1 #!/bin/sh
|
pankso@241
|
2 #*/5 * * * * /home/slitaz/www/tank/lib/makegraphs >/dev/null
|
slaxemulator@12
|
3
|
slaxemulator@12
|
4 # RRD database directory
|
pankso@241
|
5 rrdlog="/home/slitaz/www/tank/log/rrd"
|
slaxemulator@12
|
6
|
slaxemulator@12
|
7 # Images directory
|
slaxemulator@288
|
8 rrdgraph="/home/slitaz/www/tank/images/rrd"
|
slaxemulator@12
|
9
|
slaxemulator@12
|
10 # Colors
|
slaxemulator@12
|
11 rrdcolors="--color SHADEA#FFFFFF --color SHADEB#FFFFFF --color BACK#FFFFFF"
|
slaxemulator@12
|
12 rrdgraphargs="-aPNG -i -z --alt-y-grid -w 600 -h 100 -r $rrdcolors"
|
slaxemulator@12
|
13
|
slaxemulator@12
|
14 [ -d $rrdlog ] || mkdir -p $rrdlog
|
slaxemulator@12
|
15 [ -d $rrdgraph ] || mkdir -p $rrdgraph
|
slaxemulator@12
|
16
|
slaxemulator@12
|
17 updatecpudata() {
|
slaxemulator@12
|
18 [ -e "$rrdlog/cpu.rrd" ] || rrdtool create $rrdlog/cpu.rrd --step=300 \
|
slaxemulator@12
|
19 DS:user:COUNTER:600:0:500000000 \
|
pankso@40
|
20 DS:nice:COUNTER:600:0:500000000 \
|
slaxemulator@12
|
21 DS:system:COUNTER:600:0:500000000 \
|
slaxemulator@12
|
22 DS:idle:COUNTER:600:0:500000000 \
|
pankso@40
|
23 DS:iowait:COUNTER:600:0:500000000 \
|
pankso@40
|
24 DS:irq:COUNTER:600:0:500000000 \
|
pankso@40
|
25 DS:softirq:COUNTER:600:0:500000000 \
|
pascal@339
|
26 DS:celsius:GAUGE:600:0:100000 \
|
slaxemulator@12
|
27 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
slaxemulator@12
|
28 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
pankso@40
|
29 grep '^cpu' /proc/stat | while read cpu user nice system idle iowait irq softirq misc; do
|
pankso@40
|
30 celsius=$(find /sys | grep /temp._input | xargs cat | \
|
pankso@40
|
31 awk '{ if ($0 > max) max=$0 } END { print max/1 }')
|
pankso@40
|
32 rrdtool update $rrdlog/cpu.rrd \
|
pankso@40
|
33 -t celsius:nice:user:system:idle:iowait:irq:softirq \
|
pankso@40
|
34 N:$celsius:$nice:$user:$system:$idle:$iowait:$irq:$softirq
|
slaxemulator@12
|
35 break
|
slaxemulator@12
|
36 done
|
slaxemulator@12
|
37 }
|
slaxemulator@12
|
38
|
slaxemulator@12
|
39 updatecpugraph() {
|
slaxemulator@12
|
40 period=$1
|
pascal@713
|
41 info="$(grep '^model name' /etc/cpuinfo | cut -d: -f2 \
|
slaxemulator@12
|
42 | sed 's/ * / /g' | awk '
|
slaxemulator@12
|
43 { s=$0 ; n++ }
|
slaxemulator@12
|
44 END { if (n > 1) printf " %dx",n; print s }')"
|
slaxemulator@12
|
45 rrdtool graph "$rrdgraph/cpu-$period.png" --start -1$period \
|
slaxemulator@12
|
46 $rrdgraphargs -l 0 -u 100 -t "cpu usage per $period [$info ]" \
|
pascal@561
|
47 -v " " \
|
slaxemulator@12
|
48 DEF:user=$rrdlog/cpu.rrd:user:AVERAGE \
|
slaxemulator@12
|
49 DEF:system=$rrdlog/cpu.rrd:system:AVERAGE \
|
slaxemulator@12
|
50 DEF:idle=$rrdlog/cpu.rrd:idle:AVERAGE \
|
pankso@40
|
51 DEF:nice=$rrdlog/cpu.rrd:nice:AVERAGE \
|
pascal@367
|
52 DEF:iowait=$rrdlog/cpu.rrd:iowait:AVERAGE \
|
pankso@40
|
53 DEF:celsius=$rrdlog/cpu.rrd:celsius:AVERAGE \
|
pascal@367
|
54 'CDEF:total=user,system,idle,nice,iowait,+,+,+,+' \
|
slaxemulator@12
|
55 'CDEF:userpct=100,user,total,/,*' \
|
slaxemulator@12
|
56 'CDEF:systempct=100,system,total,/,*' \
|
slaxemulator@12
|
57 'CDEF:idlepct=100,idle,total,/,*' \
|
pankso@40
|
58 'CDEF:nicepct=100,nice,total,/,*' \
|
pascal@367
|
59 'CDEF:iopct=100,iowait,total,/,*' \
|
pankso@40
|
60 'CDEF:temp=celsius,1000,/' \
|
pascal@367
|
61 'AREA:userpct#0000FF:user cpu' \
|
pascal@367
|
62 'STACK:nicepct#C0C0FF:nice cpu' \
|
pascal@367
|
63 'STACK:systempct#FF0000:system cpu' \
|
pascal@367
|
64 'STACK:iopct#FFFF00:I/O wait' \
|
pascal@367
|
65 'STACK:idlepct#00FF00:idle cpu' \
|
pankso@40
|
66 'LINE1:temp#000000:temperature\g' \
|
pankso@40
|
67 'GPRINT:temp:MAX:max %2.0lfC\j'
|
slaxemulator@12
|
68 }
|
slaxemulator@12
|
69
|
slaxemulator@12
|
70 updatememgraph() {
|
slaxemulator@12
|
71 period=$1
|
slaxemulator@12
|
72 info="$(free | awk '\
|
slaxemulator@12
|
73 { \
|
slaxemulator@12
|
74 if (/Mem:/) { \
|
slaxemulator@12
|
75 if ($2 < 10000) printf "%d KB",$2; \
|
slaxemulator@12
|
76 else if ($2 < 10000000) printf "%d MB",$2/1024; \
|
slaxemulator@12
|
77 else printf "%d GB",$2/1024/1024; \
|
slaxemulator@12
|
78 } \
|
slaxemulator@12
|
79 }')"
|
slaxemulator@12
|
80 info2="$(free | awk '\
|
slaxemulator@12
|
81 { \
|
slaxemulator@12
|
82 if (/Swap:/) { \
|
slaxemulator@12
|
83 if ($2 < 10000) printf "%d KB",$2; \
|
slaxemulator@12
|
84 else if ($2 < 10000000) printf "%d MB",$2/1024; \
|
slaxemulator@12
|
85 else printf "%d GB",$2/1024/1024; \
|
slaxemulator@12
|
86 } \
|
slaxemulator@12
|
87 }')"
|
slaxemulator@12
|
88 rrdtool graph "$rrdgraph/memory-$period.png" --start -1$period \
|
slaxemulator@12
|
89 $rrdgraphargs -l 0 -u 100 \
|
slaxemulator@12
|
90 -t "memory usage per $period [ $info + $info2 swap ]" \
|
pascal@561
|
91 -v " " \
|
slaxemulator@12
|
92 DEF:used=$rrdlog/mem.rrd:memused:AVERAGE \
|
slaxemulator@12
|
93 DEF:free=$rrdlog/mem.rrd:memfree:AVERAGE \
|
slaxemulator@12
|
94 DEF:shared=$rrdlog/mem.rrd:memshared:AVERAGE \
|
slaxemulator@12
|
95 DEF:buffer=$rrdlog/mem.rrd:membuffers:AVERAGE \
|
slaxemulator@12
|
96 DEF:cache=$rrdlog/mem.rrd:memcache:AVERAGE \
|
slaxemulator@12
|
97 DEF:swused=$rrdlog/mem.rrd:swapused:AVERAGE \
|
slaxemulator@12
|
98 DEF:swfree=$rrdlog/mem.rrd:swapfree:AVERAGE \
|
slaxemulator@12
|
99 'CDEF:total=used,free,+' \
|
slaxemulator@12
|
100 'CDEF:used2=used,buffer,cache,shared,+,+,-' \
|
slaxemulator@12
|
101 'CDEF:usedpct=100,used2,total,/,*' \
|
slaxemulator@12
|
102 'CDEF:sharedpct=100,shared,total,/,*' \
|
slaxemulator@12
|
103 'CDEF:bufferpct=100,buffer,total,/,*' \
|
slaxemulator@12
|
104 'CDEF:cachepct=100,cache,total,/,*' \
|
slaxemulator@12
|
105 'CDEF:freepct=100,free,total,/,*' \
|
slaxemulator@12
|
106 'CDEF:swtotal=swused,swfree,+' \
|
slaxemulator@12
|
107 'CDEF:swusedpct=100,swused,swtotal,/,*' \
|
slaxemulator@12
|
108 'AREA:usedpct#0000FF:used memory' \
|
slaxemulator@12
|
109 'STACK:sharedpct#FF7F00:shared memory' \
|
slaxemulator@12
|
110 'STACK:bufferpct#FF00FF:buffered memory' \
|
slaxemulator@12
|
111 'STACK:cachepct#FFFF00:cached memory' \
|
slaxemulator@12
|
112 'STACK:freepct#00FF00:free memory' \
|
pascal@367
|
113 'LINE2:swusedpct#FF0000:used swap\g' \
|
pascal@367
|
114 'GPRINT:swusedpct:MAX:%1.0lf%%\j'
|
slaxemulator@12
|
115 }
|
slaxemulator@12
|
116
|
slaxemulator@12
|
117 updatememdata () {
|
slaxemulator@12
|
118 [ -e "$rrdlog/mem.rrd" ] ||
|
slaxemulator@12
|
119 rrdtool create "$rrdlog/mem.rrd" --step=300 \
|
slaxemulator@12
|
120 DS:memused:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
121 DS:memfree:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
122 DS:memshared:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
123 DS:membuffers:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
124 DS:memcache:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
125 DS:swapused:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
126 DS:swapfree:ABSOLUTE:600:0:5000000000 \
|
slaxemulator@12
|
127 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
slaxemulator@12
|
128 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
slaxemulator@12
|
129
|
slaxemulator@12
|
130 while read tag count unit; do
|
slaxemulator@12
|
131 case "$tag" in
|
pankso@40
|
132 MemTotal:) memtotal=$count;;
|
pankso@40
|
133 MemFree:) memfree=$count
|
slaxemulator@12
|
134 memused=$(($memtotal - $memfree))
|
slaxemulator@12
|
135 memshared=0;;
|
pankso@40
|
136 MemShared:) memshared=$count;;
|
pankso@40
|
137 Buffers:) membuffers=$count;;
|
pankso@40
|
138 Cached:) memcache=$count;;
|
pankso@40
|
139 SwapTotal:) swaptotal=$count;;
|
pankso@40
|
140 SwapFree:) swapfree=$count
|
slaxemulator@12
|
141 swapused=$(( $swaptotal - $swapfree));;
|
slaxemulator@12
|
142 esac
|
slaxemulator@12
|
143 done < /proc/meminfo
|
slaxemulator@12
|
144
|
slaxemulator@12
|
145 rrdtool update "$rrdlog/mem.rrd" \
|
slaxemulator@12
|
146 -t memused:memfree:memshared:membuffers:memcache:swapused:swapfree \
|
slaxemulator@12
|
147 "N:$memused:$memfree:$memshared:$membuffers:$memcache:$swapused:$swapfree"
|
slaxemulator@12
|
148 }
|
slaxemulator@12
|
149
|
slaxemulator@12
|
150 getmax() {
|
slaxemulator@12
|
151 rrdtool fetch $rrdlog/$1.rrd AVERAGE | awk '\
|
slaxemulator@12
|
152 BEGIN {max=0} \
|
slaxemulator@12
|
153 /^[0-9]/ { \
|
slaxemulator@12
|
154 if ($2 != "nan" && $2 > max) max=$2; \
|
slaxemulator@12
|
155 if ($3 != "nan" && $3 > max) max=$3; \
|
slaxemulator@12
|
156 } \
|
slaxemulator@12
|
157 END { print max }' | sed 's/,/./'
|
slaxemulator@12
|
158 }
|
slaxemulator@12
|
159
|
slaxemulator@12
|
160 updatediskgraph() {
|
slaxemulator@12
|
161 period=$1
|
pascal@698
|
162 [ "$period" = "day" ] && maxdisk="$(getmax disk)"
|
slaxemulator@12
|
163 info=""
|
slaxemulator@12
|
164 [ -r $2 ] &&
|
slaxemulator@12
|
165 info="[ $(fdisk -l 2> /dev/null | grep "^Disk $2:" | \
|
slaxemulator@12
|
166 sed "s|Disk $2: \(.*\), .*|\1|") ]"
|
slaxemulator@12
|
167 if [ -e /sys/block/${2#/dev/}/device/iodone_cnt ]; then
|
slaxemulator@12
|
168 err=$(printf "%d\n" $(cat /sys/block/${2#/dev/}/device/ioerr_cnt) )
|
slaxemulator@12
|
169 done=$(printf "%d\n" $(cat /sys/block/${2#/dev/}/device/iodone_cnt) )
|
slaxemulator@12
|
170 rate=$(echo | awk "BEGIN { printf \"%.0e\\n\",$err/$done }")
|
slaxemulator@12
|
171 [ $err -eq 0 ] && rate="0"
|
slaxemulator@12
|
172 # --right-axis-label "I/O state %"
|
slaxemulator@12
|
173 rrdtool graph "$rrdgraph/disk-$period.png" --start -1$period \
|
slaxemulator@12
|
174 $rrdgraphargs -t "disk access per $period $info" \
|
pascal@372
|
175 -v "Sectors/second" --units=si \
|
slaxemulator@12
|
176 DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE \
|
slaxemulator@12
|
177 DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE \
|
pascal@372
|
178 DEF:blkh=$rrdlog/usagedisk.rrd:bhome:AVERAGE \
|
pascal@372
|
179 DEF:blkr=$rrdlog/usagedisk.rrd:broot:AVERAGE \
|
slaxemulator@12
|
180 "CDEF:readpct=100,read,$maxdisk,/,*" \
|
slaxemulator@12
|
181 "CDEF:writepct=100,write,$maxdisk,/,*" \
|
pascal@372
|
182 'AREA:readpct#0000FF:sectors written' \
|
pascal@372
|
183 'STACK:writepct#00FF00:sectors read' \
|
pascal@372
|
184 "COMMENT:I/O error $rate" \
|
pascal@372
|
185 'LINE1:blkr#FF00FF:blocks used in /root\g' \
|
pascal@372
|
186 'GPRINT:blkr:LAST:%1.0lf%%' \
|
pascal@372
|
187 'LINE1:blkh#FF0000:blocks used in /home\g' \
|
pascal@372
|
188 'GPRINT:blkh:LAST:%1.0lf%%\j'
|
slaxemulator@12
|
189 else
|
slaxemulator@12
|
190 rrdtool graph "$rrdgraph/disk-$period.png" --start -1$period \
|
slaxemulator@12
|
191 $rrdgraphargs -t "disk access per $period $info" \
|
slaxemulator@12
|
192 --logarithmic --lower-limit 1 -v "Sectors/second" --units=si \
|
slaxemulator@12
|
193 DEF:read=$rrdlog/disk.rrd:readsect:AVERAGE \
|
slaxemulator@12
|
194 DEF:write=$rrdlog/disk.rrd:writesect:AVERAGE \
|
pascal@372
|
195 DEF:blk=$rrdlog/usagedisk.rrd:bhome:AVERAGE \
|
pascal@372
|
196 DEF:ino=$rrdlog/usagedisk.rrd:ihome:AVERAGE \
|
slaxemulator@12
|
197 "CDEF:readpct=100,read,$maxdisk,/,*" \
|
slaxemulator@12
|
198 "CDEF:writepct=100,write,$maxdisk,/,*" \
|
pascal@367
|
199 'AREA:readpct#0000FF:sectors read from disk' \
|
pascal@372
|
200 'STACK:writepct#00FF00:sectors written to disk' \
|
pascal@372
|
201 'LINE1:ino#FF00FF:inodes used in /home\g' \
|
pascal@372
|
202 'GPRINT:ino:MAX:%1.0lf%%' \
|
pascal@372
|
203 'LINE1:blk#FF0000:blocks used in /home\g' \
|
pascal@372
|
204 'GPRINT:blk:MAX:%1.0lf%%\j'
|
slaxemulator@12
|
205 fi
|
slaxemulator@12
|
206 }
|
slaxemulator@12
|
207
|
slaxemulator@12
|
208 updatediskdata() {
|
slaxemulator@12
|
209 dev=$1
|
slaxemulator@12
|
210 [ -e "$rrdlog/disk.rrd" ] ||
|
slaxemulator@12
|
211 rrdtool create "$rrdlog/disk.rrd" --step=300 \
|
slaxemulator@12
|
212 DS:readsect:COUNTER:600:0:5000000000 \
|
slaxemulator@12
|
213 DS:writesect:COUNTER:600:0:5000000000 \
|
slaxemulator@12
|
214 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
slaxemulator@12
|
215 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
slaxemulator@12
|
216 [ -e "$rrdlog/iodisk.rrd" ] ||
|
slaxemulator@12
|
217 rrdtool create "$rrdlog/iodisk.rrd" --step=300 \
|
slaxemulator@12
|
218 DS:done:GAUGE:600:0:U DS:err:GAUGE:600:0:U \
|
slaxemulator@12
|
219 DS:req:GAUGE:600:0:U \
|
slaxemulator@12
|
220 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
slaxemulator@12
|
221 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
pascal@372
|
222 [ -e "$rrdlog/usagedisk.rrd" ] ||
|
pascal@372
|
223 rrdtool create "$rrdlog/usagedisk.rrd" --step=300 \
|
pascal@372
|
224 DS:broot:GAUGE:600:0:U DS:iroot:GAUGE:600:0:U \
|
pascal@372
|
225 DS:bhome:GAUGE:600:0:U DS:ihome:GAUGE:600:0:U \
|
pascal@372
|
226 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
pascal@372
|
227 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
slaxemulator@12
|
228
|
slaxemulator@12
|
229 while read major minor name readreq readsect writereq writesect misc; do
|
slaxemulator@12
|
230 [ $major = $(( 0x$(stat -c %t $dev) )) ] || continue
|
slaxemulator@12
|
231 [ $minor = $(( 0x$(stat -c %T $dev) )) ] || continue
|
slaxemulator@12
|
232 rrdtool update "$rrdlog/disk.rrd" -t readsect:writesect \
|
slaxemulator@12
|
233 N:$readsect:$writesect
|
slaxemulator@12
|
234 done < /proc/diskstats
|
slaxemulator@12
|
235 disk=${dev:0:8}
|
slaxemulator@12
|
236 dir=/sys/block/${disk#/dev/}/device
|
slaxemulator@12
|
237 done=$(printf "%d\n" $(cat $dir/iodone_cnt 2> /dev/null) )
|
slaxemulator@12
|
238 err=$(printf "%d\n" $(cat $dir/ioerr_cnt 2> /dev/null) )
|
slaxemulator@12
|
239 req=$(printf "%d\n" $(cat $dir/iorequest_cnt 2> /dev/null) )
|
slaxemulator@12
|
240 rrdtool update "$rrdlog/iodisk.rrd" -t done:err:req N:$done:$err:$req
|
pascal@372
|
241 iroot=$(df -i / | sed '$!d;s/.* \([0-9]*\)% \/.*/\1/')
|
pascal@372
|
242 broot=$(df / | sed '$!d;s/.* \([0-9]*\)% \/.*/\1/')
|
pascal@372
|
243 ihome=$(df -i /home | sed '$!d;s/.* \([0-9]*\)% \/.*/\1/')
|
pascal@372
|
244 bhome=$(df /home | sed '$!d;s/.* \([0-9]*\)% \/.*/\1/')
|
pascal@372
|
245 rrdtool update "$rrdlog/usagedisk.rrd" -t broot:iroot:bhome:ihome N:$broot:$iroot:$bhome:$ihome
|
slaxemulator@12
|
246 }
|
slaxemulator@12
|
247
|
slaxemulator@12
|
248 updateifgraph() {
|
slaxemulator@12
|
249 interface=$1
|
slaxemulator@12
|
250 period=$2
|
slaxemulator@12
|
251 rrdtool graph "$rrdgraph/$interface-$period.png" --start -1$period \
|
slaxemulator@12
|
252 $rrdgraphargs -t "traffic on $interface graph per $period" \
|
slaxemulator@12
|
253 --logarithmic -A -v "Bytes/second" --units=si \
|
slaxemulator@12
|
254 DEF:incoming=$rrdlog/$interface.rrd:incoming:AVERAGE \
|
slaxemulator@12
|
255 DEF:outgoing=$rrdlog/$interface.rrd:outgoing:AVERAGE \
|
pascal@372
|
256 DEF:tcp=$rrdlog/proto-$interface.rrd:tcp:AVERAGE \
|
pascal@372
|
257 'AREA:incoming#00FF00:incoming traffic\g' \
|
pascal@372
|
258 'GPRINT:incoming:MAX:max%8.3lf %sBps' \
|
pascal@372
|
259 'LINE1:outgoing#0000FF:outgoing traffic\g' \
|
pascal@372
|
260 'GPRINT:outgoing:MAX:max%8.3lf %sBps' \
|
pascal@372
|
261 'LINE1:tcp#000000:connections\g' \
|
pascal@372
|
262 'GPRINT:tcp:MAX:max %2.0lf\j'
|
slaxemulator@12
|
263 }
|
slaxemulator@12
|
264
|
slaxemulator@12
|
265 netframes() {
|
slaxemulator@12
|
266 ifconfig $1 | grep "$2 packets" | sed -re "s/.*$3:([0-9]+).*/\1/g"
|
slaxemulator@12
|
267 }
|
slaxemulator@12
|
268
|
slaxemulator@12
|
269 netstats() {
|
slaxemulator@12
|
270 ifconfig $1 | grep bytes | sed -re "s/.*$2 bytes:([0-9]+).*/\1/g"
|
slaxemulator@12
|
271 }
|
slaxemulator@12
|
272
|
pascal@372
|
273 netproto()
|
pascal@372
|
274 {
|
pascal@372
|
275 proto=${1:-tcp}
|
pascal@372
|
276 if [ -n "$2" ]; then
|
pascal@372
|
277 netstat -an 2> /dev/null | grep -v '0.0.0.0:*' | grep "^$proto"| grep ":$2 " | wc -l
|
pascal@372
|
278 else
|
pascal@372
|
279 netstat -an 2> /dev/null | grep -v '0.0.0.0:*' | grep "^$proto"| wc -l
|
pascal@372
|
280 fi
|
pascal@372
|
281 }
|
pascal@372
|
282
|
slaxemulator@12
|
283 updateifdata() {
|
slaxemulator@12
|
284 interface=$1
|
slaxemulator@12
|
285 [ -e "$rrdlog/$interface.rrd" ] ||
|
slaxemulator@12
|
286 rrdtool create "$rrdlog/$interface.rrd" --step=300 \
|
slaxemulator@12
|
287 DS:incoming:COUNTER:600:0:U \
|
slaxemulator@12
|
288 DS:outgoing:COUNTER:600:0:U \
|
slaxemulator@12
|
289 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
slaxemulator@12
|
290 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
slaxemulator@12
|
291 [ -e "$rrdlog/packets-$interface.rrd" ] ||
|
slaxemulator@12
|
292 rrdtool create "$rrdlog/packets-$interface.rrd" --step=300 \
|
slaxemulator@12
|
293 DS:in:COUNTER:600:0:U DS:out:COUNTER:600:0:U \
|
slaxemulator@12
|
294 DS:inerr:COUNTER:600:0:U DS:outerr:COUNTER:600:0:U \
|
slaxemulator@12
|
295 DS:indrop:COUNTER:600:0:U DS:outdrop:COUNTER:600:0:U \
|
slaxemulator@12
|
296 DS:inov:COUNTER:600:0:U DS:outov:COUNTER:600:0:U \
|
slaxemulator@12
|
297 DS:frame:COUNTER:600:0:U DS:carrier:COUNTER:600:0:U \
|
slaxemulator@12
|
298 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
slaxemulator@12
|
299 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
pascal@372
|
300 [ -e "$rrdlog/proto-$interface.rrd" ] ||
|
pascal@372
|
301 rrdtool create "$rrdlog/proto-$interface.rrd" --step=300 \
|
pascal@372
|
302 DS:tcp:GAUGE:600:0:U DS:udp:GAUGE:600:0:U \
|
pascal@372
|
303 DS:rsync:GAUGE:600:0:U DS:www:GAUGE:600:0:U \
|
pascal@372
|
304 DS:ssh:GAUGE:600:0:U \
|
pascal@372
|
305 RRA:AVERAGE:0.5:1:576 RRA:AVERAGE:0.5:6:672 \
|
pascal@372
|
306 RRA:AVERAGE:0.5:24:732 RRA:AVERAGE:0.5:144:1460
|
slaxemulator@12
|
307 rx=$(netstats $interface RX)
|
slaxemulator@12
|
308 tx=$(netstats $interface TX)
|
slaxemulator@12
|
309 rrdtool update "$rrdlog/$interface.rrd" -t incoming:outgoing \
|
slaxemulator@12
|
310 N:${rx:-U}:${tx:-U}
|
slaxemulator@12
|
311 rx=$(netframes $interface RX packets)
|
slaxemulator@12
|
312 tx=$(netframes $interface TX packets)
|
slaxemulator@12
|
313 rxerr=$(netframes $interface RX errors)
|
slaxemulator@12
|
314 txerr=$(netframes $interface TX errors)
|
slaxemulator@12
|
315 rxdrop=$(netframes $interface RX dropped)
|
slaxemulator@12
|
316 txdrop=$(netframes $interface TX dropped)
|
slaxemulator@12
|
317 rxov=$(netframes $interface RX overruns)
|
slaxemulator@12
|
318 txov=$(netframes $interface TX overruns)
|
slaxemulator@12
|
319 frame=$(netframes $interface RX frame)
|
slaxemulator@12
|
320 carrier=$(netframes $interface TX carrier)
|
slaxemulator@12
|
321 rrdtool update "$rrdlog/packets-$interface.rrd" \
|
slaxemulator@12
|
322 -t in:out:inerr:outerr:indrop:outdrop:inov:outov:frame:carrier \
|
slaxemulator@12
|
323 N:${rx:-U}:${tx:-U}:${rxerr:-U}:${txerr:-U}:${rxdrop:-U}:${txdrop:-U}:${rxov:-U}:${txov:-U}:${frame:-U}:${carrier:-U}
|
pascal@372
|
324 rsync=$(netproto tcp 873)
|
pascal@372
|
325 www=$(netproto tcp 80)
|
pascal@372
|
326 ssh=$(netproto tcp 22)
|
pascal@372
|
327 tcp=$(netproto tcp)
|
pascal@372
|
328 udp=$(netproto udp)
|
pascal@372
|
329 rrdtool update "$rrdlog/proto-$interface.rrd" \
|
pascal@372
|
330 -t tcp:udp:rsync:www:ssh \
|
pascal@372
|
331 N:${tcp:-U}:${udp:-U}:${rsync:-U}:${www:-U}:${ssh:-U}
|
slaxemulator@12
|
332 }
|
slaxemulator@12
|
333
|
slaxemulator@12
|
334 getdisk()
|
slaxemulator@12
|
335 {
|
slaxemulator@12
|
336 local d
|
slaxemulator@12
|
337 local i
|
slaxemulator@12
|
338 d=$(stat -c %04D $1)
|
slaxemulator@12
|
339 for i in /dev/* ; do
|
pascal@698
|
340 [ $(stat -c "%02t%02T" $i) = $d ] || continue
|
slaxemulator@12
|
341 echo $i
|
pascal@286
|
342 return
|
slaxemulator@12
|
343 done
|
pascal@286
|
344 df $1 | sed '$!d;s/ .*$//'
|
slaxemulator@12
|
345 }
|
slaxemulator@12
|
346
|
slaxemulator@12
|
347 ###
|
slaxemulator@12
|
348 ### System graphs
|
slaxemulator@12
|
349 ###
|
slaxemulator@12
|
350
|
slaxemulator@12
|
351 updatecpudata
|
slaxemulator@12
|
352 updatecpugraph day
|
slaxemulator@12
|
353 updatecpugraph week
|
slaxemulator@12
|
354 updatecpugraph month
|
slaxemulator@12
|
355 updatecpugraph year
|
slaxemulator@12
|
356
|
slaxemulator@12
|
357 updatememdata
|
slaxemulator@12
|
358 updatememgraph day
|
slaxemulator@12
|
359 updatememgraph week
|
slaxemulator@12
|
360 updatememgraph month
|
slaxemulator@12
|
361 updatememgraph year
|
slaxemulator@12
|
362
|
slaxemulator@12
|
363 if [ -e /proc/diskstats ]; then
|
slaxemulator@12
|
364 disk=$(getdisk $0)
|
slaxemulator@12
|
365 updatediskdata $disk
|
slaxemulator@12
|
366 updatediskgraph day ${disk:0:8}
|
slaxemulator@12
|
367 updatediskgraph week ${disk:0:8}
|
slaxemulator@12
|
368 updatediskgraph month ${disk:0:8}
|
slaxemulator@12
|
369 updatediskgraph year ${disk:0:8}
|
slaxemulator@12
|
370 fi
|
slaxemulator@12
|
371
|
slaxemulator@12
|
372 iface=$(/sbin/route -n | awk '{ if (/^0.0.0.0/) print $8 }')
|
slaxemulator@12
|
373 updateifdata $iface
|
slaxemulator@12
|
374 updateifgraph $iface day
|
slaxemulator@12
|
375 updateifgraph $iface week
|
slaxemulator@12
|
376 updateifgraph $iface month
|
slaxemulator@12
|
377 updateifgraph $iface year
|
pascal@367
|
378
|
pascal@367
|
379 [ ! -s $rrdgraph/boot.html -o /var/log/boot.log -nt $rrdgraph/boot.html ] &&
|
pascal@367
|
380 cat > $rrdgraph/boot.html <<EOT
|
pascal@367
|
381 <html>
|
pascal@367
|
382 <body>
|
pascal@367
|
383 $(stat -c %y /var/log/dmesg.log | sed 's/\.0*//')
|
pascal@367
|
384 <span style="color: blue"><i>$(cat /proc/cmdline)</i></span>
|
pascal@367
|
385 <pre>
|
pascal@367
|
386 $(cat /var/log/dmesg.log /var/log/boot.log | \
|
pascal@367
|
387 sed -e 's/</\</g;s/>/\>/g' -e 's/.*\]R//' -e 's/.*\[?8h//' \
|
pascal@367
|
388 -e 's|.\[1m|<b>|' -e 's|.\[0m|</b>|' -e 's|.\[[0-9][0-9Gm;]*||g' \
|
pascal@367
|
389 -e ':a;s/^\(.\{1,68\}\)\(\[ [A-Za-z]* \]\)/\1 \2/;ta' \
|
pascal@367
|
390 -e 's#\[ OK \]#[ <span style="color: green">OK</span> ]#' \
|
pascal@367
|
391 -e 's#\[ Failed \]#[ <span style="color: red">Failed</span> ]#' \
|
pascal@367
|
392 -e 's|No such .*|<span style="color: red">&</span>|' \
|
pascal@367
|
393 -e 's|ERROR .*|<span style="color: red">&</span>|' \
|
pascal@367
|
394 -e 's|command line: \(.*\)|command line: <span style="color: blue">\1</span>|' \
|
pascal@367
|
395 )
|
pascal@367
|
396 </pre>
|
pascal@367
|
397 </body>
|
pascal@367
|
398 </html>
|
pascal@367
|
399 EOT
|