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
- HANA LOG Volume: Si se llena el volumen de logs, la DB se detendrá totalmente (Log Full situation).
- Indexserver Trace: Es donde se registran los errores de ejecución SQL y problemas de memoria.
- Nameserver Trace: Vital para detectar problemas en la topología del landscape y replicación.