iride-setup/checks/health.sh

35 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# IRIDE — verifica post-install / post-update (Tecnotel Servizi SRL)
# Uso: iride-health (copiato in /usr/local/bin dal web installer; exit 1 se qualcosa non va)
set -uo pipefail
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok=0; ko=0
pass() { echo -e " ${GREEN}${NC} $1"; ok=$((ok+1)); }
fail() { echo -e " ${RED}${NC} $1"; ko=$((ko+1)); }
echo "IRIDE health check"
for svc in iride-api iride-worker iride-scheduler; do
systemctl is-active --quiet "$svc" && pass "$svc attivo" || fail "$svc non attivo (journalctl -u $svc -n 50)"
done
systemctl is-active --quiet nginx && pass "nginx attivo" || fail "nginx non attivo"
nginx -t >/dev/null 2>&1 && pass "configurazione nginx valida" || fail "nginx -t fallito"
for i in 1 2 3 4 5; do
HEALTH="$(curl -fsS http://127.0.0.1:8080/api/health 2>/dev/null)" && break
sleep 2
done
if [[ -n "${HEALTH:-}" ]]; then
pass "API: $(echo "$HEALTH" | python3 -c 'import json,sys; d=json.load(sys.stdin); print("versione", d["version"], "| schema", d["schema_version"], "| job", d["jobs"])' 2>/dev/null)"
else
fail "API non risponde su http://127.0.0.1:8080/api/health"
fi
[[ -f /opt/iride/data/iride.db ]] && pass "database presente" || fail "database assente in /opt/iride/data"
PERM="$(stat -c '%a %U' /opt/iride/config/iride.json 2>/dev/null)"
[[ "$PERM" == "600 iride" ]] && pass "config 0600 iride" || fail "permessi config: ${PERM:-assente} (atteso 600 iride)"
FREE_GB=$(df -BG --output=avail /opt/iride | tail -1 | tr -dc '0-9')
[[ "${FREE_GB:-0}" -ge 5 ]] && pass "spazio disco: ${FREE_GB} GB liberi" || echo -e " ${YELLOW}!${NC} spazio disco basso: ${FREE_GB:-?} GB"
echo " $ok ok, $ko errori"
[[ $ko -eq 0 ]]