Files
ljwx-harbor/harbor/scripts/health-check.sh
T
gaoandClaude 8f47f4e9ea feat: 完善 DevOps 工具链配置和优化 Harbor 服务
- 更新 Gitea runner 配置,支持优化的 CI/CD 环境
- 完善 Harbor HTTPS 配置和远程访问支持
- 优化 Harbor 日志配置,改用 json-file 驱动
- 添加 Docker 构建加速和代理缓存脚本
- 新增完整的文档和使用指南
- 添加 AI 开发工具集成配置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 06:39:53 +08:00

123 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
# Harbor 健康检查脚本
set -e
HARBOR_REGISTRY="192.168.1.83:8443"
HARBOR_USER="admin"
HARBOR_PASS="admin123"
echo "🏥 Harbor 健康检查开始..."
echo ""
# 检查 Docker 服务
echo "📊 Docker 服务状态:"
if docker info > /dev/null 2>&1; then
echo " ✅ Docker 服务正常"
else
echo " ❌ Docker 服务异常"
exit 1
fi
# 检查 Harbor 容器状态
echo ""
echo "📦 Harbor 容器状态:"
container_status=$(docker-compose ps)
echo "$container_status"
# 检查健康服务数量
healthy_count=$(echo "$container_status" | grep -c "healthy\|Up.*healthy" || echo "0")
total_count=$(echo "$container_status" | wc -l)
echo ""
echo "📈 服务状态: $healthy_count/$((total_count-1)) 服务健康"
# 检查 Harbor API
echo ""
echo "🌐 API 连接测试:"
if curl -k -s "${HARBOR_REGISTRY}/api/v2.0/systeminfo" > /dev/null; then
echo " ✅ Harbor API 连接正常"
# 获取 Harbor 版本信息
version_info=$(curl -k -s "${HARBOR_REGISTRY}/api/v2.0/systeminfo" | jq -r '.harbor_version')
echo " 📋 Harbor 版本: $version_info"
else
echo " ❌ Harbor API 连接失败"
fi
# 检查项目状态
echo ""
echo "📁 项目状态:"
projects=$(curl -k -s -u "${HARBOR_USER}:${HARBOR_PASS}" "${HARBOR_REGISTRY}/api/v2.0/projects" 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$projects" ]; then
project_count=$(echo "$projects" | jq '. | length' 2>/dev/null || echo "0")
echo " 📊 项目数量: $project_count"
if [ "$project_count" -gt 0 ]; then
echo " 📋 项目列表:"
echo "$projects" | jq -r '.[].name' 2>/dev/null | head -10 | sed 's/^/ - /'
fi
else
echo " ❌ 无法获取项目列表"
fi
# 检查 Web 界面
echo ""
echo "🖥️ Web 界面测试:"
if curl -k -s "https://localhost:8443/" | grep -q "Harbor"; then
echo " ✅ Web 界面 HTML 可访问"
else
echo " ❌ Web 界面 HTML 无法访问"
fi
if curl -k -s -I "https://localhost:8443/styles.75cb4562f0127450.css" | grep -q "200"; then
echo " ✅ 静态资源可访问"
else
echo " ❌ 静态资源无法访问"
fi
# 检查镜像推送拉取功能
echo ""
echo "🔄 镜像功能测试:"
if echo "$HARBOR_PASS" | docker login "${HARBOR_REGISTRY}" -u "$HARBOR_USER" --password-stdin > /dev/null 2>&1; then
echo " ✅ Docker 登录成功"
# 测试拉取已知镜像
if docker pull "${HARBOR_REGISTRY}/library/test-image:latest" > /dev/null 2>&1; then
echo " ✅ 镜像拉取成功"
else
echo " ⚠️ 镜像拉取失败(可能没有测试镜像)"
fi
else
echo " ❌ Docker 登录失败"
fi
# 检查存储使用情况
echo ""
echo "💾 存储状态:"
if [ -d "/Users/brunogao/ops/data/harbor" ]; then
harbor_size=$(du -sh /Users/brunogao/ops/data/harbor | cut -f1)
echo " 📊 Harbor 数据目录大小: $harbor_size"
# 检查磁盘空间
disk_usage=$(df -h /Users/brunogao/ops/data/harbor | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$disk_usage" -gt 80 ]; then
echo " ⚠️ 磁盘使用率高: ${disk_usage}%"
else
echo " ✅ 磁盘使用正常: ${disk_usage}%"
fi
else
echo " ❌ Harbor 数据目录不存在"
fi
# 总结
echo ""
echo "🎯 健康检查总结:"
echo " 📋 API 状态: $(curl -k -s "${HARBOR_REGISTRY}/api/v2.0/systeminfo" > /dev/null && echo "正常" || echo "异常")"
echo " 🖥️ Web 界面: $(curl -k -s "https://localhost:8443/" | grep -q "Harbor" && echo "正常" || echo "异常")"
echo " 🔄 镜像功能: $(echo "$HARBOR_PASS" | docker login "${HARBOR_REGISTRY}" -u "$HARBOR_USER" --password-stdin > /dev/null 2>&1 && echo "正常" || echo "异常")"
echo ""
echo "💡 如果 Web 界面无法访问,请参考: FIX_WEB_ACCESS.md"
echo "🔗 快速访问: ./scripts/harbor-web.sh"