This commit is contained in:
2023-08-13 20:06:38 -05:00
parent c3ca15f017
commit 544c1ad389
2 changed files with 221 additions and 135 deletions

View File

@@ -29,6 +29,11 @@ PW_LOGPOWER=${PW_LOGFOLDER}/log-power
[ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER} [ ! -f ${PW_LOGPOWER} ] && touch ${PW_LOGPOWER}
declare -A PW_POWERWALL_SERVICES
PW_POWERWALL_SERVICES['temp']='monitor-temp'
PW_POWERWALL_SERVICES['power']='monitor-power'
# PW_POWERWALL_SERVICES['powerlogger']='monitor-powerlogger'
declare -A PW_TEMP_THRESHOLDS declare -A PW_TEMP_THRESHOLDS
# PW_TEMP_THRESHOLDS['ServerRoomTH']="72,74,76" # PW_TEMP_THRESHOLDS['ServerRoomTH']="72,74,76"
PW_TEMP_THRESHOLDS['ServerRoomTH']="83,88,95" PW_TEMP_THRESHOLDS['ServerRoomTH']="83,88,95"
@@ -39,6 +44,11 @@ declare -A PW_SENSOR_TYPE
PW_SENSOR_TYPE['ServerRoomTH']='mqtt' PW_SENSOR_TYPE['ServerRoomTH']='mqtt'
PW_SENSOR_TYPE['RaspberryPI-CPU']='system' PW_SENSOR_TYPE['RaspberryPI-CPU']='system'
PW_SENSOR_TYPE['OctoPI-CPU']='remotesystem' PW_SENSOR_TYPE['OctoPI-CPU']='remotesystem'
PW_SENSOR_TYPE['esxi0']='esxi'
PW_SENSOR_TYPE['esxi1']='esxi'
PW_SENSOR_TYPE['esxi2']='esxi'
PW_SENSOR_TYPE['esxi7']='esxi'
PW_SENSOR_TYPE['esxi8']='esxi'
declare -A PW_REMOTE_SENSORS declare -A PW_REMOTE_SENSORS
PW_REMOTE_SENSORS['ServerRoomTH']='10.10.20.10' PW_REMOTE_SENSORS['ServerRoomTH']='10.10.20.10'
@@ -48,18 +58,25 @@ declare -A PW_SENSOR_ID
PW_SENSOR_ID['ServerRoomTH']='2' PW_SENSOR_ID['ServerRoomTH']='2'
PW_SENSOR_ID['RaspberryPI-CPU']='6' PW_SENSOR_ID['RaspberryPI-CPU']='6'
PW_SENSOR_ID['OctoPI-CPU']='7' PW_SENSOR_ID['OctoPI-CPU']='7'
# PW_SENSOR_ID['esxi0']='8'
# PW_SENSOR_ID['esxi1']='9'
# PW_SENSOR_ID['esxi2']='10'
# PW_SENSOR_ID['esxi7']='11'
# PW_SENSOR_ID['esxi8']='12'
declare -A PW_POWERWALL_SERVICES declare -A PW_ESXI_MON_HOSTS
PW_POWERWALL_SERVICES['temp']='monitor-temp' PW_ESXI_MON_HOSTS['esxi0']='10.10.2.10'
PW_POWERWALL_SERVICES['power']='monitor-power' PW_ESXI_MON_HOSTS['esxi1']='10.10.2.11'
# PW_POWERWALL_SERVICES['powerlogger']='monitor-powerlogger' PW_ESXI_MON_HOSTS['esxi2']='10.10.2.12'
PW_ESXI_MON_HOSTS['esxi7']='10.10.2.17'
PW_ESXI_MON_HOSTS['esxi8']='10.2.1.18'
declare -A PW_ESXI_HOST_NAMES declare -A PW_ESXI_HOST_NAMES
PW_ESXI_HOST_NAMES['10.10.2.10']='ids-vms-scsi.scity.us' PW_ESXI_HOST_NAMES['10.10.2.10']='iDS-vMS-scsi.scity.us'
PW_ESXI_HOST_NAMES['10.10.2.11']='ids-vms1.scity.us' PW_ESXI_HOST_NAMES['10.10.2.11']='iDS-vMS1.scity.us'
PW_ESXI_HOST_NAMES['10.10.2.12']='ids-vms2.scity.us' PW_ESXI_HOST_NAMES['10.10.2.12']='iDS-vMS2.scity.us'
PW_ESXI_HOST_NAMES['10.10.2.17']='ids-vms7.scity.us' PW_ESXI_HOST_NAMES['10.10.2.17']='iDS-vMS7.scity.us'
PW_ESXI_HOST_NAMES['10.2.1.18']='ids-vms-offsite.scity.us' PW_ESXI_HOST_NAMES['10.2.1.18']='iDS-vMS-Offsite.scity.us'
PW_VCENTERHOST=10.10.1.30 PW_VCENTERHOST=10.10.1.30
PW_MAINHOSTS=10.10.2.10,10.10.2.11,10.10.2.12 PW_MAINHOSTS=10.10.2.10,10.10.2.11,10.10.2.12
@@ -68,6 +85,8 @@ PW_OFFSITEHOSTS=10.2.1.18
PW_MAINSITE_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS}" PW_MAINSITE_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS}"
PW_ALL_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS},${PW_OFFSITEHOSTS}" PW_ALL_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS},${PW_OFFSITEHOSTS}"
PW_RACADM_ACCESS=10.10.0.241
IFS=, IFS=,
PW_MAINSITE_HOSTS=(${PW_MAINSITE_HOSTS}) PW_MAINSITE_HOSTS=(${PW_MAINSITE_HOSTS})
PW_MAINHOSTS=(${PW_MAINHOSTS}) PW_MAINHOSTS=(${PW_MAINHOSTS})

