Files
MatchLiveTv/infra/scripts/cron/scan_ops_logs.sh
Emiliano Frascaro 208664848e Rende persistenti i log di produzione e protegge il deploy.
Monta /app/log sul disco video, sposta i cron log sullo stesso path, esclude log/ dal sync rsync e aggiunge pulizia volumi Docker obsoleti.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 09:23:42 +02:00

36 lines
1020 B
Bash

#!/usr/bin/env bash
# Scansiona log Docker recenti e invia pattern sospetti a Rails ops:ingest_logs.
set -euo pipefail
ROOT="${MATCHLIVETV_INFRA:-/opt/matchlivetv/infra}"
SINCE="${OPS_LOG_SCAN_SINCE:-10m}"
ENV_FILE="${ROOT}/.env"
VIDEOS_ROOT="/media/videos/matchlivetv"
TMP="$(mktemp)"
trap 'rm -f "$TMP"' EXIT
if [ -f "$ENV_FILE" ]; then
line="$(grep -E '^MATCHLIVETV_VIDEOS_ROOT=' "$ENV_FILE" 2>/dev/null | tail -1 || true)"
if [ -n "$line" ]; then
VIDEOS_ROOT="${line#MATCHLIVETV_VIDEOS_ROOT=}"
VIDEOS_ROOT="${VIDEOS_ROOT%\"}"
VIDEOS_ROOT="${VIDEOS_ROOT#\"}"
fi
fi
LOG_DIR="${MATCHLIVETV_LOG_DIR:-${VIDEOS_ROOT}/log}"
cd "$ROOT"
docker compose -f docker-compose.prod.yml logs --since "$SINCE" rails sidekiq mediamtx 2>/dev/null > "$TMP" || true
if compgen -G "${LOG_DIR}/youtube_relay_*.log" > /dev/null 2>&1; then
cat "${LOG_DIR}"/youtube_relay_*.log >> "$TMP" 2>/dev/null || true
fi
if [[ ! -s "$TMP" ]]; then
exit 0
fi
"${ROOT}/scripts/cron/run_rails_task.sh" ops:ingest_logs["$TMP"]