
#!/bin/sh
# File	: dfm-alarm2nagios.sh
# By	: Maarten.deBoer@AtosOrigin.com, 100928, 170227
# Subject	: To send DFM-alarm via `logger` into messages file, for Nagios monitoring
#(0.2)	: Added CI_EXCL (CI=DFM_HOST_NAME)
#(0.3)	: Added DFMNAME, DFMTYPE
#(0.4)	: Mod DFM_-var's
#(0.5)	: Added dfm-inform
#(0.6)	: Changed name (from dfm_alarm2logger.sh) to dfm_alert2logger.sh, change log-dest
#(0.7)	: Mod `hostname` -> DFM + grep -v ':ok'|tee -a ${LOG}
#(0.8)  : LOG -> ${PGM}, ALERTLOG added
#(0.9)	: Mod. Added 2Nagios-PassiveCheck
#(0.1)	: Changed name from dfm_alert2logger.sh to dfm_alert2nagios.sh
#(0.2)	: Changed name to dfm-alarm2nagios.sh
#(0.3)	: Added DFM_EVENT_ID & APPLUSER
#(0.4)
# DISABLED logger to switch off NAOMI
# 2017-01-23, MdB
#(0.5)	: Added -PLF (for cDOT-cluster)
#(0.6)	: Mail eventid
#(1.0)	: Made multi country (removed all Filer & Vfiler names)
#(1.1)	: Added exculding
#(1.2),170405	: Added (ONTAPARCH) [<arch>] ([7mode] | [cdot]) for IPcenter to the string MSGTEXTSTR
PGM="`basename $0|cut -d\. -f1`"
VER="1.2"
HOSTNAME="`hostname|cut -d\. -f1`"

APPLUSER="aodfm01a"
LOG="/home/${APPLUSER}/log/${PGM}.log"
ALERTLOG="/home/${APPLUSER}/log/dfm-alarm.log"
EXCLUDES="/home/${APPLUSER}/etc/${PGM}.excludes"
MAILTO="maarten.deboer@atos.net"

#ONTAPARCH="[cdot]"
ONTAPARCH="[7mode]"
MONIDHDR="MAS.NL.1"
SDMCLASS="ZZ-Event.Storage.Storage"
NAGIOSPASSIVEDIR="/appl/dfm/nagios/PassiveCheck/PRD"

if [ ! -f ${EXCLUDES} ]; then
  touch ${EXCLUDES}
fi

touch ${LOG}
chmod 666 ${LOG}
echo "* `/bin/date +'%Y-%m-%d %H:%M:%S'`" >> ${LOG}
echo "DFM_ALARM_ID: $DFM_ALARM_ID" >> ${LOG}
echo "DFM_EVENT_ID: $DFM_EVENT_ID" >> ${LOG}
echo "DFM_EVENT_NAME_CLI: $DFM_EVENT_NAME_CLI" >> ${LOG}
echo "DFM_EVENT_NAME_GUI: $DFM_EVENT_NAME_GUI" >> ${LOG}
echo "DFM_EVENT_SEVERITY: $DFM_EVENT_SEVERITY" >> ${LOG}
echo "DFM_EVENT_TIMESTAMP: $DFM_EVENT_TIMESTAMP" >> ${LOG}
echo "DFM_LINK_EVENT: $DFM_LINK_EVENT" >> ${LOG}
echo "DFM_SERIAL_NUMBER: $DFM_SERIAL_NUMBER" >> ${LOG}
echo "DFM_SOURCE_ID: $DFM_SOURCE_ID" >> ${LOG}
echo "DFM_SOURCE_NAME: $DFM_SOURCE_NAME" >> ${LOG}
echo "DFM_SOURCE_TYPE: $DFM_SOURCE_TYPE" >> ${LOG}
echo "DFM_HOST_ID: $DFM_HOST_ID" >> ${LOG}
echo "DFM_HOST_NAME: $DFM_HOST_NAME" >> ${LOG}
echo "DFM_HOST_TYPE: $DFM_HOST_TYPE" >> ${LOG}

# If no DFM_HOST_NAME, use DFM-server-name
if [ "${DFM_HOST_NAME}" = "" ]; then
  CI=${HOSTNAME}
else
  CI="`echo ${DFM_HOST_NAME}|cut -d\. -f1`"
fi
MSGTEXTSTR="CI=${CI} [${ONTAPARCH}] ${DFM_EVENT_NAME_GUI} ${DFM_SOURCE_NAME} DFM_EVENT_ID=${DFM_EVENT_ID}"

