#!/bin/bash # HOSTNAME=vulcano.absence.it BASEDIR=/home/system/collectd/$HOSTNAME RRDDIR=$BASEDIR/uptime PLOTSDIR=/home/system/plots FONT=Monaco FONTCONF="--font LEGEND:8:$FONT --font TITLE:9:$FONT --font AXIS:7:$FONT --font UNIT:8:$FONT " #FONTCONF="--font LEGEND:9: --font TITLE:10: --font AXIS:8: --font UNIT:9: " #FONTCONF="--font LEGEND:10: --font TITLE:11: --font AXIS:9: --font UNIT:10: " DEFCOLORS="-c BACK#333333 -c CANVAS#000000 -c FONT#FFFFFF -c ARROW#999999 -c SHADEA#502A30 -c SHADEB#431818" #" -c FRAME# -c AXIS# -c GRID# -c MGRID# -c SHADEA# -c SHADEB# DEFOPTS="-L 3 -i -E -w 820 -h 180 -a PNG $DEFCOLORS $FONTCONF" START=-3months END=now STEP=60 # date +"%d %b %Y" #export RRD_DEFAULT_FONT=/usr/share/rrdtool/fonts/MONACO.TTF #export RRD_DEFAULT_FONT=/usr/share/rrdtool/fonts/Elronmonospace.ttf #export RRD_DEFAULT_FONT=/usr/share/rrdtool/fonts/monof55.ttf ############ ## COLORI ## #--- ROSSO=DA1F3D ROSA=F9B49B ROSA2=FC8999 #--- ARANCIONE=F17742 GIALLO=FCE053 #--- VERDE=238D5B VERDINO=7FB439 VERDINO2=7FB439 #--- BLU=4464AB AZZURRO=6CABE7 CELESTE=0094B3 #--- VIOLA=805296 VIOLA2=C5168D LILLA=E553BC LILLA2=CC78B4 #--- ################### GRAYA=66666640 ################### # AREA:maximum_uptimes#${GIALLO}60:"maximum uptimes" ## System Uptime Stats ## rrdtool graph $PLOTSDIR/uptime-last.png \ --start $START --end $END --step $STEP $DEFOPTS \ -X 0 -u 10 -l 0 -v "Days" -t "System Uptime" \ -W "created `date` at `hostname -f`" \ DEF:uptime_sec_avg=$RRDDIR/uptime.rrd:seconds:AVERAGE \ DEF:uptime_sec_max=$RRDDIR/uptime.rrd:seconds:MAX \ CDEF:uptime_no_unkn=uptime_sec_max,UN,0,uptime_sec_max,IF \ CDEF:uptime_peaks=uptime_no_unkn,PREV\(uptime_no_unkn\),LT,PREV\(uptime_no_unkn\),UNKN,IF \ VDEF:minimum_uptime_secs=uptime_peaks,MINIMUM \ CDEF:minimum_uptime_graph=uptime_sec_max,minimum_uptime_secs,EQ,uptime_sec_max,86400,\/,0,IF \ CDEF:minimum_uptime_days=uptime_sec_max,minimum_uptime_secs,EQ,uptime_sec_max,86400,\/,FLOOR,0,IF \ CDEF:minimum_uptime_hours=uptime_sec_max,minimum_uptime_secs,EQ,uptime_sec_max,86400,\%,3600,\/,FLOOR,0,IF \ CDEF:minimum_uptime_mins=uptime_sec_max,minimum_uptime_secs,EQ,uptime_sec_max,86400,\%,3600,\%,60,\/,FLOOR,0,IF \ VDEF:min_uptime_graph=minimum_uptime_graph,MAXIMUM \ VDEF:min_uptime_days=minimum_uptime_days,MAXIMUM \ VDEF:min_uptime_hours=minimum_uptime_hours,MAXIMUM \ VDEF:min_uptime_mins=minimum_uptime_mins,MAXIMUM \ VDEF:maximum_uptime_secs=uptime_sec_max,MAXIMUM \ CDEF:maximum_uptime_graph=uptime_sec_max,maximum_uptime_secs,EQ,uptime_sec_max,86400,\/,0,IF \ CDEF:maximum_uptime_days=uptime_sec_max,maximum_uptime_secs,EQ,uptime_sec_max,86400,\/,FLOOR,0,IF \ CDEF:maximum_uptime_hours=uptime_sec_max,maximum_uptime_secs,EQ,uptime_sec_max,86400,\%,3600,\/,FLOOR,0,IF \ CDEF:maximum_uptime_mins=uptime_sec_max,maximum_uptime_secs,EQ,uptime_sec_max,86400,\%,3600,\%,60,\/,FLOOR,0,IF \ VDEF:max_uptime_graph=maximum_uptime_graph,MAXIMUM \ VDEF:max_uptime_days=maximum_uptime_days,MAXIMUM \ VDEF:max_uptime_hours=maximum_uptime_hours,MAXIMUM \ VDEF:max_uptime_mins=maximum_uptime_mins,MAXIMUM \ VDEF:average_uptime_secs=uptime_sec_max,AVERAGE \ CDEF:average_uptime_graph=uptime_sec_max,POP,average_uptime_secs,86400,\/ \ CDEF:average_uptime_days=uptime_sec_max,POP,average_uptime_secs,86400,\/,FLOOR \ CDEF:average_uptime_hours=uptime_sec_max,POP,average_uptime_secs,86400,\%,3600,\/,FLOOR \ CDEF:average_uptime_mins=uptime_sec_max,POP,average_uptime_secs,86400,\%,3600,\%,60,\/,FLOOR \ VDEF:avg_uptime_days=average_uptime_days,LAST \ VDEF:avg_uptime_hours=average_uptime_hours,LAST \ VDEF:avg_uptime_mins=average_uptime_mins,LAST \ CDEF:current_uptime_graph=uptime_sec_max,86400,\/ \ CDEF:current_uptime_days=uptime_sec_max,86400,\/,FLOOR \ CDEF:current_uptime_hours=uptime_sec_max,86400,\%,3600,\/,FLOOR \ CDEF:current_uptime_mins=uptime_sec_max,86400,\%,3600,\%,60,\/,FLOOR \ VDEF:curr_uptime_days=current_uptime_days,LAST \ VDEF:curr_uptime_hours=current_uptime_hours,LAST \ VDEF:curr_uptime_mins=current_uptime_mins,LAST \ CDEF:time=uptime_sec_max,POP,TIME \ VDEF:start=time,FIRST \ VDEF:last=time,LAST \ CDEF:time_window=uptime_sec_max,UN,0,uptime_sec_max,IF,POP,TIME \ CDEF:time_window2=PREV\(time_window\) \ VDEF:window_start=time_window,FIRST \ VDEF:window_last=time_window,LAST \ CDEF:delta=uptime_sec_max,POP,window_last,window_start,\- \ CDEF:system_on_un=uptime_sec_avg,UN,UNKN,1,IF \ CDEF:system_on=PREV\(system_on_un\),1,EQ,system_on_un,POP,TIME,window_last,EQ,\*,1,system_on_un,IF \ VDEF:new_average_on=system_on,AVERAGE \ VDEF:total_uptime_secs=system_on_un,TOTAL \ CDEF:total_uptime_days=uptime_sec_max,POP,total_uptime_secs,86400,\/,FLOOR \ CDEF:total_uptime_hours=uptime_sec_max,POP,total_uptime_secs,86400,\%,3600,\/,FLOOR \ CDEF:total_uptime_mins=uptime_sec_max,POP,total_uptime_secs,86400,\%,3600,\%,60,\/,FLOOR \ VDEF:tot_uptime_days=total_uptime_days,LAST \ VDEF:tot_uptime_hours=total_uptime_hours,LAST \ VDEF:tot_uptime_mins=total_uptime_mins,LAST \ CDEF:temp_perc_on=uptime_sec_max,POP,total_uptime_secs,delta,/,100,\* \ VDEF:new_perc_on=temp_perc_on,LAST \ COMMENT:"\s" \ COMMENT:" " \ AREA:current_uptime_graph#$GRAYA \ LINE1:current_uptime_graph#$ARANCIONE:"Current\:" \ GPRINT:curr_uptime_days:"%5.0lf days" \ GPRINT:curr_uptime_hours:"%3.0lf hours" \ GPRINT:curr_uptime_mins:"%3.0lf mins \tdate\:" \ GPRINT:curr_uptime_mins:"%x":strftime \ COMMENT:"\n" \ COMMENT:" " \ LINE1:max_uptime_graph#$ROSSO:"Maximum\:":dashes \ GPRINT:max_uptime_days:"%5.0lf days" \ GPRINT:max_uptime_hours:"%3.0lf hours" \ GPRINT:max_uptime_mins:"%3.0lf mins \tdate\:" \ GPRINT:max_uptime_mins:"%x":strftime \ COMMENT:"\n" \ COMMENT:" " \ HRULE:min_uptime_graph#$GIALLO:"Minimum\:":dashes \ GPRINT:min_uptime_days:"%5.0lf days" \ GPRINT:min_uptime_hours:"%3.0lf hours" \ GPRINT:min_uptime_mins:"%3.0lf mins \tdate\:" \ GPRINT:min_uptime_mins:"%x":strftime \ COMMENT:"\n" \ COMMENT:" " \ LINE1:average_uptime_graph#$AZZURRO:"Average\:":dashes \ GPRINT:avg_uptime_days:"%5.0lf days" \ GPRINT:avg_uptime_hours:"%3.0lf hours" \ GPRINT:avg_uptime_mins:"%3.0lf mins" \ COMMENT:"\n" \ COMMENT:" Total run\:" \ GPRINT:tot_uptime_days:"%5.0lf days" \ GPRINT:tot_uptime_hours:"%3.0lf hours" \ GPRINT:tot_uptime_mins:"%3.0lf mins " \ GPRINT:new_perc_on:"%3.2lf%% up in this time window" \ COMMENT:"\n" \ PRINT:new_perc_on:"%lf %%" \ PRINT:total_uptime_secs:"%lf secs" \ PRINT:new_average_on:"%lf %%" \ COMMENT:"\s"