View File

@@ -45,6 +45,7 @@ CHECKTEMP(){
fi fi
[ "${action}" != "" ] && echo [ "${action}" != "" ] && echo
} }
CHECKTEMPSENSOR(){ CHECKTEMPSENSOR(){
echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 1 | read temp_warn echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 1 | read temp_warn
echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 2 | read temp_crit echo ${PW_TEMP_THRESHOLDS[${1}]} | cut -d',' -f 2 | read temp_crit
@@ -64,6 +65,35 @@ CHECKTEMPSENSOR(){
temp_c=${temp_c%\'*}; temp_c=${temp_c#*=} temp_c=${temp_c%\'*}; temp_c=${temp_c#*=}
fi fi
elif [ "${PW_SENSOR_TYPE[${1}]}" == "esxi" ]; then
for e in ${!PW_ESXI_MON_HOSTS[@]}; do
vHOSTIP=${PW_ESXI_MON_HOSTS[${e}]}
vHOSTNAME=${PW_ESXI_HOST_NAMES[${vHOSTIP}]}
if [ "$(CHECK_HOST ${vHOSTIP})" != "false" ]; then
vHOSTDATA=$(ssh root@${PW_RACADM_ACCESS} racadm -r ${vHOSTIP} -u ${PW_ESXI_USER} -p "'${PW_ESXI_PASS}'" getsensorinfo | grep " Temp" 2>&1)
IFS=$'\n' read -rd '' -a vHOSTDATA <<<"${vHOSTDATA}"; unset IFS
for sensordata in "${vHOSTDATA[@]}"; do
sensor=$(echo ${sensordata} | cut -d'T' -f1 | xargs)
temp_c=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); current=${current/ /}
temp_warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); warn=${warn/ /}
temp_crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); crit=${crit/ /}
done
else #host down
if [ ! -f ${PW_TMPFOLDER}/${e}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${e}.down)) -ge 1800 ]; then
SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1
echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp}
touch ${PW_TMPFOLDER}/${e}.down
fi
fi
done
fi fi
@@ -120,6 +150,7 @@ CHECKTEMP_SERVICE(){
errtime=$(expr `date +%s` - $(stat -c %Y ${logtemp})) errtime=$(expr `date +%s` - $(stat -c %Y ${logtemp}))
[ $errtime -ge 3600 ] && relog=1 || relog=0 [ $errtime -ge 3600 ] && relog=1 || relog=0
if [ "${PW_SENSOR_TYPE[${SENSOR}]}" != "esxi" ]
if [ "${PW_REMOTE_SENSORS[${SENSOR}]}" == "" ] || ([ "${PW_REMOTE_SENSORS[${SENSOR}]}" != "" ] && [ "$(CHECK_HOST ${PW_REMOTE_SENSORS[${SENSOR}]})" != "false" ]); then if [ "${PW_REMOTE_SENSORS[${SENSOR}]}" == "" ] || ([ "${PW_REMOTE_SENSORS[${SENSOR}]}" != "" ] && [ "$(CHECK_HOST ${PW_REMOTE_SENSORS[${SENSOR}]})" != "false" ]); then
if [ -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then if [ -f ${PW_TMPFOLDER}/${SENSOR}.down ]; then
SENDNOTICE "${SENSOR} Online" "${SENSOR} Sensor is back online" SENDNOTICE "${SENSOR} Online" "${SENSOR} Sensor is back online"
@@ -252,13 +283,47 @@ CHECKTEMP_SERVICE(){
fi fi
else else #sensor down
if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then if [ ! -f ${PW_TMPFOLDER}/${SENSOR}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${SENSOR}.down)) -ge 1800 ]; then
SENDNOTICE "${SENSOR} ERROR" "${SENSOR} Sensor is down" 1 SENDNOTICE "${SENSOR} ERROR" "${SENSOR} Sensor is down" 1
echo "($datetime) - ${SENSOR} - ${SENSOR} Sensor is down" >> ${logtemp} echo "($datetime) - ${SENSOR} - ${SENSOR} Sensor is down" >> ${logtemp}
touch ${PW_TMPFOLDER}/${SENSOR}.down touch ${PW_TMPFOLDER}/${SENSOR}.down
fi fi
fi
#############################
else #esxi hosts
for e in ${!PW_ESXI_MON_HOSTS[@]}; do
vHOSTIP=${PW_ESXI_MON_HOSTS[${e}]}
vHOSTNAME=${PW_ESXI_HOST_NAMES[${vHOSTIP}]}
if [ "$(CHECK_HOST ${vHOSTIP})" != "false" ]; then
vHOSTDATA=$(ssh root@${PW_RACADM_ACCESS} racadm -r ${vHOSTIP} -u ${PW_ESXI_USER} -p "'${PW_ESXI_PASS}'" getsensorinfo | grep " Temp" 2>&1)
IFS=$'\n' read -rd '' -a vHOSTDATA <<<"${vHOSTDATA}"; unset IFS
for sensordata in "${vHOSTDATA[@]}"; do
sensor=$(echo ${sensordata} | cut -d'T' -f1 | xargs)
temp=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $2}' | sed -e 's/C//g'); current=${current/ /}
warn=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $7}' | sed -e 's/C//g'); warn=${warn/ /}
crit=$(echo ${sensordata} | cut -d'p' -f2 | awk '/ / {print $4}' | sed -e 's/C//g'); crit=${crit/ /}
done
else #host down
if [ ! -f ${PW_TMPFOLDER}/${e}.down ] || [ $(expr `date +%s` - $(stat -c %Y ${PW_TMPFOLDER}/${e}.down)) -ge 1800 ]; then
SENDNOTICE "${vHOSTIP} ERROR" "${vHOSTNAME} Host is down" 1
echo "($datetime) - ${vHOSTIP} - ${vHOSTNAME} Host is down" >> ${logtemp}
touch ${PW_TMPFOLDER}/${e}.down
fi
fi
done
fi fi
done done
@@ -268,6 +333,8 @@ CHECKTEMP_SERVICE(){
done # & done # &
} }
DAILYTEMP(){ DAILYTEMP(){
# start=`date +%s` # start=`date +%s`
cw=26; cw=26;