#!/bin/bash # 健康检查脚本 - 检查所有依赖服务是否正常 set -e echo "🏥 开始健康检查..." echo "" GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # 检查计数 PASS=0 FAIL=0 # 检查函数 check_service() { local service_name=$1 local check_command=$2 echo -n "Checking $service_name ... " if eval "$check_command" > /dev/null 2>&1; then echo -e "${GREEN}✓ OK${NC}" PASS=$((PASS + 1)) else echo -e "${RED}✗ FAIL${NC}" FAIL=$((FAIL + 1)) fi } # 检查 PostgreSQL echo -e "${YELLOW}=== 数据库服务 ===${NC}" check_service "PostgreSQL" "pg_isready -h localhost -p 5432" # 检查 Redis echo -e "${YELLOW}=== 缓存服务 ===${NC}" check_service "Redis" "redis-cli -h localhost -p 6379 ping" # 检查 Kafka echo -e "${YELLOW}=== 消息队列服务 ===${NC}" check_service "Kafka" "nc -zv localhost 9092" # 检查应用服务 echo -e "${YELLOW}=== 应用服务 ===${NC}" check_service "Identity Service" "curl -f http://localhost:3000/health" # 检查 Swagger 文档 echo -e "${YELLOW}=== API 文档 ===${NC}" check_service "Swagger UI" "curl -f http://localhost:3000/api" echo "" echo -e "${YELLOW}======================================${NC}" echo -e "${YELLOW}健康检查完成!${NC}" echo -e "${GREEN}正常: $PASS${NC}" echo -e "${RED}异常: $FAIL${NC}" echo -e "${YELLOW}======================================${NC}" if [ $FAIL -eq 0 ]; then echo -e "${GREEN}✓ 所有服务正常!${NC}" exit 0 else echo -e "${RED}✗ 存在异常的服务!${NC}" exit 1 fi