root@wl ~ # rrdtool create load.rrd \ --step 60 \ DS:1min:GAUGE:600:0:U \ DS:5min:GAUGE:600:0:U \ DS:15min:GAUGE:600:0:U \ RRA:LAST:0.5:1:1440 \ RRA:MAX:0.5:60:2400
root@wl ~ # rrdtool update load.rrd N:1.0:0.8:0.5
root@wl ~ # rrdtool info load.rrd filename = "load.rrd" rrd_version = "0003" step = 60 last_update = 1279679701 ds[1min].type = "GAUGE" ds[1min].minimal_heartbeat = 600 ds[1min].min = 0.0000000000e+00 ds[1min].max = NaN ds[1min].last_ds = "0.070000" ds[1min].value = 1.1743837000e-01 ds[1min].unknown_sec = 0 ... rra[1].cf = "MAX" rra[1].rows = 2400 rra[1].cur_row = 1001 rra[1].pdp_per_row = 60 rra[1].xff = 5.0000000000e-01 rra[1].cdp_prep[0].value = 2.0762267700e-01 rra[1].cdp_prep[0].unknown_datapoints = 0 rra[1].cdp_prep[1].value = 1.2000000000e-01 rra[1].cdp_prep[1].unknown_datapoints = 0 rra[1].cdp_prep[2].value = 1.0000000000e-01 rra[1].cdp_prep[2].unknown_datapoints = 0 root@wl ~ #
root@wl ~ # rrdtool fetch load.rrd LAST ... 1267434480: 1.1095090793e+00 1.0797545397e+00 8.9975453967e-01 1267434540: 1.0607886517e+00 1.0701577303e+00 9.0984226967e-01 1267434600: 1.0797463910e+00 1.0798731955e+00 9.2974639100e-01 1267434660: 1.0408642967e+00 1.0702160742e+00 9.3000000000e-01 1267434720: -NaN -NaN -NaN root@wl ~ #
root@wl ~ # rrdtool graph load-day.png \ DEF:5mind=load.rrd:5min:LAST \ DEF:15mind=load.rrd:15min:LAST \ LINE:5mind#C0FFC0:5MIN \ AREA:15mind#C0C0C0:15MIN
windy@wl ~/rrdtool $ crontab -l * * * * * /PATH/TO/rrd.sh windy@wl ~/rrdtool $ cat rrd.sh #!/bin/bash cd ~/rrdtool ./rrdtool_net.sh ./rrdtool_load.sh windy@wl ~/rrdtool $ ls -l -rwxr-xr-x 1 windy staff 222 7월 21일 14:16 rrd.sh* -rwxr-xr-x 1 windy staff 1018 7월 21일 13:54 rrdtool_load.sh* -rwxr-xr-x 1 windy staff 1950 7월 21일 14:14 rrdtool_net.sh* windy@wl ~/rrdtool $ ./rrd.sh windy@wl ~/rrdtool $ ls -l -rwxr-xr-x 1 windy staff 222 7월 21일 14:16 rrd.sh* -rw-r--r-- 1 windy staff 21458 7월 21일 14:25 rrdtool_load.png -rw-r--r-- 1 windy staff 93680 7월 21일 14:25 rrdtool_load.rrd -rwxr-xr-x 1 windy staff 1018 7월 21일 13:54 rrdtool_load.sh* -rwxr-xr-x 1 windy staff 1950 7월 21일 14:14 rrdtool_net.sh* -rw-r--r-- 1 windy staff 48760 7월 21일 14:25 rrdtool_net_e1000g0.rrd -rw-r--r-- 1 windy staff 22816 7월 21일 14:25 rrdtool_net_e1000g0_bit.png -rw-r--r-- 1 windy staff 23347 7월 21일 14:25 rrdtool_net_e1000g0_pks.png
rrdtool_load.sh | 다운로드 |
#!/bin/bash
# Monitoring load average for solaris
# WindyHana's Solanara: RRDtool
# http://www.solanara.net/solanara/rrdtool
. /etc/profile
PATH=/usr/bin:/usr/local/rrdtool/bin
cd ~/rrdtool
LANG=C
# /tmp/rrdtool_load file format
# 1min load average:5min load average, 15min load average
# ex) 1.00:0.50:0.10
#
uptime | sed -e 's/^.*load average.*: //' -e 's/ //g' | awk -F, "{ printf(\"%f:%f:%f\", \$1, \$2, \$3)}" > /tmp/rrdtool
DATA=`cat /tmp/rrdtool`
FN="rrdtool_load.rrd"
if [ ! -f $FN ]; then
rrdtool create $FN \
--step 60 \
"DS:1min:GAUGE:600:0:U" \
"DS:5min:GAUGE:600:0:U" \
"DS:15min:GAUGE:600:0:U" \
"RRA:LAST:0.5:1:1440" \
"RRA:MAX:0.5:60:2400"
fi
rrdtool update $FN N:$DATA
rrdtool graph rrdtool_load.png \
--start -1d \
--vertical-label "Load average" \
--title "Load averages" \
--width 500 \
--height 100 \
--alt-autoscale-max \
--units-exponent 0 \
"DEF:1mind=$FN:1min:LAST" \
"DEF:5mind=$FN:5min:LAST" \
"DEF:15mind=$FN:15min:LAST" \
"DEF:15minx=$FN:15min:MAX" \
"GPRINT:1mind:LAST:%.2lf" \
"GPRINT:5mind:LAST:%.2lf" \
"GPRINT:15mind:LAST:%.2lf" \
"AREA:15mind#E0E0E0:15MIN" \
"LINE:5mind#8080FF:5MIN" \
"LINE:1mind#FF8080:1MIN" \
"HRULE:8#FF0000:WARNING" \
> /dev/null
rrdtool_net.sh | 다운로드 |
#!/bin/bash
# Monitoring network traffic/packets for solaris
# WindyHana's Solanara: RRDtool
# http://www.solanara.net/solanara/rrdtool
. /etc/profile
PATH=/usr/bin:/usr/local/rrdtool/bin
cd ~/rrdtool
LANG=C
# /tmp/rrdtool_net file format
# InterfaceName InputPackets OutputPackets InputBytes OutputBytes InterfaceSpeed per each line.
# -> e1000g0 ipackets obytes opackets rbytes ifspeed
# Do not use 64bit integer for compatibility issue.
kstat -c net -p ':::[or]bytes' -p ':::[io]packets' -p ':::ifspeed' \
| sed '/lo/d' \
| awk 'BEGIN{FS=":"} {print $3,$4}' \
| awk '{print $1,$2,$3}' \
| sort -k 1,2 \
| sed -n -e 'N;N;N;N;s/\n/ /g;p' \
| awk '{print $1,$6,$12,$15,$12,$3}' \
> /tmp/rrdtool_net
cat /tmp/rrdtool_net | while read LINE
do
IFNAME=`echo $LINE | awk '{print $1}'`
DATA=`echo $LINE | awk '{print $2,$3,$4,$5}' | sed -e 's/ /:/g'`
IFSPEED=`echo $LINE | awk '{print $6}'`
FN="rrdtool_net_$IFNAME.rrd"
if [ "$IFSPEED" == "100000000" ]; then
IFSPEEDMSG="100Mbps"
elif [ "$IFSPEED" == "1000000000" ]; then
IFSPEEDMSG="1Gbps"
else
IFSPEEDMSG="?"
fi
if [ ! -f $FN ]; then
rrdtool create $FN \
--step 60 \
"DS:packets_in:COUNTER:600:0:U" \
"DS:packets_out:COUNTER:600:0:U" \
"DS:bytes_in:COUNTER:600:0:U" \
"DS:bytes_out:COUNTER:600:0:U" \
"RRA:LAST:0.5:1:1440" \
"RRA:MAX:0.5:60:24"
fi
rrdtool update $FN N:$DATA
rrdtool graph rrdtool_net_${IFNAME}_pks.png \
--start -1d \
--vertical-label "Packets/s" \
--title "Network Traffics ${IFNAME} ($IFSPEEDMSG)" \
--width 500 \
--height 100 \
--alt-autoscale-max \
"DEF:pi=$FN:packets_in:LAST" \
"DEF:po=$FN:packets_out:LAST" \
"DEF:bi=$FN:bytes_in:LAST" \
"DEF:bo=$FN:bytes_out:LAST" \
"CDEF:gpi=bi,60,/" \
"CDEF:gpo=bo,60,/" \
"CDEF:gbi=bi,8,*,60,/" \
"CDEF:gbo=bo,8,*,60,/" \
"AREA:gpi#8080FF:Input Packets/s" \
"LINE:gpo#FF8080:Output Packets/s" \
> /dev/null
rrdtool graph rrdtool_net_${IFNAME}_bit.png \
--start -1d \
--vertical-label "bits/s" \
--title "Network Traffics ${IFNAME} ($IFSPEEDMSG)" \
--width 500 \
--height 100 \
--alt-autoscale-max \
"DEF:pi=$FN:packets_in:LAST" \
"DEF:po=$FN:packets_out:LAST" \
"DEF:bi=$FN:bytes_in:LAST" \
"DEF:bo=$FN:bytes_out:LAST" \
"CDEF:gpi=bi,60,/" \
"CDEF:gpo=bo,60,/" \
"CDEF:gbi=bi,8,*,60,/" \
"CDEF:gbo=bo,8,*,60,/" \
"AREA:gbi#FF8080:Input bits/s" \
"LINE:gbo#00A000:Output bit/s" \
> /dev/null
done

|
|
Copyright © 2004-2010 Jo HoSeok. All rights reserved. |