feat: add Transmission monitoring to dashboard
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m37s
Run Tests / Backend Tests (push) Failing after 4m7s
Run Tests / Frontend Tests (push) Failing after 2m48s
Run Tests / Test Summary (push) Failing after 12s

- Add backend API for Transmission RPC integration
- Create frontend page with torrent and tracker status
- Add health monitoring script
- Display daemon status, speeds, and tracker errors
- Support reannounce, start/stop actions
This commit is contained in:
Gan, Jimmy
2026-04-10 19:25:52 +08:00
parent c180a68f36
commit 6ea64bc19e
6 changed files with 556 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash
# Transmission Health Check Script
# Monitors Transmission daemon and tracker connectivity
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN}"
TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID}"
send_alert() {
local message="$1"
if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d "chat_id=${TELEGRAM_CHAT_ID}" \
-d "text=🚨 Transmission Alert: ${message}" \
-d "parse_mode=HTML" > /dev/null
fi
}
# Check if Transmission daemon is running
if ! ps aux | grep transmission-daemon | grep sc-transmission | grep -v grep > /dev/null; then
send_alert "Transmission daemon is not running!"
echo "ERROR: Transmission daemon is not running"
exit 1
fi
# Check recent logs for tracker errors
LOG_FILE="/volume1/@appdata/transmission/transmission.log"
if [ -f "$LOG_FILE" ]; then
# Count recent tracker errors (last 100 lines)
ERROR_COUNT=$(tail -100 "$LOG_FILE" | grep -c "Announce error: Could not connect to tracker")
if [ "$ERROR_COUNT" -gt 50 ]; then
send_alert "High number of tracker errors detected: ${ERROR_COUNT} in recent logs"
echo "WARNING: ${ERROR_COUNT} tracker errors found"
fi
# Check if log is stale (no updates in last hour)
LOG_AGE=$(find "$LOG_FILE" -mmin +60 2>/dev/null)
if [ -n "$LOG_AGE" ]; then
send_alert "Transmission log hasn't been updated in over an hour - daemon may be stuck"
echo "WARNING: Log file is stale"
fi
fi
# Check if RPC port is listening
if ! netstat -tln 2>/dev/null | grep -q ":9091 " && ! ss -tln 2>/dev/null | grep -q ":9091 "; then
send_alert "Transmission RPC port 9091 is not listening"
echo "ERROR: RPC port not listening"
exit 1
fi
echo "OK: Transmission health check passed"
exit 0