67 lines
2.6 KiB
Bash
67 lines
2.6 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# ══════════════════════════════════════════════════
|
|||
|
|
# check_health.sh
|
|||
|
|
# 检查所有服务的健康状态和资源使用
|
|||
|
|
# 用法:bash scripts/check_health.sh
|
|||
|
|
# ══════════════════════════════════════════════════
|
|||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|||
|
|
cd "$PROJECT_DIR"
|
|||
|
|
|
|||
|
|
GREEN='\033[0;32m'; RED='\033[0;31m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; NC='\033[0m'
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo -e "${BLUE}══════════════════════════════════════════${NC}"
|
|||
|
|
echo -e "${BLUE} 服务健康检查报告${NC}"
|
|||
|
|
echo -e "${BLUE}══════════════════════════════════════════${NC}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Docker 服务状态
|
|||
|
|
echo -e "${BLUE}【Docker Compose 服务状态】${NC}"
|
|||
|
|
docker compose ps --format "table {{.Service}}\t{{.Status}}\t{{.Ports}}"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# HTTP 端点检查
|
|||
|
|
echo -e "${BLUE}【HTTP 健康端点】${NC}"
|
|||
|
|
check_http() {
|
|||
|
|
local name=$1; local url=$2
|
|||
|
|
if curl -sf --max-time 5 "$url" > /dev/null 2>&1; then
|
|||
|
|
echo -e " ${GREEN}[OK]${NC} $name ($url)"
|
|||
|
|
else
|
|||
|
|
echo -e " ${RED}[FAIL]${NC} $name ($url)"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
check_http "API 网关" "http://localhost/health"
|
|||
|
|
check_http "业务后端" "http://localhost:8000/health"
|
|||
|
|
check_http "嵌入服务" "http://localhost:8010/health"
|
|||
|
|
check_http "解析服务" "http://localhost:8011/health"
|
|||
|
|
check_http "Milvus" "http://localhost:9091/healthz"
|
|||
|
|
check_http "Neo4j" "http://localhost:7474"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 资源使用
|
|||
|
|
echo -e "${BLUE}【容器资源使用】${NC}"
|
|||
|
|
docker stats --no-stream --format \
|
|||
|
|
"table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" \
|
|||
|
|
2>/dev/null | head -15
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 磁盘使用
|
|||
|
|
echo -e "${BLUE}【磁盘使用】${NC}"
|
|||
|
|
df -h . | tail -1 | awk '{print " 项目目录:已用 "$3",可用 "$4"(" $5 " 使用率)"}'
|
|||
|
|
docker system df 2>/dev/null | head -6
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# LLM 配置检查
|
|||
|
|
echo -e "${BLUE}【LLM API 配置】${NC}"
|
|||
|
|
source .env 2>/dev/null || true
|
|||
|
|
if [[ -n "${DEEPSEEK_API_KEY:-}" ]]; then
|
|||
|
|
echo -e " ${GREEN}[OK]${NC} DeepSeek API Key 已配置"
|
|||
|
|
elif [[ -n "${DASHSCOPE_API_KEY:-}" ]]; then
|
|||
|
|
echo -e " ${GREEN}[OK]${NC} DashScope (Qwen) API Key 已配置"
|
|||
|
|
else
|
|||
|
|
echo -e " ${YELLOW}[WARN]${NC} 未配置 LLM API Key(LLM 功能不可用)"
|
|||
|
|
fi
|
|||
|
|
echo ""
|