Compare commits

...

1 Commits

Author SHA1 Message Date
2f0ae8d2d1 ops(diag): add archicratie deploy/edge diagnostic script
All checks were successful
CI / build-and-anchors (push) Successful in 1m29s
SMOKE / smoke (push) Successful in 14s
2026-02-21 17:45:52 +01:00

84
ops/diag/archicratie-diag.sh Executable file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -euo pipefail
CTX="${1:-/volume2/docker/archicratie-web/current}"
EDGE_PORT="${EDGE_PORT:-18080}"
STAGING_HOST="${STAGING_HOST:-staging.archicratie.trans-hands.synology.me}"
LIVE_HOST="${LIVE_HOST:-archicratie.trans-hands.synology.me}"
BLUE_CNAME="${BLUE_CNAME:-archicratie-web-blue}"
GREEN_CNAME="${GREEN_CNAME:-archicratie-web-green}"
BLUE_UPSTREAM="${BLUE_UPSTREAM:-8081}"
GREEN_UPSTREAM="${GREEN_UPSTREAM:-8082}"
echo "== Archicratie diagnostic =="
echo "CTX=$CTX"
echo "EDGE_PORT=$EDGE_PORT"
echo "STAGING_HOST=$STAGING_HOST"
echo "LIVE_HOST=$LIVE_HOST"
echo "BLUE_CNAME=$BLUE_CNAME BLUE_UPSTREAM=$BLUE_UPSTREAM"
echo "GREEN_CNAME=$GREEN_CNAME GREEN_UPSTREAM=$GREEN_UPSTREAM"
echo
echo "== 1) Containers status (docker ps) =="
sudo docker ps --filter name=archicratie-web --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo
echo "== 2) Port bindings (source de vérité: docker port) =="
echo "-- $BLUE_CNAME --"
sudo docker port "$BLUE_CNAME" 80 || true
echo "-- $GREEN_CNAME --"
sudo docker port "$GREEN_CNAME" 80 || true
echo
echo "== 3) Canonical upstream direct (8081/8082) =="
for p in "$BLUE_UPSTREAM" "$GREEN_UPSTREAM"; do
echo "-- 127.0.0.1:$p --"
curl -fsS "http://127.0.0.1:$p/" \
| grep -oE 'rel="canonical" href="[^"]+"' \
| head -n 1 || echo "WARN: canonical not found"
done
echo
echo "== 4) Edge routing proof (HEAD via Host header) =="
echo "-- staging via edge --"
curl -sSI -H "Host: $STAGING_HOST" "http://127.0.0.1:$EDGE_PORT/" \
| grep -iE 'HTTP/|location:|x-archi-router|x-archi-route' \
| head -n 30 || true
echo
echo "-- live via edge --"
curl -sSI -H "Host: $LIVE_HOST" "http://127.0.0.1:$EDGE_PORT/" \
| grep -iE 'HTTP/|location:|x-archi-router|x-archi-route' \
| head -n 30 || true
echo
echo "== 5) Traefik errors last 5m (hard fail only) =="
if sudo docker logs edge-traefik --since 5m | grep -Ei 'level=error|middleware .* does not exist|yaml' >/dev/null; then
echo "❌ FOUND traefik errors:"
sudo docker logs edge-traefik --since 5m | grep -Ei 'level=error|middleware .* does not exist|yaml' | tail -n 200
exit 2
else
echo "✅ OK: pas d'erreur critique traefik (5m)"
fi
echo
echo "== 6) Quick expectations (soft checks) =="
BLUE_BIND="$(sudo docker port "$BLUE_CNAME" 80 2>/dev/null || true)"
GREEN_BIND="$(sudo docker port "$GREEN_CNAME" 80 2>/dev/null || true)"
if echo "$BLUE_BIND" | grep -q "127.0.0.1:$BLUE_UPSTREAM"; then
echo "✅ BLUE binding OK: $BLUE_BIND"
else
echo "⚠️ BLUE binding unexpected: $BLUE_BIND"
fi
if echo "$GREEN_BIND" | grep -q "127.0.0.1:$GREEN_UPSTREAM"; then
echo "✅ GREEN binding OK: $GREEN_BIND"
else
echo "⚠️ GREEN binding unexpected: $GREEN_BIND"
fi
echo
echo "✅ Diagnostic complete."