Skip to content

巡检与健康检查

巡检体系

H3C 巡检服务层次:

日常监控(自动化):
  7×24 小时自动监控
  告警自动触发工单

月度巡检(人工):
  H3C 工程师远程执行
  输出月度健康报告

季度巡检(深度):
  H3C 工程师现场执行
  包含性能基准测试
  输出季度健康报告 + 优化建议

年度巡检(全面):
  全面健康评估
  容量规划建议
  升级路线图建议

自动化巡检脚本

CloudOS 健康检查

bash
#!/bin/bash
# cloudos-health-check.sh

REPORT_FILE="/tmp/health-report-$(date +%Y%m%d).txt"
ALERT_EMAIL="ops@example.com"
PASS=0
WARN=0
FAIL=0

log() {
    echo "$1" | tee -a $REPORT_FILE
}

check() {
    local name=$1
    local cmd=$2
    local expected=$3
    
    result=$(eval "$cmd" 2>/dev/null)
    if echo "$result" | grep -q "$expected"; then
        log "✅ $name: OK"
        ((PASS++))
    else
        log "❌ $name: FAIL (got: $result)"
        ((FAIL++))
    fi
}

log "=== CloudOS 健康检查报告 ==="
log "时间: $(date)"
log "主机: $(hostname)"
log ""

# 1. 管理服务检查
log "--- 管理服务 ---"
for service in nova-api nova-conductor nova-scheduler \
               neutron-server keystone glance-api cinder-api; do
    check "$service" "systemctl is-active openstack-$service" "active"
done

# 2. 计算节点检查
log ""
log "--- 计算节点 ---"
TOTAL_NODES=$(openstack compute service list --service nova-compute -f value -c State | wc -l)
UP_NODES=$(openstack compute service list --service nova-compute -f value -c State | grep -c "up")
log "计算节点: $UP_NODES/$TOTAL_NODES 在线"
if [ $UP_NODES -lt $TOTAL_NODES ]; then
    log "❌ 有计算节点离线"
    openstack compute service list --service nova-compute | grep "down"
    ((FAIL++))
else
    log "✅ 所有计算节点正常"
    ((PASS++))
fi

# 3. Ceph 存储检查
log ""
log "--- Ceph 存储 ---"
CEPH_STATUS=$(ceph health 2>/dev/null)
if echo "$CEPH_STATUS" | grep -q "HEALTH_OK"; then
    log "✅ Ceph 状态: HEALTH_OK"
    ((PASS++))
elif echo "$CEPH_STATUS" | grep -q "HEALTH_WARN"; then
    log "⚠️  Ceph 状态: HEALTH_WARN"
    ceph health detail | head -20 | tee -a $REPORT_FILE
    ((WARN++))
else
    log "❌ Ceph 状态: HEALTH_ERR"
    ceph health detail | tee -a $REPORT_FILE
    ((FAIL++))
fi

# 4. 存储使用率检查
log ""
log "--- 存储使用率 ---"
ceph df | tee -a $REPORT_FILE
USAGE=$(ceph df | grep "TOTAL" | awk '{print $5}' | tr -d '%')
if [ "${USAGE%.*}" -gt 85 ]; then
    log "❌ 存储使用率 ${USAGE}% 超过 85%,需要扩容"
    ((FAIL++))
elif [ "${USAGE%.*}" -gt 70 ]; then
    log "⚠️  存储使用率 ${USAGE}%,建议关注"
    ((WARN++))
else
    log "✅ 存储使用率 ${USAGE}% 正常"
    ((PASS++))
fi

# 5. 资源使用率检查
log ""
log "--- 资源使用率 ---"
openstack hypervisor stats show | tee -a $REPORT_FILE

# 6. 网络代理检查
log ""
log "--- 网络代理 ---"
DOWN_AGENTS=$(openstack network agent list | grep "XXX" | grep -v "alive" | wc -l)
if [ $DOWN_AGENTS -gt 0 ]; then
    log "❌ 有 $DOWN_AGENTS 个网络代理异常"
    openstack network agent list | grep -v "alive"
    ((FAIL++))
else
    log "✅ 所有网络代理正常"
    ((PASS++))
fi

# 7. 汇总
log ""
log "=== 检查汇总 ==="
log "通过: $PASS"
log "警告: $WARN"
log "失败: $FAIL"

