Files
kt-financial-system/scripts/check-deployment.sh
你的用户名 faafcf926a
Some checks failed
Deploy to Production / Build and Test (push) Has been cancelled
Deploy to Production / Deploy to Server (push) Has been cancelled
ci: 增强部署诊断能力
- 添加容器状态和端口占用检查
- 添加容器内部监听情况诊断
- 增加详细的健康检查日志(100行)
- 健康检查重试次数从5次增加到10次
- 第5次失败时执行深度诊断
- 添加独立的部署健康检查脚本

改进点:
1. 诊断端口冲突问题
2. 检查容器内部监听配置
3. 增加详细的错误日志输出
4. SSH回连获取实时状态
2025-11-04 21:23:33 +08:00

95 lines
2.5 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 部署健康检查脚本
echo "================================================"
echo "KT财务系统部署健康检查"
echo "================================================"
echo ""
TARGET_HOST="172.16.74.149"
TARGET_PORT="8080"
MAX_RETRIES=10
RETRY_INTERVAL=5
echo "🔍 检查目标: http://${TARGET_HOST}:${TARGET_PORT}"
echo ""
# 1. 网络连通性检查
echo "1⃣ 检查网络连通性..."
if ping -c 3 $TARGET_HOST > /dev/null 2>&1; then
echo " ✅ 主机 $TARGET_HOST 可达"
else
echo " ❌ 主机 $TARGET_HOST 不可达"
exit 1
fi
# 2. 端口检查
echo ""
echo "2⃣ 检查端口连接 (${MAX_RETRIES}次重试)..."
for i in $(seq 1 $MAX_RETRIES); do
echo " 尝试 $i/$MAX_RETRIES..."
if nc -zv -w 3 $TARGET_HOST $TARGET_PORT 2>&1 | grep -q "succeeded\|Connected"; then
echo " ✅ 端口 $TARGET_PORT 已开放"
PORT_OPEN=true
break
fi
if [ $i -lt $MAX_RETRIES ]; then
echo " ⏳ 等待 ${RETRY_INTERVAL}秒后重试..."
sleep $RETRY_INTERVAL
fi
done
if [ "$PORT_OPEN" != "true" ]; then
echo " ❌ 端口 $TARGET_PORT 无法连接"
echo ""
echo "⚠️ 可能的原因:"
echo " - Docker容器未启动"
echo " - 端口映射配置错误"
echo " - 防火墙阻止连接"
echo " - 服务启动失败"
exit 1
fi
# 3. HTTP服务检查
echo ""
echo "3⃣ 检查HTTP服务..."
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 http://${TARGET_HOST}:${TARGET_PORT}/ 2>/dev/null)
if [ -z "$HTTP_CODE" ]; then
echo " ❌ 无法获取HTTP响应"
exit 1
fi
echo " HTTP状态码: $HTTP_CODE"
if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "301" ] || [ "$HTTP_CODE" = "302" ]; then
echo " ✅ HTTP服务正常"
else
echo " ⚠️ HTTP状态码异常: $HTTP_CODE"
fi
# 4. 响应时间检查
echo ""
echo "4⃣ 检查响应时间..."
RESPONSE_TIME=$(curl -s -o /dev/null -w "%{time_total}" --connect-timeout 5 http://${TARGET_HOST}:${TARGET_PORT}/ 2>/dev/null)
if [ -n "$RESPONSE_TIME" ]; then
echo " 响应时间: ${RESPONSE_TIME}"
if [ $(echo "$RESPONSE_TIME < 3" | bc) -eq 1 ]; then
echo " ✅ 响应时间正常"
else
echo " ⚠️ 响应时间较慢"
fi
fi
echo ""
echo "================================================"
echo "✅ 部署健康检查完成"
echo "================================================"
echo ""
echo "🌐 访问地址: http://${TARGET_HOST}:${TARGET_PORT}"