- Remove consecutive breach tracking for statement queue (immediate alerts) - Consolidate script initialization into init_script() function - Remove unused helper functions (send_ok, run_as_hana_user, get_mount_point) - Flatten sld_watchdog.sh structure by removing main() wrapper - Remove state directory and lock directory configuration from hana.conf - Simplify alert messages to include threshold values This continues the simplification effort from previous commits by removing stateful tracking mechanisms and streamlining the monitoring logic for easier maintenance.
59 lines
2.1 KiB
Bash
59 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# =============================================================================
|
|
# SAP HANA Statement Queue Monitoring Script
|
|
# Checks for queued SQL statements
|
|
# =============================================================================
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
|
SCRIPT_NAME="hana_queue"
|
|
|
|
# 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 statement queue check..."
|
|
|
|
# Check if hdbsql is available
|
|
if [ ! -x "$HDBSQL_PATH" ]; then
|
|
log_message "$SCRIPT_NAME" "ERROR: hdbsql not found or not executable at ${HDBSQL_PATH}"
|
|
send_alert "$SCRIPT_NAME" "HANA Monitor Error" "hdbsql not found or not executable at ${HDBSQL_PATH}"
|
|
exit 1
|
|
fi
|
|
|
|
# SQL Query for statement queue
|
|
STATEMENT_QUEUE_SQL="SELECT COUNT(*) FROM M_SERVICE_THREADS WHERE THREAD_TYPE = 'SqlExecutor' AND THREAD_STATE = 'Queueing';"
|
|
|
|
# Execute SQL query
|
|
queue_count=$(execute_hana_sql_query "$STATEMENT_QUEUE_SQL")
|
|
sql_status=$?
|
|
|
|
if [ $sql_status -ne 0 ]; then
|
|
log_message "$SCRIPT_NAME" "ERROR: Failed to execute queue query."
|
|
send_alert "$SCRIPT_NAME" "HANA Queue Error" "Failed to execute queue query."
|
|
exit 1
|
|
fi
|
|
|
|
# Validate queue count is a number
|
|
if ! [[ "$queue_count" =~ ^[0-9]+$ ]]; then
|
|
log_message "$SCRIPT_NAME" "WARNING: Could not retrieve HANA statement queue count. Got: '${queue_count}'."
|
|
send_alert "$SCRIPT_NAME" "HANA Monitor Warning" "Could not retrieve statement queue count."
|
|
exit 1
|
|
fi
|
|
|
|
log_message "$SCRIPT_NAME" "Current statement queue length: ${queue_count}"
|
|
|
|
# Alert immediately if queue exceeds threshold
|
|
if [ "$queue_count" -gt "$STATEMENT_QUEUE_THRESHOLD" ]; then
|
|
send_alert "$SCRIPT_NAME" "HANA Statement Queue" "Statement queue count is ${queue_count}, which exceeds threshold of ${STATEMENT_QUEUE_THRESHOLD}."
|
|
exit 1
|
|
fi
|
|
|
|
log_message "$SCRIPT_NAME" "Statement queue is normal. Current count: ${queue_count}."
|
|
log_message "$SCRIPT_NAME" "Statement queue check complete."
|