#!/bin/bash

basedir=/var/www/html/load
rrdfile=$basedir/load.rrd
mkdir -p $basedir


if [ ! -f $rrdfile ]
then
  rrdtool create $rrdfile \
  DS:5min:GAUGE:600:U:U   \
  DS:15min:GAUGE:600:U:U  \
  RRA:AVERAGE:0.5:1:576   \
  RRA:AVERAGE:0.5:6:672   \
  RRA:AVERAGE:0.5:24:744  \
  RRA:AVERAGE:0.5:288:732 \
  RRA:MAX:0.5:1:576       \
  RRA:MAX:0.5:6:672       \
  RRA:MAX:0.5:24:744      \
  RRA:MAX:0.5:288:732

fi

echo $(uptime | sed -e 's/^.*load average.*: //' -e 's/ //g' | awk -F, "{ printf(\"update $rrdfile N:%f:%f\", \$2, \$3)}") | rrdtool -


hostname=`uname -n`
date=`date '+%Y-%m-%d %H.%M.%S %Z'`

rrdtool graph $basedir/load1.png \
  --start now-1day \
  --vertical-label "Load averages" \
  --units-exponent 0 \
  --title "Daily load of $hostname" \
  --alt-autoscale-max \
  --lower-limit 0 \
  DEF:5minavg=$rrdfile:5min:AVERAGE \
  AREA:5minavg#0000dd:"5-min load avgs" \
  GPRINT:5minavg:AVERAGE:"Avg\:%3.2lf" \
  GPRINT:5minavg:MAX:"Max\:%3.2lf\n" \
  COMMENT:"$date \r"


rrdtool graph $basedir/load7.png \
  --start now-7day \
  --vertical-label "Load averages" \
  --units-exponent 0 \
  --title "Weekly load of $hostname" \
  --alt-autoscale-max \
  --lower-limit 0 \
  DEF:5minavg=$rrdfile:5min:AVERAGE \
  AREA:5minavg#0000dd:"5-min load avgs" \
  GPRINT:5minavg:AVERAGE:"Avg\:%3.2lf" \
  GPRINT:5minavg:MAX:"Max\:%3.2lf\n" \
  COMMENT:"$date \r"

rrdtool graph $basedir/load30.png \
  --start now-30day \
  --vertical-label "Load averages" \
  --units-exponent 0 \
  --title "Monthly load of $hostname" \
  --alt-autoscale-max \
  --lower-limit 0 \
  DEF:5minavg=$rrdfile:5min:AVERAGE \
  AREA:5minavg#0000dd:"5-min load avgs" \
  GPRINT:5minavg:AVERAGE:"Avg\:%3.2lf" \
  GPRINT:5minavg:MAX:"Max\:%3.2lf\n" \
  COMMENT:"$date \r"

rrdtool graph $basedir/load360.png \
  --start now-360day \
  --vertical-label "Load averages" \
  --units-exponent 0 \
  --title "yearly load of $hostname" \
  --alt-autoscale-max \
  --lower-limit 0 \
  DEF:5minavg=$rrdfile:5min:AVERAGE \
  AREA:5minavg#0000dd:"5-min load avgs" \
  GPRINT:5minavg:AVERAGE:"Avg\:%3.2lf" \
  GPRINT:5minavg:MAX:"Max\:%3.2lf\n" \
  COMMENT:"$date \r"


cat > $basedir/index.html <<EOF
<html>
<body>
<img src="load1.png" />
<img src="load7.png" />
<img src="load30.png" />
<img src="load360.png" />
</body>
</html>
EOF
