
#!/bin/bash
# File	: upload_system_data_to_graphite.sh
# By	: MaartenDeBoer.nl, 2016-04-16, 2016-10-07
# Subject	: Script to upload system data (cpuload) to Graphite
#		Copied from upload_domotica-data
#	: Added; TODAY
#set -x
PGM="`basename $0|cut -d\. -f1`"
VER="0.1"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
RESULT=""
UPLOADED="${HOME}/data/${PGM}.uploaded"
FILENAME=""
DATADIR="${HOME}/data"
HOSTNAME="`hostname|cut -d\. -f1`"
TODAY="`date +%Y-%m-%d`"
RECURSIVE=""

GRAPHITEHOST="nestorix.fritz.box 2003"
GROUPNAME="nl"
FILEPREFIX="system-${GROUPNAME}-${HOSTNAME}-cpuload_"

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options             : "
  echo "     -h             : This help"
  echo "     -v             : Verbose"
  echo "     -V             : Version"
  echo "     --datadir      : other DATADIR (${DATADIR})"
  echo "     --graphitehost : Graphitehostname & port {${GRAPHITEHOST})"
  echo "     --recursive    : Keep on repeating (recursive)"
}

while [ ${#} -gt 0 ]
do
  case "${1}" in
    '-h')  USAGE; exit 1 ;;
    '-x')  set -x ;;
    '-V')  echo "Version=${VER}"; exit 1 ;;
    '--datadir')  DATADIR=${2}; shift ;;
    '--recursive')  RECURSIVE=1; shift ;;
    '--graphitehost') GRAPHITEHOST=${2}; shift ;;
    *) echo "Option ${1} not found." ; USAGE; exit 1 ;;
  esac 
  shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "DATADIR=${DATADIR}"
echo "DAYFILE=${DAYFILE}"
echo "FILENAME=${FILENAME}"
echo "HOSTNAME=${HOSTNAME}"
echo "GRAPHITEHOST=${GRAPHITEHOST}"
echo "PGM=${PGM}"
echo "RECURSIVE=${RECURSIVE}"
echo "TODAY=${TODAY}"
echo "VER=${VER}"

touch ${UPLOADED}

  FILENAME="`ls -1r ${DATADIR}/${FILEPREFIX}*.csv|grep -v ${TODAY}|egrep -vf ${UPLOADED}|head -1`"
  echo "  FILENAME=${FILENAME}."|tee -a ${LOG}
  if [ "${FILENAME}" == "" ]; then
    echo "Empty FILENAME. Exiting ...  "|tee -a ${LOG}
    exit 1
  fi

  cat ${FILENAME}|grep -v ^#|while read LINE
  do
    echo ${LINE}
# FILENAME=system-nl-idefix-cpuload_2016-04-13.csv
# 2016-04-13 00:05:01;44.4;
    YR="`basename ${FILENAME}|cut -d\_ -f2|cut -d\. -f1|cut -d\- -f1`"
    MON="`basename ${FILENAME}|cut -d\_ -f2|cut -d\. -f1|cut -d\- -f2`"
    DAY="`basename ${FILENAME}|cut -d\_ -f2|cut -d\. -f1|cut -d\- -f3`"
    HR="`echo ${LINE}|cut -d\; -f1|cut -d' ' -f2|cut -d\: -f1`"
    MIN="`echo ${LINE}|cut -d\; -f1|cut -d' ' -f2|cut -d\: -f2`"
    SEC="`echo ${LINE}|cut -d\; -f1|cut -d' ' -f2|cut -d\: -f3`"
    EPOCH=`date +%s -d"${YR}-${MON}-${DAY} ${HR}:${MIN}:${SEC}"`
# 1m
    VAL="`echo ${LINE}|awk -F\; '{print $2}'`"
    echo -n "  ${YR}${MON}${DAY} ${HR}:${MIN}:${SEC} (${EPOCH}) ${VAL} "
    echo "system.${GROUPNAME}.${HOSTNAME}.cpuload.1m ${VAL} ${EPOCH}"|nc ${GRAPHITEHOST}
    EC="${?}"
    echo -n "EC=${EC} "
# 5m
    VAL="`echo ${LINE}|awk -F\; '{print $3}'`"
    echo -n " ${VAL}"
    echo "system.${GROUPNAME}.${HOSTNAME}.cpuload.5m ${VAL} ${EPOCH}"|nc ${GRAPHITEHOST}
    EC="${?}"
    echo -n "EC=${EC} "
# 15m
    VAL="`echo ${LINE}|awk -F\; '{print $4}'`"
    echo -n " ${VAL} "
    echo "system.${GROUPNAME}.${HOSTNAME}.cpuload.15m ${VAL} ${EPOCH}"|nc ${GRAPHITEHOST}
    EC="${?}"
    echo "EC=${EC}"


  done  # cat
  basename ${FILENAME}|tee -a ${UPLOADED}

echo "`date` ${PGM} finished."|tee -a ${LOG}

if [ ${RECURSIVE} ]; then
  ${0}
fi

exit 0

