AvanzaCast/scripts/collect_token_server_diagnostics.sh
Cesar Mendivil 8b458a3ddf feat: add initial LiveKit Meet integration with utility scripts, configs, and core components
- Add Next.js app structure with base configs, linting, and formatting
- Implement LiveKit Meet page, types, and utility functions
- Add Docker, Compose, and deployment scripts for backend and token server
- Provide E2E and smoke test scaffolding with Puppeteer and Playwright helpers
- Include CSS modules and global styles for UI
- Add postMessage and studio integration utilities
- Update package.json with dependencies and scripts for development and testing
2025-11-20 12:50:38 -07:00

71 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# scripts/collect_token_server_diagnostics.sh
# Run a set of diagnostics against the token server and the host to gather logs and outputs
# Usage: sudo ./scripts/collect_token_server_diagnostics.sh https://avanzacast-servertokens.bfzqqk.easypanel.host /tmp/token-diagnostics
set -euo pipefail
SERVER=${1:-}
OUTDIR=${2:-/tmp/token-diagnostics}
mkdir -p "$OUTDIR"
if [ -z "$SERVER" ]; then
echo "Usage: $0 <TOKEN_SERVER_BASE_URL> [OUTDIR]"
exit 2
fi
echo "Collecting diagnostics for $SERVER into $OUTDIR"
echo "=== health ===" > "$OUTDIR/health.txt" 2>&1
curl -i -m 10 "$SERVER/health" >> "$OUTDIR/health.txt" 2>&1 || true
echo "=== options_preflight.txt ===" > "$OUTDIR/options_preflight.txt" 2>&1
curl -i -X OPTIONS -m 10 "$SERVER/api/session" -H "Origin: http://localhost:5176" >> "$OUTDIR/options_preflight.txt" 2>&1 || true
echo "=== post_create_session.txt ===" > "$OUTDIR/post_create_session.txt" 2>&1
curl -i -X POST -m 15 "$SERVER/api/session" -H "Content-Type: application/json" -d '{"room":"diag-room","username":"diag-user"}' >> "$OUTDIR/post_create_session.txt" 2>&1 || true
# If server is localhost or we are running on the same host, collect system/container info
echo "=== local host checks (if run on server) ===" > "$OUTDIR/host_info.txt" 2>&1
uname -a >> "$OUTDIR/host_info.txt" 2>&1 || true
ps aux --sort=-%mem | head -n 50 >> "$OUTDIR/host_info.txt" 2>&1 || true
# Docker checks (if docker available)
if command -v docker >/dev/null 2>&1; then
echo "=== docker ps ===" >> "$OUTDIR/host_info.txt"
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' >> "$OUTDIR/host_info.txt" 2>&1 || true
echo "Collecting logs for services that contain 'token' in their name (if any)" >> "$OUTDIR/host_info.txt"
for c in $(docker ps --format '{{.Names}}' | grep -i token || true); do
echo "--- logs for $c ---" > "$OUTDIR/docker_logs_${c}.txt" 2>&1
docker logs --tail 500 "$c" >> "$OUTDIR/docker_logs_${c}.txt" 2>&1 || true
done
fi
# Compose logs (if docker-compose.yml present)
if [ -f docker-compose.yml ] || [ -f ./docker-compose.yml ]; then
echo "=== docker-compose logs (tail 500) ===" >> "$OUTDIR/host_info.txt"
docker-compose logs --tail=500 >> "$OUTDIR/host_info.txt" 2>&1 || true
fi
# systemd logs for common service names
for svc in token-server backend-api avanzacast-token; do
if systemctl list-units --type=service --all | grep -q "$svc"; then
echo "=== journalctl for $svc ===" > "$OUTDIR/journal_${svc}.txt" 2>&1
sudo journalctl -u "$svc" -n 500 --no-pager >> "$OUTDIR/journal_${svc}.txt" 2>&1 || true
fi
done
# network checks
ss -ltnp | head -n 200 > "$OUTDIR/ss.txt" 2>&1 || true
# Collect environment files if present (sanitize secrets manually afterwards)
if [ -f .env ]; then
cp .env "$OUTDIR/env.copy" || true
fi
# Pack results
tar -czf "$OUTDIR.tar.gz" -C "$(dirname "$OUTDIR")" "$(basename "$OUTDIR")" || true
echo "Diagnostics collected in: $OUTDIR and archive: $OUTDIR.tar.gz"
exit 0