Monitorización Automática

Supervisión Proactiva de Espacio y Trazas (Bash)

Por qué automatizar el Monitoreo

En un entorno productivo, esperar a que un usuario reporte un error suele ser demasiado tarde. Los problemas de falta de espacio en los volúmenes de datos o logs, o los errores de Out of Memory (OOM), deben ser detectados en cuestión de minutos.

Script de Monitoreo Multi-Sistema (Pro)

Para una monitorización profesional, combinamos el chequeo de espacio en disco, el escaneo de errores en trazas y la validación de procesos mediante SAPControl para múltiples sistemas.

1. Archivo de Configuración: systems.cfg

Crea un archivo con formato tabulado (o espacios) con el siguiente orden: SAPSID Instancia Ruta_Data Ruta_Log.

# SAPSID  INST  DATA_PATH                LOG_PATH
HDB       00    /hana/data/HDB           /hana/log/HDB
PRD       01    /hana/data/PRD           /hana/log/PRD
QAS       02    /hana/data/QAS           /hana/log/QAS

2. Script Maestro: hana_monitor_multi.sh

#!/bin/bash
# ==========================================================
# Script de Monitorización Multi-Sistema (Espacio + Logs + SAPControl)
# ==========================================================

CONFIG_FILE="/usr/sap/scripts/systems.cfg"
ALERTS_FILE="/tmp/hana_alerts.log"
MAX_USAGE=90
KEYWORDS=("CRITICAL" "ERROR" "OUT OF MEMORY" "DATABASE FULL")

# Limpiar alertas previas
> $ALERTS_FILE

# Procesar cada sistema definido en el config
while read -r SID INST DATA LOG; do
    [[ "$SID" =~ ^#.*$ || -z "$SID" ]] && continue 

    # 1. VALIDACIÓN SAPCONTROL (Salud de Procesos)
    # Buscamos cualquier proceso que NO esté en GREEN
    FAILED_PROCS=$(sapcontrol -nr $INST -function GetProcessList | grep -v "GREEN" | grep -E "RED|GRAY|YELLOW")
    if [ ! -z "$FAILED_PROCS" ]; then
        echo "[$(date)] CRITICAL [$SID]: Procesos fuera de servicio detectados" >> $ALERTS_FILE
        echo "$FAILED_PROCS" >> $ALERTS_FILE
    fi

    # 2. CHEQUEO DE ESPACIO
    usage_data=$(df -h "$DATA" | awk 'NR==2 {print $5}' | sed 's/%//')
    [ "$usage_data" -gt "$MAX_USAGE" ] && echo "[$(date)] ALERTA [$SID]: Data al $usage_data%" >> $ALERTS_FILE
    
    usage_log=$(df -h "$LOG" | awk 'NR==2 {print $5}' | sed 's/%//')
    [ "$usage_log" -gt "$MAX_USAGE" ] && echo "[$(date)] ALERTA [$SID]: Log al $usage_log%" >> $ALERTS_FILE

    # 3. ESCANEO DE TRAZAS (Errores Críticos)
    TRACE_DIR="/usr/sap/$SID/HDB$INST/$HOSTNAME/trace"
    for key in "${KEYWORDS[@]}"; do
        grep -i "$key" "$TRACE_DIR"/nameserver*.trc "$TRACE_DIR"/indexserver*.trc 2>/dev/null | tail -n 2 >> $ALERTS_FILE
    done

done < "$CONFIG_FILE"

# Notificación Final
if [ -s "$ALERTS_FILE" ]; then
    echo "INCIDENCIAS DETECTADAS en el Landscape HANA. Revisar $ALERTS_FILE"
    # mail -s "Alerta Global SAP HANA" admin@empresa.com < $ALERTS_FILE
fi

Configuración en el Cron

Para que el script sea efectivo, debe ejecutarse con frecuencia (por ejemplo, cada 15 minutos).

# Editar el crontab del usuario <sid>adm
crontab -e

# Añadir la siguiente línea (ejecución cada 15 min)
*/15 * * * * /usr/sap/scripts/hana_monitor.sh > /dev/null 2>&1

Puntos de Control Críticos

Páginas relacionadas