Initial commit: Momentry Core v0.1
- Rust-based digital asset management system - Video analysis: ASR, OCR, YOLO, Face, Pose - RAG capabilities with Qdrant vector database - Multi-database support: PostgreSQL, Redis, MongoDB - Monitoring system with launchd plists - n8n workflow automation integration
This commit is contained in:
151
scripts/troubleshoot.sh
Executable file
151
scripts/troubleshoot.sh
Executable file
@@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Momentry 服務故障排除快速參考
|
||||
# 用法: ./troubleshoot.sh [service]
|
||||
# 例如: ./troubleshoot.sh n8n
|
||||
|
||||
SERVICE=${1:-all}
|
||||
|
||||
echo "========================================"
|
||||
echo "Momentry 故障排除快速檢查"
|
||||
echo "========================================"
|
||||
echo ""
|
||||
|
||||
case "$SERVICE" in
|
||||
all)
|
||||
echo "執行所有服務健康檢查..."
|
||||
/Users/accusys/momentry_core_0.1/monitor/service/health_check.sh
|
||||
;;
|
||||
|
||||
postgresql|postgres|pg)
|
||||
echo "=== PostgreSQL 診斷 ==="
|
||||
echo "狀態: $(pg_isready -h localhost -p 5432 -U accusys 2>&1)"
|
||||
echo "連線測試: $(psql -U accusys -h localhost -d momentry -c 'SELECT 1' 2>&1 | head -1)"
|
||||
echo "數據庫列表:"
|
||||
psql -U accusys -h localhost -l 2>/dev/null | grep -v "rows)" || echo " 無法連線"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/postgresql.log"
|
||||
;;
|
||||
|
||||
redis)
|
||||
echo "=== Redis 診斷 ==="
|
||||
echo "狀態: $(redis-cli -a accusys ping 2>&1)"
|
||||
echo "記憶體: $(redis-cli -a accusys INFO memory 2>/dev/null | grep used_memory_human | head -1)"
|
||||
echo "連線數: $(redis-cli -a accusys INFO clients 2>/dev/null | grep connected_clients | head -1)"
|
||||
echo "Keys: $(redis-cli -a accusys DBSIZE 2>/dev/null)"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/redis.log"
|
||||
;;
|
||||
|
||||
mariadb|mysql)
|
||||
echo "=== MariaDB 診斷 ==="
|
||||
echo "狀態: $(mysql -u accusys -e 'SELECT 1' 2>&1 | head -1)"
|
||||
echo "用戶:"
|
||||
mysql -u accusys -e "SELECT user, host FROM mysql.user;" 2>/dev/null || echo " 無法連線"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/mariadb.log"
|
||||
;;
|
||||
|
||||
n8n)
|
||||
echo "=== n8n 診斷 ==="
|
||||
echo "Web 訪問: $(curl -s -o /dev/null -w '%{http_code}' http://localhost:8085/ 2>&1)"
|
||||
echo "Port 8085: $(lsof -i :8085 | tail -1)"
|
||||
echo ""
|
||||
echo "PostgreSQL 連線:"
|
||||
psql -U n8n -h localhost -d n8n -c "SELECT COUNT(*) as workflows FROM workflow_entity;" 2>&1
|
||||
psql -U n8n -h localhost -d n8n -c "SELECT email, \"firstName\", \"roleSlug\" FROM \"user\";" 2>&1
|
||||
echo ""
|
||||
echo "Redis Queue:"
|
||||
redis-cli -a accusys LLEN bull:n8n:wait 2>/dev/null || echo " 無法連線"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/n8n-main.log"
|
||||
;;
|
||||
|
||||
ollama)
|
||||
echo "=== Ollama 診斷 ==="
|
||||
echo "API 狀態: $(curl -s http://localhost:11434/api/tags 2>&1 | head -1)"
|
||||
echo "模型列表:"
|
||||
curl -s http://localhost:11434/api/tags 2>/dev/null | jq -r '.models[].name' 2>/dev/null || echo " 無法獲取"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/ollama.log"
|
||||
;;
|
||||
|
||||
qdrant)
|
||||
echo "=== Qdrant 診斷 ==="
|
||||
echo "API 狀態: $(curl -s -o /dev/null -w '%{http_code}' -H 'api-key: Test3200Test3200' http://localhost:6333/ 2>&1)"
|
||||
echo "Collections:"
|
||||
curl -s -H "api-key: Test3200Test3200" http://localhost:6333/collections 2>/dev/null | jq -r '.result[].name' 2>/dev/null || echo " 無法獲取"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/qdrant.log"
|
||||
;;
|
||||
|
||||
caddy)
|
||||
echo "=== Caddy 診斷 ==="
|
||||
echo "Admin API: $(curl -s http://localhost:2019/config/ 2>&1 | head -1)"
|
||||
echo "Port 2019: $(lsof -i :2019 | tail -1)"
|
||||
echo "Port 443: $(lsof -i :443 | tail -1)"
|
||||
echo ""
|
||||
echo "配置: cat /Users/accusys/momentry/etc/Caddyfile"
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/caddy.log"
|
||||
;;
|
||||
|
||||
gitea)
|
||||
echo "=== Gitea 診斷 ==="
|
||||
echo "Web: $(curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/ 2>&1)"
|
||||
echo "Port 3000: $(lsof -i :3000 | tail -1)"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/gitea.log"
|
||||
;;
|
||||
|
||||
sftpgo)
|
||||
echo "=== SFTPGo 診斷 ==="
|
||||
echo "HTTP: $(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/ 2>&1)"
|
||||
echo "SFTP Port 2022: $(lsof -i :2022 | tail -1)"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/sftpgo.log"
|
||||
;;
|
||||
|
||||
mongodb|mongo)
|
||||
echo "=== MongoDB 診斷 ==="
|
||||
mongosh --quiet --username accusys --password Test3200Test3200 --authenticationDatabase admin --eval "db.adminCommand('ping')" 2>&1
|
||||
echo "數據庫:"
|
||||
mongosh --quiet --username accusys --password Test3200Test3200 --authenticationDatabase admin --eval "db.adminCommand({listDatabases:1})" 2>&1 | grep name || echo " 無法獲取"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/mongodb.log"
|
||||
;;
|
||||
|
||||
php)
|
||||
echo "=== PHP-FPM 診斷 ==="
|
||||
echo "進程: $(pgrep -a php-fpm | head -1)"
|
||||
echo "Port 9000: $(lsof -i :9000 | tail -1)"
|
||||
echo ""
|
||||
echo "日誌: tail -50 /Users/accusys/momentry/log/php.error.log"
|
||||
;;
|
||||
|
||||
rustdesk)
|
||||
echo "=== RustDesk 診斷 ==="
|
||||
echo "hbbs: $(pgrep -a hbbs | head -1)"
|
||||
echo "hbbr: $(pgrep -a hbbr | head -1)"
|
||||
echo "Port 21116: $(lsof -i :21116 | tail -1)"
|
||||
echo "Port 21117: $(lsof -i :21117 | tail -1)"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "用法: $0 [service]"
|
||||
echo ""
|
||||
echo "可用服務:"
|
||||
echo " all - 執行所有健康檢查"
|
||||
echo " postgresql - PostgreSQL 診斷"
|
||||
echo " redis - Redis 診斷"
|
||||
echo " mariadb - MariaDB 診斷"
|
||||
echo " n8n - n8n 診斷"
|
||||
echo " ollama - Ollama 診斷"
|
||||
echo " qdrant - Qdrant 診斷"
|
||||
echo " caddy - Caddy 診斷"
|
||||
echo " gitea - Gitea 診斷"
|
||||
echo " sftpgo - SFTPGo 診斷"
|
||||
echo " mongodb - MongoDB 診斷"
|
||||
echo " php - PHP-FPM 診斷"
|
||||
echo " rustdesk - RustDesk 診斷"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user