This commit is contained in:
Patrick Van der Veken 2019-06-07 21:34:11 +02:00
commit 382dfdebe8

View File

@ -76,136 +76,136 @@ typeset _EVENT_SUMMARY=""
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
for _ARG in ${_ARGS} for _ARG in ${_ARGS}
do do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# log_healthy # log_healthy
(( ARG_LOG_HEALTHY > 0 )) && _LOG_HEALTHY=1 (( ARG_LOG_HEALTHY > 0 )) && _LOG_HEALTHY=1
if (( _LOG_HEALTHY > 0 )) if (( _LOG_HEALTHY > 0 ))
then then
if (( ARG_LOG > 0 )) if (( ARG_LOG > 0 ))
then then
log "logging/showing passed health checks" log "logging/showing passed health checks"
else else
log "showing passed health checks (but not logging)" log "showing passed health checks (but not logging)"
fi fi
else else
log "not logging/showing passed health checks" log "not logging/showing passed health checks"
fi fi
# handle configuration file # handle configuration file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
# read required configuration values # read required configuration values
_CFG_CHECK_EVENTS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'check_events') _CFG_CHECK_EVENTS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'check_events')
case "${_CFG_CHECK_EVENTS}" in case "${_CFG_CHECK_EVENTS}" in
No|NO|no) No|NO|no)
_CHECK_EVENTS=0 _CHECK_EVENTS=0
log "will not check current events" log "will not check current events"
;; ;;
*) *)
log "will check current events" log "will check current events"
;; ;;
esac esac
_CFG_EVENTS_AGE=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'events_age') _CFG_EVENTS_AGE=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'events_age')
case "${_CFG_EVENTS_AGE}" in case "${_CFG_EVENTS_AGE}" in
*:dd|*:mm|*:yy) *:dd|*:mm|*:yy)
_EVENTS_AGE="${_CFG_EVENTS_AGE}" _EVENTS_AGE="${_CFG_EVENTS_AGE}"
log "will use following age for current events: ${_CFG_EVENTS_AGE}" log "will use following age for current events: ${_CFG_EVENTS_AGE}"
;; ;;
*) *)
warn "invalid event age value '${_CFG_EVENTS_AGE}' in configuration file at ${_CONFIG_FILE}" warn "invalid event age value '${_CFG_EVENTS_AGE}' in configuration file at ${_CONFIG_FILE}"
return 1 return 1
;; ;;
esac esac
_CFG_EVENTS_SEVERITY=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'events_severity') _CFG_EVENTS_SEVERITY=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'events_severity')
if [[ -n "${_CFG_EVENTS_SEVERITY}" ]] && (( _CHECK_EVENTS > 0 )) if [[ -n "${_CFG_EVENTS_SEVERITY}" ]] && (( _CHECK_EVENTS > 0 ))
then then
log "will use following severities for current events: ${_CFG_EVENTS_SEVERITY}" log "will use following severities for current events: ${_CFG_EVENTS_SEVERITY}"
fi fi
_CFG_SEND_TEST_EVENT=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'send_test_event') _CFG_SEND_TEST_EVENT=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'send_test_event')
case "${_CFG_SEND_TEST_EVENT}" in case "${_CFG_SEND_TEST_EVENT}" in
Yes|YES|yes) Yes|YES|yes)
if (( ARG_LOG > 0 )) if (( ARG_LOG > 0 ))
then then
_SEND_TEST_EVENT=1 _SEND_TEST_EVENT=1
else else
warn "--no-log is enabled, skipping the generation of a test event" warn "--no-log is enabled, skipping the generation of a test event"
fi fi
log "will send & check a test event" log "will send & check a test event"
;; ;;
*) *)
log "will not send & check a test event" log "will not send & check a test event"
;; ;;
esac esac
_CFG_WAIT_TEST_EVENT=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'wait_test_event') _CFG_WAIT_TEST_EVENT=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'wait_test_event')
if (( _SEND_TEST_EVENT > 0 )) if (( _SEND_TEST_EVENT > 0 ))
then then
if [[ -z "${_CFG_WAIT_TEST_EVENT}" ]] if [[ -z "${_CFG_WAIT_TEST_EVENT}" ]]
then then
_WAIT_TEST_EVENT=60 _WAIT_TEST_EVENT=60
else else
data_is_numeric "${_WAIT_TEST_EVENT}" data_is_numeric "${_WAIT_TEST_EVENT}"
if (( $? > 0 )) if (( $? > 0 ))
then then
warn "invalid wait test event value '${_WAIT_TEST_EVENT}' in configuration file at ${_CONFIG_FILE}" warn "invalid wait test event value '${_WAIT_TEST_EVENT}' in configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
fi fi
fi fi
_CFG_EVENT_SUBSCRIBER_CIMOM=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'event_subscriber_cimom') _CFG_EVENT_SUBSCRIBER_CIMOM=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'event_subscriber_cimom')
_CFG_EVENT_SUBSCRIBER_WBEM=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'event_subscriber_wbem') _CFG_EVENT_SUBSCRIBER_WBEM=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'event_subscriber_wbem')
if [[ -n "${_CFG_EVENT_SUBSCRIBER_CIMOM}" ]] || [[ -n "${_CFG_EVENT_SUBSCRIBER_WBEM}" ]] if [[ -n "${_CFG_EVENT_SUBSCRIBER_CIMOM}" ]] || [[ -n "${_CFG_EVENT_SUBSCRIBER_WBEM}" ]]
then then
_CHECK_EVENT_SUBSCRIBER=1 _CHECK_EVENT_SUBSCRIBER=1
log "will check external subscriber (cimom and/or wbem)" log "will check external subscriber (cimom and/or wbem)"
else else
log "will not check external subscriber (cimom and/or wbem)" log "will not check external subscriber (cimom and/or wbem)"
fi fi
_CFG_HEALTHY=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'log_healthy') _CFG_HEALTHY=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'log_healthy')
case "${_CFG_HEALTHY}" in case "${_CFG_HEALTHY}" in
yes|YES|Yes) yes|YES|Yes)
_LOG_HEALTHY=1 _LOG_HEALTHY=1
;; ;;
*) *)
# do not override hc_arg # do not override hc_arg
(( _LOG_HEALTHY > 0 )) || _LOG_HEALTHY=0 (( _LOG_HEALTHY > 0 )) || _LOG_HEALTHY=0
;; ;;
esac esac
# check timeout (_WAIT_TEST_EVENT must be at least 30 secs smaller than health check timeout) # check timeout (_WAIT_TEST_EVENT must be at least 30 secs smaller than health check timeout)
if (( _SEND_TEST_EVENT > 0 )) if (( _SEND_TEST_EVENT > 0 ))
then then
if (( (_WAIT_TEST_EVENT + 30) > HC_TIME_OUT )) if (( (_WAIT_TEST_EVENT + 30) > HC_TIME_OUT ))
then then
warn "wait test event value will conflict with health check timeout. Specify a (larger) --timeout value" warn "wait test event value will conflict with health check timeout. Specify a (larger) --timeout value"
return 1 return 1
fi fi
fi fi
# check required tools # check required tools
if [[ ! -x ${_SFMCONFIG_BIN} ]] if [[ ! -x ${_SFMCONFIG_BIN} ]]
then then
warn "${_SFMCONFIG_BIN} is not installed here" warn "${_SFMCONFIG_BIN} is not installed here"
return 1 return 1
fi fi
if [[ ! -x ${_EVWEB_BIN} ]] if [[ ! -x ${_EVWEB_BIN} ]]
then then
warn "${_EVWEB_BIN} is not installed here" warn "${_EVWEB_BIN} is not installed here"
return 1 return 1
fi fi
if [[ ! -x ${_CIMPROVIDER_BIN} ]] if [[ ! -x ${_CIMPROVIDER_BIN} ]]
then then
warn "${_CIMPROVIDER_BIN} is not installed here" warn "${_CIMPROVIDER_BIN} is not installed here"
return 1 return 1
fi fi
# 1. is SFM active? # 1. is SFM active?
@ -216,15 +216,15 @@ _CHECK_SFM_OUTPUT=$(${_SFMCONFIG_BIN} -w -q 2>>${HC_STDERR_LOG})
data_contains_string "${_CHECK_SFM_OUTPUT}" "SysFaultMgmt is the default monitoring mode" data_contains_string "${_CHECK_SFM_OUTPUT}" "SysFaultMgmt is the default monitoring mode"
if (( $? == 0 )) if (( $? == 0 ))
then then
_MSG="SysFaultMgmt is not configured as default monitoring mode {${_SFMCONFIG_BIN} -w -q}" _MSG="SysFaultMgmt is not configured as default monitoring mode {${_SFMCONFIG_BIN} -w -q}"
_STC=1 _STC=1
else else
_MSG="SysFaultMgmt is configured as default monitoring mode" _MSG="SysFaultMgmt is configured as default monitoring mode"
_STC=0 _STC=0
fi fi
if (( _LOG_HEALTHY > 0 || _STC > 0 )) if (( _LOG_HEALTHY > 0 || _STC > 0 ))
then then
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
fi fi
# save sfmconfig OUTPUT for posterity # save sfmconfig OUTPUT for posterity
print "${_CHECK_SFM_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_SFM_OUTPUT}" >>${HC_STDOUT_LOG}
@ -235,28 +235,28 @@ print "=== ${_CIMPROVIDER_BIN} -ls ===" >>${HC_STDOUT_LOG}
_CHECK_CIM_OUTPUT=$(${_CIMPROVIDER_BIN} -ls 2>>${HC_STDERR_LOG}) _CHECK_CIM_OUTPUT=$(${_CIMPROVIDER_BIN} -ls 2>>${HC_STDERR_LOG})
if (( $? > 0 )) if (( $? > 0 ))
then then
_MSG="unable to execute {${_CIMPROVIDER_BIN} -ls}, cimserver is probably not running" _MSG="unable to execute {${_CIMPROVIDER_BIN} -ls}, cimserver is probably not running"
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
# save cimprovider OUTPUT # save cimprovider OUTPUT
print "${_CHECK_CIM_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_CIM_OUTPUT}" >>${HC_STDOUT_LOG}
# dump debug info # dump debug info
(( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 1 return 1
else else
# find module # find module
_CHECK_CIM_MODULE=$(print "${_CHECK_CIM_OUTPUT}" | grep -c -E -e 'SFMProviderModule[[:space:]]*OK' 2>/dev/null) _CHECK_CIM_MODULE=$(print "${_CHECK_CIM_OUTPUT}" | grep -c -E -e 'SFMProviderModule[[:space:]]*OK' 2>/dev/null)
if (( _CHECK_CIM_MODULE > 0 )) if (( _CHECK_CIM_MODULE > 0 ))
then then
_MSG="SFM CIM provider is active" _MSG="SFM CIM provider is active"
_STC=0 _STC=0
else else
_MSG="SFM CIM provider is not active {${_CIMPROVIDER_BIN} -ls}" _MSG="SFM CIM provider is not active {${_CIMPROVIDER_BIN} -ls}"
_STC=0 _STC=0
fi fi
fi fi
if (( _LOG_HEALTHY > 0 || _STC > 0 )) if (( _LOG_HEALTHY > 0 || _STC > 0 ))
then then
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
fi fi
# save sfmconfig OUTPUT for posterity # save sfmconfig OUTPUT for posterity
print "${_CHECK_CIM_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_CIM_OUTPUT}" >>${HC_STDOUT_LOG}
@ -264,127 +264,127 @@ print "${_CHECK_CIM_OUTPUT}" >>${HC_STDOUT_LOG}
# 3. check if there is an external SIM/IRS subscriber # 3. check if there is an external SIM/IRS subscriber
if (( _CHECK_EVENT_SUBSCRIBER > 0 )) if (( _CHECK_EVENT_SUBSCRIBER > 0 ))
then then
log "checking external SIM/IRS subscriber ..." log "checking external SIM/IRS subscriber ..."
print "=== ${_EVWEB_BIN} subscribe -L -b external ===" >>${HC_STDOUT_LOG} print "=== ${_EVWEB_BIN} subscribe -L -b external ===" >>${HC_STDOUT_LOG}
_CHECK_EVWEB_OUTPUT=$(${_EVWEB_BIN} subscribe -L -b external) _CHECK_EVWEB_OUTPUT=$(${_EVWEB_BIN} subscribe -L -b external)
_COUNT_SUBS_CIMOM=$(print "${_CHECK_EVWEB_OUTPUT}" | grep -c "${_CFG_EVENT_SUBSCRIBER_CIMOM}" 2>/dev/null) _COUNT_SUBS_CIMOM=$(print "${_CHECK_EVWEB_OUTPUT}" | grep -c "${_CFG_EVENT_SUBSCRIBER_CIMOM}" 2>/dev/null)
_COUNT_SUBS_WBEM=$(print "${_CHECK_EVWEB_OUTPUT}" | grep -c "${_CFG_EVENT_SUBSCRIBER_WBEM}" 2>/dev/null) _COUNT_SUBS_WBEM=$(print "${_CHECK_EVWEB_OUTPUT}" | grep -c "${_CFG_EVENT_SUBSCRIBER_WBEM}" 2>/dev/null)
if (( _COUNT_SUBS_CIMOM > 0 || _COUNT_SUBS_WBEM > 0 )) if (( _COUNT_SUBS_CIMOM > 0 || _COUNT_SUBS_WBEM > 0 ))
then then
case ${_COUNT_SUBS_CIMOM} in case ${_COUNT_SUBS_CIMOM} in
0) 0)
: :
;; ;;
3) 3)
_MSG="found external subscriber for CIMOM with ${_COUNT_SUBS_CIMOM} subscriptions" _MSG="found external subscriber for CIMOM with ${_COUNT_SUBS_CIMOM} subscriptions"
_STC=0 _STC=0
;; ;;
*) *)
_MSG="found external subscriber for CIMOM but not with sufficient number of subscriptions: ${_COUNT_SUBS_CIMOM}" _MSG="found external subscriber for CIMOM but not with sufficient number of subscriptions: ${_COUNT_SUBS_CIMOM}"
_STC=1 _STC=1
;; ;;
esac esac
if (( _COUNT_SUBS_WBEM > 0 )) if (( _COUNT_SUBS_WBEM > 0 ))
then then
_MSG="found external subscriber for WBEM" _MSG="found external subscriber for WBEM"
_STC=0 _STC=0
fi fi
else else
_MSG="did not find any external subscribers for CIMOM or WBEM" _MSG="did not find any external subscribers for CIMOM or WBEM"
_STC=1 _STC=1
fi fi
if (( _LOG_HEALTHY > 0 || _STC > 0 )) if (( _LOG_HEALTHY > 0 || _STC > 0 ))
then then
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
fi fi
# save evweb OUTPUT for posterity # save evweb OUTPUT for posterity
print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG}
fi fi
# 4. send a test event? # 4. send a test event?
if (( _SEND_TEST_EVENT > 0 )) if (( _SEND_TEST_EVENT > 0 ))
then then
log "generating SFM test event ..." log "generating SFM test event ..."
print "=== ${_SFMCONFIG_BIN} -t -a ===" >>${HC_STDOUT_LOG} print "=== ${_SFMCONFIG_BIN} -t -a ===" >>${HC_STDOUT_LOG}
${_SFMCONFIG_BIN} -t -a >>${HC_STDOUT_LOG} 2>>${HC_STDERR_LOG} ${_SFMCONFIG_BIN} -t -a >>${HC_STDOUT_LOG} 2>>${HC_STDERR_LOG}
if (( $? > 0 )) if (( $? > 0 ))
then then
_MSG="unable to execute {${_SFMCONFIG_BIN} -t -a}, cimserver is probably not running" _MSG="unable to execute {${_SFMCONFIG_BIN} -t -a}, cimserver is probably not running"
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
# dump debug info # dump debug info
(( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 1 return 1
else else
# wait for test event to showing # wait for test event to showing
log "waiting for SFM test event to show (${_WAIT_TEST_EVENT} seconds) ..." log "waiting for SFM test event to show (${_WAIT_TEST_EVENT} seconds) ..."
sleep ${_WAIT_TEST_EVENT} sleep ${_WAIT_TEST_EVENT}
# run event viewer # run event viewer
print "=== ${_EVWEB_BIN} eventviewer -L -a 1:dd ===" >>${HC_STDOUT_LOG} print "=== ${_EVWEB_BIN} eventviewer -L -a 1:dd ===" >>${HC_STDOUT_LOG}
_CHECK_EVWEB_OUTPUT=$(${_EVWEB_BIN} eventviewer -L -a 1:dd | grep "Test event" 2>/dev/null) _CHECK_EVWEB_OUTPUT=$(${_EVWEB_BIN} eventviewer -L -a 1:dd | grep "Test event" 2>/dev/null)
if (( $? > 0 )) if (( $? > 0 ))
then then
_MSG="unable to execute {${_EVWEB_BIN} eventviewer -L -a 1:dd}" _MSG="unable to execute {${_EVWEB_BIN} eventviewer -L -a 1:dd}"
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
# save evweb OUTPUT # save evweb OUTPUT
print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG}
# dump debug info # dump debug info
(( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 1 return 1
else else
if [[ -n "${_CHECK_EVWEB_OUTPUT}" ]] if [[ -n "${_CHECK_EVWEB_OUTPUT}" ]]
then then
_MSG="at least one test event was successfully generated in the last 24hrs" _MSG="at least one test event was successfully generated in the last 24hrs"
_STC=0 _STC=0
else else
_MSG="found no test event in the last 24hrs" _MSG="found no test event in the last 24hrs"
_STC=1 _STC=1
fi fi
fi fi
fi fi
if (( _LOG_HEALTHY > 0 || _STC > 0 )) if (( _LOG_HEALTHY > 0 || _STC > 0 ))
then then
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
fi fi
# save evweb OUTPUT for posterity # save evweb OUTPUT for posterity
print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG}
fi fi
# 5. check events # 5. check events
if (( _CHECK_EVENTS > 0 )) if (( _CHECK_EVENTS > 0 ))
then then
_CHECK_EVWEB_OUTPUT="" _CHECK_EVWEB_OUTPUT=""
log "checking for current events (age: ${_EVENTS_AGE}) ..." log "checking for current events (age: ${_EVENTS_AGE}) ..."
print "=== ${_EVWEB_BIN} eventviewer -L -a ${_EVENTS_AGE} ===" >>${HC_STDOUT_LOG} print "=== ${_EVWEB_BIN} eventviewer -L -a ${_EVENTS_AGE} ===" >>${HC_STDOUT_LOG}
_CHECK_EVWEB_OUTPUT=$(${_EVWEB_BIN} eventviewer -L -a ${_EVENTS_AGE} | grep -v "Test event" 2>/dev/null) _CHECK_EVWEB_OUTPUT=$(${_EVWEB_BIN} eventviewer -L -a ${_EVENTS_AGE} | grep -v "Test event" 2>/dev/null)
if (( $? > 0 )) if (( $? > 0 ))
then then
_MSG="unable to execute {${_EVWEB_BIN} eventviewer -L -a ${_EVENTS_AGE}}" _MSG="unable to execute {${_EVWEB_BIN} eventviewer -L -a ${_EVENTS_AGE}}"
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
# save evweb OUTPUT # save evweb OUTPUT
print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG}
# dump debug info # dump debug info
(( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 1 return 1
else else
_CFG_EVENTS_SEVERITY=$(data_lc "${_CFG_EVENTS_SEVERITY}") _CFG_EVENTS_SEVERITY=$(data_lc "${_CFG_EVENTS_SEVERITY}")
print "${_CHECK_EVWEB_OUTPUT}" | grep -v -E -e "^$" -e "^=" -e "^Ev" 2>/dev/null |\ print "${_CHECK_EVWEB_OUTPUT}" | grep -v -E -e "^$" -e "^=" -e "^Ev" 2>/dev/null |\
while read -r _EVWEB_LINE while read -r _EVWEB_LINE
do do
_EVENT_ID=$(print "${_EVWEB_LINE}" | awk '{ print $1}' 2>/dev/null) _EVENT_ID=$(print "${_EVWEB_LINE}" | awk '{ print $1}' 2>/dev/null)
_EVENT_SEVERITY=$(print "${_EVWEB_LINE}" | awk '{ print $2}' 2>/dev/null) _EVENT_SEVERITY=$(print "${_EVWEB_LINE}" | awk '{ print $2}' 2>/dev/null)
_EVENT_SEVERITY=$(data_lc "${_EVENT_SEVERITY}") _EVENT_SEVERITY=$(data_lc "${_EVENT_SEVERITY}")
_EVENT_SUMMARY=$(print "${_EVWEB_LINE}" | awk '{$1=$2=$3=$4=$5=$6=$7=$8=$9=$10=""; gsub (/^ */,"",$0); print $0}' 2>/dev/null) _EVENT_SUMMARY=$(print "${_EVWEB_LINE}" | awk '{$1=$2=$3=$4=$5=$6=$7=$8=$9=$10=""; gsub (/^ */,"",$0); print $0}' 2>/dev/null)
# check severity # check severity
data_contains_string "${_CFG_EVENTS_SEVERITY}" "${_EVENT_SEVERITY}" data_contains_string "${_CFG_EVENTS_SEVERITY}" "${_EVENT_SEVERITY}"
if (( $? > 0 )) if (( $? > 0 ))
then then
_MSG="found SFM event (ID=${_EVENT_ID}/SUMMARY=${_EVENT_SUMMARY})" _MSG="found SFM event (ID=${_EVENT_ID}/SUMMARY=${_EVENT_SUMMARY})"
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
fi fi
done done
fi fi
# save evweb OUTPUT for posterity # save evweb OUTPUT for posterity
print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG} print "${_CHECK_EVWEB_OUTPUT}" >>${HC_STDOUT_LOG}
fi fi
return 0 return 0
@ -397,19 +397,19 @@ cat <<- EOT
NAME : $1 NAME : $1
VERSION : $2 VERSION : $2
CONFIG : $3 with parameters: CONFIG : $3 with parameters:
log_healthy=<yes|no> log_healthy=<yes|no>
check_events=<yes|no> check_events=<yes|no>
events_age=<age_of_open_events> events_age=<age_of_open_events>
events_severity=<severities_of_open_events> events_severity=<severities_of_open_events>
send_test_event=<yes|no> send_test_event=<yes|no>
wait_test_event=<interval_to_wait> wait_test_event=<interval_to_wait>
event_subscriber=<url_of_external_subscriber> event_subscriber=<url_of_external_subscriber>
PURPOSE : Checks the heath of SFM (System Fault Management) PURPOSE : Checks the heath of SFM (System Fault Management)
* checks default monitoring mode * checks default monitoring mode
* checks CIM provider module * checks CIM provider module
* checks external event subscriber (optional) * checks external event subscriber (optional)
* sends & checks a test event (optional) * sends & checks a test event (optional)
* checks current events (optional) * checks current events (optional)
LOG HEALTHY : Supported LOG HEALTHY : Supported
NOTE : Test events should not be generated more than once a day NOTE : Test events should not be generated more than once a day