34 lines
855 B
Bash
34 lines
855 B
Bash
#!/bin/sh
|
|
set -eu
|
|
HOST="${HEALTH_HOST:-127.0.0.1}"
|
|
PORT="${HEALTH_PORT:-8080}"
|
|
LIVENESS_PATH="${LIVENESS_PATH:-/health/liveness}"
|
|
READINESS_PATH="${READINESS_PATH:-/health/readiness}"
|
|
USER_AGENT="stellaops-healthcheck"
|
|
|
|
fetch() {
|
|
target_path="$1"
|
|
url="http://${HOST}:${PORT}${target_path}"
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -sf --max-time "${HEALTH_TIMEOUT:-4}" \
|
|
-H "User-Agent: ${USER_AGENT}" \
|
|
"$url" >/dev/null
|
|
elif command -v wget >/dev/null 2>&1; then
|
|
wget -qO- "$url" \
|
|
--header="User-Agent: ${USER_AGENT}" \
|
|
--timeout="${HEALTH_TIMEOUT:-4}" >/dev/null
|
|
else
|
|
# Fallback: bash /dev/tcp (liveness only, no HTTP headers)
|
|
exec 3<>"/dev/tcp/${HOST}/${PORT}" && exec 3>&-
|
|
fi
|
|
}
|
|
|
|
fail=0
|
|
if ! fetch "$LIVENESS_PATH"; then
|
|
fail=1
|
|
fi
|
|
if ! fetch "$READINESS_PATH"; then
|
|
fail=1
|
|
fi
|
|
exit "$fail"
|