# To Nagios (UMF) PassiveCheck
# (DFM)Severity	Action
# -------       ------
# Emergency	USD + Pager/SMS => NaCl-PassiveCheck-prio 2
# Critical	USD + Pager/SMS => NaCl-PassiveCheck-prio 2
# Error		USD + Pager/SMS => NaCl-PassiveCheck-prio 2
# Warning	USD  => NaCl-PassiveCheck-prio 1
# Information	Information message in DFM
# Normal		Message out of DFM
#
DATI="`date +%Y-%m-%d-%H-%M-%S`"
NAGIOSFILE="${NAGIOSPASSIVEDIR}/${DATI}"
NAGIOSSEVNR="0"
case ${DFM_EVENT_SEVERITY} in
  Emergency)  NAGIOSSEVNR="2" ;;
  Critical)  NAGIOSSEVNR="2" ;;
  Error)  NAGIOSSEVNR="2" ;;
  Warning)  NAGIOSSEVNR="1" ;;
  Information)  NAGIOSSEVNR="0" ;;
  Normal)  NAGIOSSEVNR="0" ;;
esac

# Check for (Atrium-)MONID
# DFM_HOST_NAME: nlnafvnnl04
# DFM_HOST_TYPE: vFiler
# MONID=CI+-VST
# DFM_HOST_NAME: nlnaf80
# DFM_HOST_TYPE: Clustered Filer
# MONID=CI+-SOS
# DFM_HOST_NAME: nlnaf105.fsod.mssmgt.com
# DFM_HOST_TYPE: Cluster
# MONID=CI+-PLF
# DFM_HOST_NAME: nlnafsdsm34
# DFM_HOST_TYPE: vserver
# MONID=CI+-VST
# DFM_HOST_NAME: nlnaf100-02
# DFM_HOST_TYPE: Filer
# MONID=CI+-SOS

MONID="${MONIDHDR}.${CI}"
if [ "${DFM_HOST_TYPE}" = "Clustered Filer" ]; then
  MONID="${MONIDHDR}.${CI}-SOS"
fi
if [ "${DFM_HOST_TYPE}" = "vFiler" ]; then
  MONID="${MONIDHDR}.${CI}-VST"
fi
if [ "${DFM_HOST_TYPE}" = "Cluster" ]; then
  MONID="${MONIDHDR}.${CI}-PLF"
fi
if [ "${DFM_HOST_TYPE}" = "Filer" ]; then
  MONID="${MONIDHDR}.${CI}-SOS"
fi
if [ "${DFM_HOST_TYPE}" = "vserver" ]; then
  MONID="${MONIDHDR}.${CI}-VST"
fi

# Check for hostnames. If CI is hostname, then use CI (as MONID) without extension
ANSW="`echo ${CI}|grep ${HOSTNAME}`"
if [ "${ANSW}" != "" ]; then
  MONID="${MONIDHDR}.${CI}"
fi

# Nagios-PassiveCheck part
# Excluding:
# Check if excluded? (EC=0), for <DFM_SOURCE_NAME>:<DFM_EVENT_NAME_CLI>
grep "${DFM_SOURCE_NAME}:${DFM_EVENT_NAME_CLI}" ${EXCLUDES}
EC=${?}
if [ ${EC} -eq 0 ]; then
  echo "`date`: Excluded = ${DFM_SOURCE_NAME}:${DFM_EVENT_NAME_CLI} (${MSGTEXTSTR})" >> ${ALERTLOG}
  echo "`date`: Excluded = ${DFM_SOURCE_NAME}:${DFM_EVENT_NAME_CLI} (${MSGTEXTSTR})"|mailx -s "${PGM}: Excluded" ${MAILTO}
else
  echo "${NAGIOSSEVNR}|${CI}: ${MSGTEXTSTR} (${DATI}).|MONID=${MONID};CLASS=${SDMCLASS};"|tee -a ${NAGIOSFILE} ${LOG}
  ls -l ${NAGIOSFILE} >> ${LOG}
  echo "`date`: NaCl-PassiveCheck: ${NAGIOSSEVNR}|${CI}: ${MSGTEXTSTR} (${DATI}).|MONID=${MONID};CLASS=${SDMCLASS};" >> ${ALERTLOG}
fi

# Build in 1 sec sleep. Needed when alert-storm came. And messages to NaCl are send by 1 file /sec.
sleep 1

exit 0

