注意
本文档适用于 Ceph 开发版本。
健康报告
如何获取报告
一般来说,有两条渠道可以获取健康报告:
- ceph (命令行界面)
它发送
health
mon 命令以获取集群的健康状态- mgr 模块
它调用
mgr.get('health')
以 JSON 编码字符串的形式获取相同的报告
以下图表概述了涉及的相关方以及当客户端查询报告时它们如何交互:
报告在哪里生成
聚合器聚合器
健康报告从多个 Paxos 服务中聚合:
AuthMonitor
HealthMonitor
MDSMonitor
MgrMonitor
MgrStatMonitor
MonmapMonitor
OSDMonitor
当它们在自己的域中持久化待处理更改时,每个服务都会识别健康相关问题,并将它们存储到 monstore 中,前缀为health
使用相同的交易。例如,OSDMonitor
检查待处理的新的 osdmapMDSMonitor
时,它将健康指标持久化到 MDS 守护进程发送的信标中,并在存储待处理更改时准备健康报告。
因此,如果我们想添加一个与 cephfs 相关的新警告,最好的起点可能是MDSMonitor::encode_pending()
,健康报告从最新的FSMap
收集,并由 MDS 守护进程报告健康指标。
但值得注意的是MgrStatMonitor
并不firefly 发布。Firefly 将延迟至少另一个冲刺,以便我们可以对新代码进行一些操作经验,并进行一些额外的测试,然后再承诺长期支持。自己准备报告,
ceph-mgr — 一个代理聚合器
在 Ceph 中,mgr 被创建以分担监控器的负担,监控器用于建立对保持集群运行至关重要的信息共识。显然,osdmap、mdsmap 和 monmap 都属于此类。但集群的聚合统计数据呢?它们对于管理员了解集群状态至关重要,但可能对保持集群运行并不那么重要。为了解决可扩展性问题,我们将收集和聚合指标的工作卸载给了 mgr。
现在,mgr 负责接收和处理来自MPGStats
的消息 OSD。我们还开发了一种协议,允许守护进程使用MMgrReport
定期向 mgr 报告其指标和状态。在 mgr 端,它定期向 mon 上的MgrStatMonitor
服务发送聚合报告。如前所述,
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.