#!/bin/bash # ============================================ # 丹阳公益婚恋服务平台 — 上线首日监控检查 # ============================================ set -euo pipefail echo "============================================" echo " 丹阳公益婚恋平台 — 上线首日监控" echo " $(date '+%Y-%m-%d %H:%M:%S')" echo "============================================" echo "" # 1. 服务健康 echo "【1. 服务健康】" docker compose -f "${COMPOSE_FILE:-../infrastructure/docker-compose.prod.yml}" ps 2>/dev/null | grep -E "backend|postgres|redis|nginx" || echo " ⚠️ Docker Compose未运行,跳过容器检查" # 2. 错误日志 echo "" echo "【2. 错误日志检查(最近100行)】" docker logs danyang-match-backend --tail 100 2>/dev/null | grep -i "error\|exception\|fatal" | tail -5 || echo " ✅ 无ERROR日志" # 3. 数据库连接 echo "" echo "【3. 数据库连接】" docker exec danyang-match-postgres pg_isready -U "${DB_USER:-danyang}" 2>/dev/null && \ echo " ✅ PostgreSQL连接正常" || echo " ❌ PostgreSQL连接异常" # 4. Redis连接 echo "" echo "【4. Redis连接】" docker exec danyang-match-redis redis-cli ping 2>/dev/null | grep -q PONG && \ echo " ✅ Redis连接正常" || echo " ⚠️ Redis不可用(可接受:非核心依赖)" # 5. 磁盘空间 echo "" echo "【5. 磁盘空间】" DISK_USAGE=$(df -h / 2>/dev/null | awk 'NR==2{print $5}' || echo "unknown") echo " 根分区使用: ${DISK_USAGE}" if [ "${DISK_USAGE%"%"}" -gt 80 ] 2>/dev/null; then echo " ⚠️ 磁盘使用超过80%,请关注" fi # 6. 内存使用 echo "" echo "【6. 内存使用】" docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}" 2>/dev/null || true # 7. 关键API响应时间 echo "" echo "【7. API响应时间】" for endpoint in "/api/v1/health/live" "/api/v1/users" "/api/v1/matches/recommendations"; do TIME=$(curl -s -o /dev/null -w "%{time_total}s" "http://localhost:8080${endpoint}" 2>/dev/null || echo "N/A") echo " ${endpoint}: ${TIME}" done # 8. 举报/申诉数量 echo "" echo "【8. 业务指标(生产环境)】" echo " ⚠️ 请通过后台管理界面查看实时统计数据" echo "" echo "============================================" echo " 上线首日监控完成" echo " 如发现异常,请立即执行:" echo " docker compose -f infrastructure/docker-compose.prod.yml restart" echo " 或联系技术负责人" echo "============================================"