2. 监控指标体系设计:核心监控指标分类与命名规范

在 Rook Ceph 生产环境中,监控指标体系的设计直接决定了版本漂移能否被及时、准确地发现。本章围绕 版本一致性、组件状态、资源使用 三大核心维度,建立可量化的监控指标,并统一命名规范,确保指标在 Prometheus 中可被高效检索与告警。

2.1 核心监控指标分类

我们将监控指标分为三个大类,每一类对应不同的故障发现场景。下表列出了每类指标的核心关注点与典型指标示例:

分类 关注点 典型指标示例 告警阈值参考
版本一致性 检测 Ceph 组件版本是否与集群基线一致,发现漂移节点 rook_ceph_version_mismatch
rook_ceph_version_count
> 0 即告警
组件状态 监控 OSD、MON、MGR、MDS 等核心组件的运行状态 rook_ceph_osd_up
rook_ceph_mon_quorum_status
OSD down > 1 或 MON 失 quorum
资源使用 跟踪存储池容量、OSD 磁盘使用率、网络吞吐等 rook_ceph_pool_percent_used
rook_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 监控指标体系架构图

下图展示了从数据采集到告警触发的完整监控指标体系架构:

Rook Ceph 监控指标体系架构 数据采集层 Rook Exporter Ceph Manager Module 指标分类层 版本一致性 组件状态 资源使用 存储与告警层 Prometheus TSDB Alertmanager Grafana Dashboard 指标命名规范示例 rook_ceph_<component>_<metric>{<label>} rook_ceph_osd_up{osd_id="0", node="node1"} → 1

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 版本"

通过以上指标体系的设计,我们能够从版本一致性、组件状态、资源使用三个维度全面覆盖版本漂移的检测场景,并为后续的自动化校准提供可靠的数据基础。