Update grep pipelines to include awk command. This ensures only the process identifier is captured instead of the full status line.
52 lines
2.0 KiB
Bash
52 lines
2.0 KiB
Bash
#!/bin/bash
|
|
# =============================================================================
|
|
# SAP HANA Process Monitoring Script
|
|
# Checks if all HANA processes are in GREEN state
|
|
# =============================================================================
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
|
SCRIPT_NAME="hana_processes"
|
|
|
|
# Load configuration
|
|
source "${SCRIPT_DIR}/hana.conf"
|
|
source "${SCRIPT_DIR}/hana_lib.sh"
|
|
|
|
# Acquire lock
|
|
if ! acquire_lock "$SCRIPT_NAME"; then
|
|
exit 1
|
|
fi
|
|
trap 'release_lock "$SCRIPT_NAME"' EXIT
|
|
|
|
log_message "$SCRIPT_NAME" "Starting HANA process status check..."
|
|
|
|
# Get process list
|
|
process_list=$(su - "$HANA_USER" -c "sapcontrol -nr ${HANA_INSTANCE_NR} -function GetProcessList" 2>&1)
|
|
sapcontrol_status=$?
|
|
|
|
if [ $sapcontrol_status -ne 0 ]; then
|
|
log_message "$SCRIPT_NAME" "ERROR: sapcontrol command failed with exit code ${sapcontrol_status}"
|
|
send_alert "$SCRIPT_NAME" "HANA Monitor Error" "sapcontrol command failed. Exit code: ${sapcontrol_status}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for non-GREEN processes (skip header lines)
|
|
non_green_processes=$(echo "$process_list" | tail -n +6 | grep -v 'GREEN' | grep -v '^$' | awk -F', ' '{print $1}')
|
|
|
|
if [ -n "$non_green_processes" ]; then
|
|
log_message "$SCRIPT_NAME" "ALERT: One or more HANA processes are not running!"
|
|
log_message "$SCRIPT_NAME" "Problem processes: ${non_green_processes}"
|
|
send_alert "$SCRIPT_NAME" "HANA Process" "One or more HANA processes are not GREEN. Problem processes: ${non_green_processes}"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify we actually got process data
|
|
green_processes=$(echo "$process_list" | tail -n +6 | grep 'GREEN' | awk -F', ' '{print $1}')
|
|
if [ -z "$green_processes" ]; then
|
|
log_message "$SCRIPT_NAME" "WARNING: No process data found. SAP HANA may not be running."
|
|
send_alert "$SCRIPT_NAME" "HANA Process" "No process data found. SAP HANA may not be running."
|
|
exit 1
|
|
fi
|
|
|
|
log_message "$SCRIPT_NAME" "SUCCESS: All HANA processes are GREEN."
|
|
log_message "$SCRIPT_NAME" "Process check complete."
|