62 lines
2.1 KiB
Bash
Executable File
62 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ===============================================================================================================
|
|
# health-check.sh - Verifica que la API backend esté saludable
|
|
# Descripción:
|
|
# Realiza peticiones al endpoint de salud de la API con reintentos.
|
|
# Puede ejecutarse desde la EC2 localmente o desde el pipeline.
|
|
#
|
|
# Uso:
|
|
# HEALTH_URL=http://localhost:8080/actuator/health bash health-check.sh
|
|
#
|
|
# Autor: Área de Tecnología y Desarrollo - CCsoft
|
|
# ===============================================================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
# -------------------------------------------------------------------------------
|
|
# Configuración
|
|
# -------------------------------------------------------------------------------
|
|
HEALTH_URL="${HEALTH_URL:-http://localhost:8080/actuator/health}"
|
|
MAX_RETRIES="${MAX_RETRIES:-30}"
|
|
RETRY_INTERVAL="${RETRY_INTERVAL:-2}"
|
|
|
|
readonly CLR_RED='\033[0;31m'
|
|
readonly CLR_GREEN='\033[0;32m'
|
|
readonly CLR_YELLOW='\033[1;33m'
|
|
readonly CLR_BLUE='\033[0;34m'
|
|
readonly CLR_NC='\033[0m'
|
|
|
|
_log_info() { echo -e "${CLR_GREEN}[INFO]${CLR_NC} $*"; }
|
|
_log_warn() { echo -e "${CLR_YELLOW}[WARN]${CLR_NC} $*" >&2; }
|
|
_log_error() { echo -e "${CLR_RED}[ERROR]${CLR_NC} $*" >&2; }
|
|
_log_step() { echo ""; echo -e "${CLR_BLUE}==== $* ====${CLR_NC}"; }
|
|
|
|
# -------------------------------------------------------------------------------
|
|
# Health Check
|
|
# -------------------------------------------------------------------------------
|
|
main() {
|
|
_log_step "Health Check: ${HEALTH_URL}"
|
|
|
|
local attempt=1
|
|
while [[ $attempt -le $MAX_RETRIES ]]; do
|
|
_log_info "Intento ${attempt}/${MAX_RETRIES}..."
|
|
|
|
if curl -sf "${HEALTH_URL}" | grep -q '"status":"UP"'; then
|
|
_log_info "Health check PASÓ - API saludable"
|
|
return 0
|
|
fi
|
|
|
|
if [[ $attempt -lt $MAX_RETRIES ]]; then
|
|
_log_warn "API no responde aún, reintentando en ${RETRY_INTERVAL}s..."
|
|
sleep "${RETRY_INTERVAL}"
|
|
fi
|
|
|
|
((attempt++))
|
|
done
|
|
|
|
_log_error "Health check FALLÓ después de ${MAX_RETRIES} intentos"
|
|
return 1
|
|
}
|
|
|
|
main "$@"
|