35 lines
1.7 KiB
Bash
Executable File
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 ]]
|