Some checks failed
CD Pipeline / deploy (push) Failing after 59s
- 建立 Gitea Actions CD pipeline (.gitea/workflows/cd.yaml) - 部署模式: rsync Python 檔案至 188 → docker restart (volume mount) - Dockerfile/requirements 變動時自動重建 Docker image - 部署通知: Telegram (開始/成功/失敗) - 健康檢查: https://mo.wooo.work/health (最多 5 次重試) - 同步最新 CLAUDE.md / ADR-008 / memory (2026-04-19) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
90 lines
3.6 KiB
Bash
Executable File
90 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# MOMO Pro System - 服務健康檢查腳本
|
|
# 用途:變更前/後快速驗證所有服務狀態
|
|
# 使用:./scripts/health-check.sh [pre|post]
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
MODE=${1:-check}
|
|
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
|
|
LOG_FILE="/tmp/health_check_$(date '+%Y%m%d_%H%M%S').log"
|
|
|
|
# 顏色定義
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${BLUE}╔════════════════════════════════════════════════════════════════╗${NC}"
|
|
echo -e "${BLUE}║ MOMO Pro System 服務健康檢查 - $TIMESTAMP ║${NC}"
|
|
echo -e "${BLUE}╠════════════════════════════════════════════════════════════════╣${NC}"
|
|
|
|
check_service() {
|
|
local name=$1
|
|
local url=$2
|
|
local expected_code=${3:-200}
|
|
|
|
response=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 "$url" 2>/dev/null || echo "000")
|
|
|
|
if [ "$response" = "$expected_code" ] || [ "$response" = "302" ]; then
|
|
echo -e " ${GREEN}✅${NC} $name: $response"
|
|
return 0
|
|
else
|
|
echo -e " ${RED}❌${NC} $name: $response (expected $expected_code)"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
check_docker() {
|
|
echo -e "\n${YELLOW}📦 Docker 容器狀態:${NC}"
|
|
ssh wooo@192.168.0.110 "docker ps --format 'table {{.Names}}\t{{.Status}}' | grep -E '(superset|gitlab|n8n|registry)' | head -10" 2>/dev/null || echo " 無法連接"
|
|
}
|
|
|
|
check_k8s() {
|
|
echo -e "\n${YELLOW}🌐 K8s Pods:${NC}"
|
|
ssh wooo@192.168.0.110 "kubectl get pods -n momo --no-headers 2>/dev/null" || echo " 無法取得 K8s 狀態"
|
|
}
|
|
|
|
# 主要健康檢查
|
|
echo -e "\n${YELLOW}🔍 服務健康檢查:${NC}"
|
|
FAILED=0
|
|
|
|
check_service "mo.wooo.work" "https://mo.wooo.work/health" || ((FAILED++))
|
|
check_service "Superset 登入" "https://monitor.wooo.work/superset/login/" || ((FAILED++))
|
|
check_service "GitLab" "http://192.168.0.110:8929/" "302" || ((FAILED++))
|
|
check_service "n8n" "http://192.168.0.110:5678/" || ((FAILED++))
|
|
check_service "Registry" "https://registry.wooo.work/v2/" "401" || ((FAILED++))
|
|
check_service "CI/CD Dashboard" "https://mo.wooo.work/cicd" || ((FAILED++))
|
|
check_service "Monitor 首頁" "https://monitor.wooo.work/" || ((FAILED++))
|
|
|
|
# Docker 容器
|
|
check_docker
|
|
|
|
# K8s Pods
|
|
check_k8s
|
|
|
|
# 結果摘要
|
|
echo -e "\n${BLUE}╠════════════════════════════════════════════════════════════════╣${NC}"
|
|
if [ $FAILED -eq 0 ]; then
|
|
echo -e "${BLUE}║${NC} ${GREEN}✅ 所有服務正常${NC}"
|
|
else
|
|
echo -e "${BLUE}║${NC} ${RED}⚠️ $FAILED 個服務異常${NC}"
|
|
fi
|
|
echo -e "${BLUE}╚════════════════════════════════════════════════════════════════╝${NC}"
|
|
|
|
# 保存結果
|
|
if [ "$MODE" = "pre" ]; then
|
|
echo "$TIMESTAMP - PRE-CHANGE" > /tmp/last_health_check.txt
|
|
echo "Failed: $FAILED" >> /tmp/last_health_check.txt
|
|
echo -e "\n${YELLOW}📝 變更前快照已保存${NC}"
|
|
elif [ "$MODE" = "post" ]; then
|
|
echo "$TIMESTAMP - POST-CHANGE" >> /tmp/last_health_check.txt
|
|
echo "Failed: $FAILED" >> /tmp/last_health_check.txt
|
|
echo -e "\n${YELLOW}📝 變更後檢查完成${NC}"
|
|
fi
|
|
|
|
exit $FAILED
|