125 lines
3.5 KiB
Bash
125 lines
3.5 KiB
Bash
#!/bin/bash
|
|
|
|
# ============================================
|
|
# FLNXI素材库 - 健康检查脚本
|
|
# ============================================
|
|
|
|
set -e
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo "========================================"
|
|
echo " 系统健康检查"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# 检测 docker-compose 命令
|
|
if docker compose version &> /dev/null 2>&1; then
|
|
DOCKER_COMPOSE="docker compose"
|
|
elif command -v docker-compose &> /dev/null; then
|
|
DOCKER_COMPOSE="docker-compose"
|
|
else
|
|
echo -e "${RED}错误: 未找到 docker-compose 命令${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 加载环境变量
|
|
if [ -f .env ]; then
|
|
source .env
|
|
else
|
|
echo -e "${YELLOW}警告: 未找到 .env 文件${NC}"
|
|
fi
|
|
|
|
# 检查服务状态
|
|
echo -e "${BLUE}[1/6]${NC} 检查服务状态..."
|
|
echo ""
|
|
$DOCKER_COMPOSE ps
|
|
echo ""
|
|
|
|
# 检查 PostgreSQL
|
|
echo -e "${BLUE}[2/6]${NC} 检查数据库..."
|
|
if docker compose exec -T postgres pg_isready -U postgres &> /dev/null; then
|
|
echo -e "${GREEN}✓ PostgreSQL 运行正常${NC}"
|
|
|
|
# 检查数据库连接
|
|
DB_COUNT=$(docker compose exec -T postgres psql -U postgres -d flnxi -t -c "SELECT COUNT(*) FROM users;" 2>/dev/null | xargs)
|
|
echo " 用户数: $DB_COUNT"
|
|
else
|
|
echo -e "${RED}✗ PostgreSQL 未运行或无法连接${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 检查 MinIO
|
|
echo -e "${BLUE}[3/6]${NC} 检查对象存储..."
|
|
if curl -f http://localhost:${MINIO_API_PORT:-9000}/minio/health/live &> /dev/null; then
|
|
echo -e "${GREEN}✓ MinIO 运行正常${NC}"
|
|
|
|
# 检查 bucket
|
|
if docker compose exec -T minio mc alias set local http://localhost:9000 ${MINIO_ROOT_USER:-minioadmin} ${MINIO_ROOT_PASSWORD:-minioadmin123456} &> /dev/null; then
|
|
BUCKETS=$(docker compose exec -T minio mc ls local 2>/dev/null | wc -l)
|
|
echo " Bucket 数量: $BUCKETS"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗ MinIO 未运行或无法访问${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 检查应用
|
|
echo -e "${BLUE}[4/6]${NC} 检查应用服务..."
|
|
if curl -f http://localhost:${APP_PORT:-4320}/api/health &> /dev/null; then
|
|
echo -e "${GREEN}✓ 应用运行正常${NC}"
|
|
else
|
|
echo -e "${RED}✗ 应用未运行或无法访问${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 检查磁盘空间
|
|
echo -e "${BLUE}[5/6]${NC} 检查磁盘空间..."
|
|
df -h | grep -E "Filesystem|/$"
|
|
echo ""
|
|
DISK_USAGE=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
|
|
if [ $DISK_USAGE -gt 80 ]; then
|
|
echo -e "${YELLOW}⚠ 警告: 磁盘使用率超过 80%${NC}"
|
|
else
|
|
echo -e "${GREEN}✓ 磁盘空间充足${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# 检查 Docker 资源
|
|
echo -e "${BLUE}[6/6]${NC} 检查 Docker 资源..."
|
|
docker system df
|
|
echo ""
|
|
|
|
# 检查容器内存使用
|
|
echo "容器资源使用:"
|
|
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
|
|
echo ""
|
|
|
|
# 总结
|
|
echo "========================================"
|
|
echo -e "${GREEN} 健康检查完成${NC}"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# 检查是否有停止的容器
|
|
STOPPED=$(docker compose ps -q | xargs docker inspect -f '{{.State.Status}}' 2>/dev/null | grep -c "exited" || true)
|
|
if [ $STOPPED -gt 0 ]; then
|
|
echo -e "${YELLOW}⚠ 检测到 $STOPPED 个已停止的容器${NC}"
|
|
echo " 运行以下命令重启: docker compose restart"
|
|
else
|
|
echo -e "${GREEN}✓ 所有服务运行正常${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo "访问地址:"
|
|
echo " 应用: http://${SERVER_IP:-localhost}:${APP_PORT:-4320}"
|
|
echo " MinIO: http://${SERVER_IP:-localhost}:${MINIO_CONSOLE_PORT:-9001}"
|
|
echo ""
|
|
|
|
|