2. 监控指标体系设计:核心监控指标分类与命名规范
在 Rook Ceph 生产环境中,监控指标体系的设计直接决定了版本漂移能否被及时、准确地发现。本章围绕 版本一致性、组件状态、资源使用 三大核心维度,建立可量化的监控指标,并统一命名规范,确保指标在 Prometheus 中可被高效检索与告警。
2.1 核心监控指标分类
我们将监控指标分为三个大类,每一类对应不同的故障发现场景。下表列出了每类指标的核心关注点与典型指标示例:
| 分类 | 关注点 | 典型指标示例 | 告警阈值参考 |
|---|---|---|---|
| 版本一致性 | 检测 Ceph 组件版本是否与集群基线一致,发现漂移节点 | rook_ceph_version_mismatchrook_ceph_version_count |
> 0 即告警 |
| 组件状态 | 监控 OSD、MON、MGR、MDS 等核心组件的运行状态 | rook_ceph_osd_uprook_ceph_mon_quorum_status |
OSD down > 1 或 MON 失 quorum |
| 资源使用 | 跟踪存储池容量、OSD 磁盘使用率、网络吞吐等 | rook_ceph_pool_percent_usedrook_ceph_osd_bytes_used |
使用率 > 85% 预警,> 95% 紧急 |
2.2 版本一致性指标详解
版本漂移校准的核心在于 版本一致性 指标。我们设计了以下三个关键指标来覆盖全场景:
rook_ceph_version_mismatch:布尔型指标,1 表示存在版本不一致,0 表示一致。用于快速触发全局告警。rook_ceph_version_count:统计当前集群中出现的不同版本数量。正常应为 1,大于 1 表示存在漂移。rook_ceph_node_version:每个节点上的 Ceph 版本标签,用于定位具体漂移节点。
实战要点: 版本一致性指标必须从 Rook 的 ConfigMap 和 Ceph 的
ceph versions 命令双重采集,避免因 Rook 自身版本滞后导致误报。
2.3 组件状态指标详解
组件状态指标需要覆盖 Ceph 集群的所有核心角色。以下是最小必要指标集:
| 组件 | 指标名称 | 说明 |
|---|---|---|
| MON | rook_ceph_mon_quorum_status |
1 表示在 quorum 中,0 表示失联 |
| OSD | rook_ceph_osd_up |
1 表示 OSD 在线,0 表示 down |
| MGR | rook_ceph_mgr_active |
1 表示活跃 MGR,0 表示 standby |
| MDS | rook_ceph_mds_up |
1 表示 MDS 进程正常 |
| RGW | rook_ceph_rgw_up |
1 表示 RGW 服务可用 |
建议: 组件状态指标应配合
ceph health detail 的解析结果,将 Ceph 自身的健康检查与 Prometheus 采集数据交叉验证,避免单点采集失败。
2.4 资源使用指标详解
资源使用指标不仅用于容量规划,也能间接反映版本漂移带来的性能异常。核心指标包括:
- 存储池维度:
rook_ceph_pool_percent_used、rook_ceph_pool_objects - OSD 维度:
rook_ceph_osd_bytes_used、rook_ceph_osd_bytes_total、rook_ceph_osd_utilization - 集群维度:
rook_ceph_cluster_total_bytes、rook_ceph_cluster_used_bytes、rook_ceph_cluster_available_bytes
2.5 指标命名规范
统一的命名规范是监控体系可维护性的基础。我们采用以下分层命名规则:
| 层级 | 前缀 | 示例 |
|---|---|---|
| 命名空间 | rook_ceph_ |
所有指标统一以 rook_ceph_ 开头 |
| 组件/维度 | osd_ / mon_ / pool_ / cluster_ |
rook_ceph_osd_up |
| 度量类型 | _bytes / _percent / _count / _status |
rook_ceph_pool_percent_used |
| 标签 | node / pool / osd_id / version |
rook_ceph_node_version{node="node1"} |
避坑指南: 避免在指标名称中使用大写字母、连字符或特殊符号。Prometheus 推荐使用小写字母和下划线。同时,标签值应保持简洁,不要将版本号、节点名等长字符串作为指标名称的一部分。
2.6 监控指标体系架构图
下图展示了从数据采集到告警触发的完整监控指标体系架构:
2.7 指标采集与标签设计
为了支持版本漂移的精准定位,每个指标必须携带足够的标签信息。以下是推荐的标签设计:
# 版本一致性指标标签示例
rook_ceph_node_version{node="k8s-node-1", ceph_version="16.2.10", rook_version="1.9.5"} 1
# OSD 状态指标标签示例
rook_ceph_osd_up{osd_id="0", node="k8s-node-1", device_class="ssd", status="up"} 1
# 存储池使用率指标标签示例
rook_ceph_pool_percent_used{pool="replicapool", pg_num="128", size="3"} 67.2
关键原则: 标签应包含
node、ceph_version、rook_version 三个必选标签,用于版本漂移的快速溯源。OSD 和 MON 指标还需携带 osd_id 或 mon_id 标签。
2.8 告警规则设计示例
基于上述指标,我们设计以下核心告警规则,用于版本漂移的实时检测:
groups:
- name: rook_ceph_version_alerts
rules:
- alert: CephVersionMismatch
expr: rook_ceph_version_mismatch == 1
for: 5m
labels:
severity: critical
annotations:
summary: "Ceph 集群存在版本不一致"
description: "检测到 {{ $value }} 个节点版本与集群基线不一致"
- alert: CephVersionCountHigh
expr: rook_ceph_version_count > 1
for: 2m
labels:
severity: warning
annotations:
summary: "Ceph 集群存在多个版本"
description: "当前集群中存在 {{ $value }} 个不同的 Ceph 版本"
通过以上指标体系的设计,我们能够从版本一致性、组件状态、资源使用三个维度全面覆盖版本漂移的检测场景,并为后续的自动化校准提供可靠的数据基础。