# 发送报告
if [ $FAIL -gt 0 ]; then
    mail -s "[告警] CloudOS 健康检查发现 $FAIL 个问题" $ALERT_EMAIL < $REPORT_FILE
elif [ $WARN -gt 0 ]; then
    mail -s "[警告] CloudOS 健康检查发现 $WARN 个警告" $ALERT_EMAIL < $REPORT_FILE
fi

echo "报告已保存到: $REPORT_FILE"

Ceph 深度检查

bash
#!/bin/bash
# ceph-deep-check.sh

echo "=== Ceph 深度健康检查 ==="

# 1. 集群状态
echo "--- 集群状态 ---"
ceph status

# 2. OSD 状态
echo ""
echo "--- OSD 状态 ---"
ceph osd tree
echo ""
echo "OSD 统计:"
ceph osd df | tail -5

# 3. PG 状态
echo ""
echo "--- PG 状态 ---"
ceph pg stat
# 检查非正常 PG
ABNORMAL_PG=$(ceph pg stat | grep -oP '\d+ \w+' | grep -v "active+clean" | grep -v "^0")
if [ -n "$ABNORMAL_PG" ]; then
    echo "⚠️  异常 PG: $ABNORMAL_PG"
fi

# 4. OSD 延迟
echo ""
echo "--- OSD 延迟 ---"
ceph osd perf | awk 'NR==1 || $3>10 || $4>10 {print}'
# 显示延迟 > 10ms 的 OSD

# 5. 磁盘健康(SMART)
echo ""
echo "--- 磁盘 SMART 状态 ---"
for disk in $(lsblk -d -o NAME | grep -E '^sd|^nvme'); do
    STATUS=$(smartctl -H /dev/$disk 2>/dev/null | grep "overall-health" | awk '{print $NF}')
    if [ "$STATUS" = "PASSED" ]; then
        echo "✅ /dev/$disk: $STATUS"
    else
        echo "❌ /dev/$disk: $STATUS(需要关注)"
    fi
done

# 6. 网络延迟测试
echo ""
echo "--- 存储网络延迟 ---"
for node in storage01 storage02 storage03; do
    LATENCY=$(ping -c 10 $node 2>/dev/null | tail -1 | awk -F'/' '{print $5}')
    echo "$node: 平均延迟 ${LATENCY}ms"
done

# 7. 性能基准(快速测试)
echo ""
echo "--- 存储性能快速测试 ---"
rados bench -p vms 30 write --no-cleanup 2>/dev/null | grep -E "Bandwidth|IOPS|Latency"
rados bench -p vms 30 seq 2>/dev/null | grep -E "Bandwidth|IOPS|Latency"
rados -p vms cleanup

月度巡检报告模板

月度健康巡检报告

客户:XXX 公司
巡检时间:2024-01-15
巡检工程师:张工(H3C)
报告版本:v1.0

一、系统概况
  CloudOS 版本:7.x.x
  计算节点:20 台(全部在线)
  存储容量:总计 500TB,已用 320TB(64%)
  运行 VM 数:485 台

二、健康状态汇总

  项目              状态    说明
  管理服务          ✅ 正常  所有服务运行正常
  计算节点          ✅ 正常  20/20 节点在线
  Ceph 存储         ✅ 正常  HEALTH_OK
  网络代理          ✅ 正常  所有代理在线
  备份任务          ✅ 正常  本月备份成功率 100%
  安全补丁          ⚠️ 警告  有 3 个安全补丁待安装

三、资源使用趋势

  存储使用率趋势:
    11月:55% → 12月:60% → 1月:64%
    预测:按当前增速,约 6 个月后达到 80%
    建议:Q3 前规划存储扩容

  计算资源使用率:
    vCPU 使用率:72%(超分后)
    内存使用率:68%
    状态:正常,有充足余量

四、本月事件
  事件1:2024-01-08 存储节点 OSD 故障
    处理:更换故障磁盘,数据自动重建
    影响:无业务影响
    状态:已解决

五、优化建议
  1. 安装 3 个待安装的安全补丁(建议本月内完成)
  2. 存储使用率增长较快,建议 Q3 前规划扩容
  3. 建议开启 Ceph 数据压缩,预计可节省 15-20% 空间

六、下月计划
  1. 安装安全补丁(计划 1/20 维护窗口)
  2. 存储容量规划讨论
  3. 季度深度巡检(计划 2 月)

褚成志的云与计算笔记