Files
danyang-match/infrastructure/scripts/first-day-monitoring.sh
T

68 lines
2.4 KiB
Bash

#!/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 "============================================"