mapletree/lxc1/p1-ingress/keepalived/check_services.sh
2026-01-31 11:34:04 -07:00

41 lines
No EOL
965 B
Bash

#!/bin/bash
# Arguments passed from Keepalived:
# $1 = Primary Service Name (e.g., "gitea")
# $2 = Dependency Name (e.g., "postgres") - Optional
SERVICE_LIST="$1"
DEPENDENCY="$2"
# Function to check container status
check_container() {
local container_name=$1
if [ -z "$container_name" ]; then return 0; fi
# Check if container is running
# We use --filter to ensure we only get a match for the exact name
STATUS=$(docker inspect -f '{{.State.Running}}' "$container_name" 2>/dev/null)
if [ "$STATUS" == "true" ]; then
return 0
else
return 1
fi
}
# 1. Check Primary Service
if ! check_container "$SERVICE_LIST"; then
echo "CRITICAL: Service $SERVICE_LIST is down."
exit 1
fi
# 2. Check Dependency (if provided)
if [ -n "$DEPENDENCY" ]; then
if ! check_container "$DEPENDENCY"; then
echo "CRITICAL: Dependency $DEPENDENCY is down."
exit 1
fi
fi
# 3. Everything is healthy
exit 0