diff --git a/etc/opt/hc/check_clusterware_resource_config.conf.dist b/etc/opt/hc/check_clusterware_resource_config.conf.dist index 5f8006c..48997c6 100644 --- a/etc/opt/hc/check_clusterware_resource_config.conf.dist +++ b/etc/opt/hc/check_clusterware_resource_config.conf.dist @@ -11,6 +11,10 @@ # [default: no] log_healthy="no" +# location of the crsctl tool +# [default: null (autodiscovery)] +crsctl_bin="" + # stanza(s) of resource definitions (case sensitive). # Example: #[myresource] diff --git a/etc/opt/hc/check_clusterware_resource_status.conf.dist b/etc/opt/hc/check_clusterware_resource_status.conf.dist index 248b746..9ffa225 100644 --- a/etc/opt/hc/check_clusterware_resource_status.conf.dist +++ b/etc/opt/hc/check_clusterware_resource_status.conf.dist @@ -11,6 +11,10 @@ # [default: no] log_healthy="no" +# location of the crsctl tool +# [default: null (autodiscovery)] +crsctl_bin="" + # list of required resource statuses # Format: # crs::<*|node>=,<*|node>=,... diff --git a/opt/hc/lib/platform/clusterware/check_clusterware_resource_config.sh b/opt/hc/lib/platform/clusterware/check_clusterware_resource_config.sh index a33cfc5..763de77 100644 --- a/opt/hc/lib/platform/clusterware/check_clusterware_resource_config.sh +++ b/opt/hc/lib/platform/clusterware/check_clusterware_resource_config.sh @@ -23,6 +23,7 @@ # # @(#) HISTORY: # @(#) 2019-04-20: merged HP-UX+Linux version + fixes [Patrick Van der Veken] +# @(#) 2019-04-26: made _CRSCTL_BIN path configurable + fix [Patrick Van der Veken] # ----------------------------------------------------------------------------- # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! #****************************************************************************** @@ -32,7 +33,7 @@ function check_clusterware_resource_config { # ------------------------- CONFIGURATION starts here ------------------------- typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" -typeset _VERSION="2019-04-20" # YYYY-MM-DD +typeset _VERSION="2019-04-26" # YYYY-MM-DD typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _MAX_LENGTH_VALUE_STRING=30 # ------------------------- CONFIGURATION ends here --------------------------- @@ -88,6 +89,19 @@ case "${_CFG_HEALTHY}" in (( _LOG_HEALTHY > 0 )) || _LOG_HEALTHY=0 ;; esac +_CRSCTL_BIN=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'crsctl_bin') +if [[ -z "${_CRSCTL_BIN}" ]] +then + _CRSCTL_BIN="$(command -v crsctl 2>>${HC_STDERR_LOG})" + [[ -n "${_CRSCTL_BIN}" ]] && (( ARG_DEBUG > 0 )) && debug "crsctl path: ${_CRSCTL_BIN} (discover)" +else + (( ARG_DEBUG > 0 )) && debug "crsctl path: ${_CRSCTL_BIN} (config)" +fi +if [[ -z "${_CRSCTL_BIN}" || ! -x ${_CRSCTL_BIN} ]] +then + warn "could not determine location for CRS {crsctl} (or it is not installed here)" + return 1 +fi # log_healthy (( ARG_LOG_HEALTHY > 0 )) && _LOG_HEALTHY=1 @@ -116,25 +130,18 @@ then fi # get resource information from crsctl -_CRSCTL_BIN="$(command -v crsctl 2>>${HC_STDERR_LOG})" -if [[ -z "${_CRSCTL_BIN}" || ! -x ${_CRSCTL_BIN} ]] -then - warn "CRS {crsctl} is not installed here" +for _RES_INSTANCE in ${_RES_INSTANCES} +do +${_CRSCTL_BIN} status resource ${_RES_INSTANCE} -f 2>>${HC_STDERR_LOG} |\ + tr -d ' \t' >${_RES_RUN_FILE}.${_RES_INSTANCE} 2>/dev/null +[[ -s ${_RES_RUN_FILE}.${_RES_INSTANCE} ]] || { + _MSG="unable to run command: {${_CRSCTL_BIN} status resource -f ${_RES_INSTANCE}}" + log_hc "$0" 1 "${_MSG}" + # dump debug info + (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs return 1 -else - for _RES_INSTANCE in ${_RES_INSTANCES} - do - crsctl status resource ${_RES_INSTANCE} -f 2>>${HC_STDERR_LOG} |\ - tr -d ' \t' >${_RES_RUN_FILE}.${_RES_INSTANCE} 2>/dev/null - [[ -s ${_RES_RUN_FILE}.${_RES_INSTANCE} ]] || { - _MSG="unable to gather configuration cluster resource ${_RES_INSTANCE}" - log_hc "$0" 1 "${_MSG}" - # dump debug info - (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs - return 1 - } - done -fi +} +done # gather resource information from healthcheck configuration for _RES_INSTANCE in ${_RES_INSTANCES} @@ -221,6 +228,7 @@ NAME : $1 VERSION : $2 CONFIG : $3 with parameters: log_healthy= + crsctl_bin= and formatted stanzas for resource definitions PURPOSE : Checks the configuration of Clusterware resources (parameters/values) (comparing serialized strings from the HC configuration file to the diff --git a/opt/hc/lib/platform/clusterware/check_clusterware_resource_status.sh b/opt/hc/lib/platform/clusterware/check_clusterware_resource_status.sh index 4d3b87a..2fa7e83 100644 --- a/opt/hc/lib/platform/clusterware/check_clusterware_resource_status.sh +++ b/opt/hc/lib/platform/clusterware/check_clusterware_resource_status.sh @@ -24,6 +24,7 @@ # # @(#) HISTORY: # @(#) 2019-04-20: merged HP-UX+Linux version [Patrick Van der Veken] +# @(#) 2019-04-26: made _CRSCTL_BIN path configurable + fix [Patrick Van der Veken] # ----------------------------------------------------------------------------- # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! #****************************************************************************** @@ -33,7 +34,7 @@ function check_clusterware_resource_status { # ------------------------- CONFIGURATION starts here ------------------------- typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" -typeset _VERSION="2019-04-20" # YYYY-MM-DD +typeset _VERSION="2019-04-26" # YYYY-MM-DD typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match # ------------------------- CONFIGURATION ends here --------------------------- @@ -85,6 +86,19 @@ case "${_CFG_HEALTHY}" in (( _LOG_HEALTHY > 0 )) || _LOG_HEALTHY=0 ;; esac +_CRSCTL_BIN=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'crsctl_bin') +if [[ -z "${_CRSCTL_BIN}" ]] +then + _CRSCTL_BIN="$(command -v crsctl 2>>${HC_STDERR_LOG})" + [[ -n "${_CRSCTL_BIN}" ]] && (( ARG_DEBUG > 0 )) && debug "crsctl path: ${_CRSCTL_BIN} (discover)" +else + (( ARG_DEBUG > 0 )) && debug "crsctl path: ${_CRSCTL_BIN} (config)" +fi +if [[ -z "${_CRSCTL_BIN}" || ! -x ${_CRSCTL_BIN} ]] +then + warn "could not determine location for CRS {crsctl} (or it is not installed here)" + return 1 +fi # log_healthy (( ARG_LOG_HEALTHY > 0 )) && _LOG_HEALTHY=1 @@ -100,24 +114,16 @@ else log "not logging/showing passed health checks" fi -# check for clusterware -_CRSCTL_BIN="$(command -v crsctl 2>>${HC_STDERR_LOG})" -if [[ -z "${_CRSCTL_BIN}" || ! -x ${_CRSCTL_BIN} ]] -then - warn "CRS {crsctl} is not installed here" - return 1 -fi - # do resource status checks grep -E -e "^crs:" ${_CONFIG_FILE} 2>/dev/null |\ while IFS=":" read -r _ _CRS_RESOURCE _CRS_STATES do # get actual resource info (( ARG_DEBUG > 0 )) && debug "checking for resource: ${_CRS_RESOURCE}" - _CRSCTL_STATUS=$(crsctl status resource "${_CRS_RESOURCE}" 2>>${HC_STDERR_LOG}) + _CRSCTL_STATUS=$(${_CRSCTL_BIN} status resource "${_CRS_RESOURCE}" 2>>${HC_STDERR_LOG}) if (( $? > 0 )) || [[ -z "${_CRSCTL_STATUS}" ]] then - _MSG="unable to run command: {crsctl status resource ${_CRS_RESOURCE}}" + _MSG="unable to run command: {${_CRSCTL_BIN} status resource ${_CRS_RESOURCE}}" log_hc "$0" 1 "${_MSG}" # dump debug info (( ARG_DEBUG > 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs @@ -202,6 +208,7 @@ NAME : $1 VERSION : $2 CONFIG : $3 with parameters: log_healthy= + crsctl_bin= and formatted stanzas: crs::<*|node>=,<*|node>=,... PURPOSE : Checks the STATE of CRS resource(s) diff --git a/opt/hc/lib/platform/linux/check_linux_fs_usage.sh b/opt/hc/lib/platform/linux/check_linux_fs_usage.sh index 4fef31e..db276d9 100755 --- a/opt/hc/lib/platform/linux/check_linux_fs_usage.sh +++ b/opt/hc/lib/platform/linux/check_linux_fs_usage.sh @@ -29,6 +29,7 @@ # @(#) 2019-02-04: fix in cleanup [Patrick Van der Veken] # @(#) 2019-02-18: fixes + help update [Patrick Van der Veken] # @(#) 2019-03-25: exclude /dev/loop* + rationalization [Patrick Van der Veken] +# @(#) 2019-04-26: small string fix [Patrick Van der Veken] # ----------------------------------------------------------------------------- # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! #****************************************************************************** @@ -38,7 +39,7 @@ function check_linux_fs_usage { # ------------------------- CONFIGURATION starts here ------------------------- typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" -typeset _VERSION="2019-03-25" # YYYY-MM-DD +typeset _VERSION="2019-04-26" # YYYY-MM-DD typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match # ------------------------- CONFIGURATION ends here --------------------------- @@ -160,7 +161,7 @@ then if (( $? > 0 )) then # df exits >0 if there are issues with some filesystems, consider non-fatal - warn "error(s) occurred executing the {df -Pil}" + warn "error(s) occurred executing {df -Pil}" fi fi if (( _DO_SPACE > 0 ))