#!/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."