slitaz-forge annotate tank/web/lib/makegraphs @ rev 713

makegraphs: tune cpuinfo
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Jan 15 08:07:41 2021 +0000 (2021-01-15)
parents 061a079077a3
children
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/</\&lt;/g;s/>/\&gt;/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