
#!/bin/sh
# File	: ./upl_dfm_cap_reports_to_graphite.sh
# By	: Maarten.deBoer@Atos.net, 160310
# Subject	: Upload DFM capacity reports to Graphite(-Grafana)
#(0.2)	:  Added vol
PGM="`basename $0|cut -d\. -f1`"
VER="0.1"
TMP="/tmp/${PGM}.$$"
HOSTNAME="`hostname|cut -d\. -f1`"
LOG="${HOME}/log/${PGM}.log"
GRAPHITESRV="10.192.109.224 2003"
GRAPHITE=""
NC="${HOME}/bin/nc"
GROUP="nl"

DFMRPT="/usr/bin/dfm report"

USAGE()
{
  echo "Usage: $PGM [options] "
  echo "  Version: ${VER}"
  echo "  options:"
  echo "    -g | --graphite : send to Graphite"
  echo "    -h              : this help"
  echo "    -V              : Version"
  echo "    -x              : set -x"
}

# Check options
while [ $# -gt 0 ]
  do
  case ${1} in
    -g | --graphite) GRAPHITE="1" ;;
    -h | --help) USAGE; exit 1 ;;
    -V) echo "${PGM}: v${VER}"; exit 3 ;;
    -x)  set -x ;;
    *)  echo "Option ${1} not known."; USAGE; exit 1 ;;
  esac
    shift
done

echo "`date` ${PGM} v${VER} started." | tee -a ${LOG}
touch ${TMP}

echo "GRAPHITE=${GRAPHITE}"

# Upload graphite header
HDR="filer.capacity.${GROUP}"

# aggregates-capacity
${DFMRPT} view -F csv aggregates-capacity|egrep -v 'Object|-----|Totals'|awk -F\, '{print $3,$2,$4,$5,$6}'|while read LINE
do
  NODE="`echo ${LINE}|awk '{print $1}'|cut -d\. -f1`"
  AGGR="`echo ${LINE}|awk '{print $2}'`"
  USED="`echo ${LINE}|awk '{print $3}'`"
  TOTAL="`echo ${LINE}|awk '{print $4}'`"
  PERC="`echo ${LINE}|awk '{print $5}'`"
  echo "${NODE} ${AGGR} ${USED} ${TOTAL} ${PERC}"
  if [ ${GRAPHITE} ]; then
    DATES="`date +%s`"
# upload data via NetAcc to Graphite-server
    echo "${HDR}.${NODE}.aggr.${AGGR}.used ${USED} ${DATES}"|${NC} ${GRAPHITESRV}
    echo "${HDR}.${NODE}.aggr.${AGGR}.total ${TOTAL} ${DATES}"|${NC} ${GRAPHITESRV}
    echo "${HDR}.${NODE}.aggr.${AGGR}.perc ${PERC} ${DATES}"|${NC} ${GRAPHITESRV}
  fi
done  # DFMRPT

# aggregates-committed
${DFMRPT} view -F csv aggregates-committed|egrep -v 'Object|-----|Totals'|awk -F\, '{print $3,$2,$5}'|while read LINE
do
  NODE="`echo ${LINE}|awk '{print $1}'|cut -d\. -f1`"
  AGGR="`echo ${LINE}|awk '{print $2}'`"
  COMMITED="`echo ${LINE}|awk '{print $3}'`"
  echo "${NODE} ${AGGR} ${COMMITED}"
  if [ ${GRAPHITE} ]; then
    DATES="`date +%s`"
    if [ "${COMMITED}" != "" ]; then
# upload data via NetAcc to Graphite-server
      echo "${HDR}.${NODE}.aggr.${AGGR}.committed ${COMMITED} ${DATES}"|${NC} ${GRAPHITESRV}
    fi
  fi
done  # DFMRPT


# volumes-capacity
# 14107,ec_omi36_vol016,aggr1002,nlnafvomi36.org.om.local,462540984,520093696,88.9
${DFMRPT} view -F csv  volumes-capacity|egrep -v 'Object|-----|Totals'|awk -F\, '{print $4,$2,$5,$6,$7}'|while read LINE
do
  NODE="`echo ${LINE}|awk '{print $1}'|cut -d\. -f1`"
  VOL="`echo ${LINE}|awk '{print $2}'`"
  USED="`echo ${LINE}|awk '{print $3}'`"
  TOTAL="`echo ${LINE}|awk '{print $4}'`"
  PERC="`echo ${LINE}|awk '{print $5}'`"
  echo "${NODE} ${VOL} ${USED} ${TOTAL} ${PERC} "
  if [ ${GRAPHITE} ]; then
    DATES="`date +%s`"
# upload data via NetAcc to Graphite-server
    echo "${HDR}.${NODE}.vol.${VOL}.used ${USED} ${DATES}"|${NC} ${GRAPHITESRV}
    echo "${HDR}.${NODE}.vol.${VOL}.total ${TOTAL} ${DATES}"|${NC} ${GRAPHITESRV}
    echo "${HDR}.${NODE}.vol.${VOL}.perc ${PERC} ${DATES}"|${NC} ${GRAPHITESRV}
  fi
done  # DFMRPT




rm ${TMP}
echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
exit 0

