Prometheus 监控 Ceph 全栈实战:从 OSD 心跳到 RGW 请求的分布式存储可观测性
Prometheus 监控 Ceph 全栈实战从 OSD 心跳到 RGW 请求的分布式存储可观测性Ceph 作为软件定义存储的王者支撑着无数云平台的块、文件、对象存储。然而其复杂的组件OSD、MON、MDS、RGW和分布式一致性要求使得集群健康状态、OSD 降级/慢请求、PG 状态异常、容量水位等问题若未被及时发现可能导致数据丢失或业务中断。自 Mimic 版本起Ceph 在 Manager 中原生内置了 Prometheus 导出模块能够将集群的详细指标以标准格式暴露。本文将带你从启用模块、配置抓取到关键告警构建一套覆盖全组件的 Ceph 可观测性体系。1. 为什么选择内置 Prometheus 模块方案说明ceph-mgr prometheus 模块推荐自 Ceph Mimic (13.x) 起内置无需额外进程指标丰富持续更新支持集群健康、OSD、MON、PG、RGW、NFS 等独立 ceph-exporter第三方实现适用于老版本 Ceph0.80指标有限且维护滞后强烈建议使用内置模块本文将以 Ceph Pacific (16.x) / Quincy (17.x) / Reef (18.x) 为准覆盖常见组件。2. 启用并配置 Ceph Prometheus 模块在任一 Ceph 管理节点上执行ceph mgr moduleenableprometheus ceph mgr modulels|grepprometheus# 确认已加载默认情况下模块会在 Manager 的9283端口上暴露/metrics端点。验证curlhttp://mgr-ip:9283/metrics|head-20输出应包含ceph_health_status、ceph_osd_up等指标。可选配置如果你需要调整监听地址或端口可在 Manager 配置中修改ceph configsetmgr mgr/prometheus/server_addr0.0.0.0 ceph configsetmgr mgr/prometheus/server_port9283如需收集 RGW 指标需在 RGW 实例配置中添加rgw enable usage log true并启用rgw租户统计然后重启 RGW。自 Pacific 版本起prometheus 模块会自动抓取 RGW 指标需 mgr 有访问 RGW admin 的权限。3. 配置 Prometheus 抓取在prometheus.yml中添加scrape_configs:-job_name:cephscrape_interval:30sstatic_configs:-targets:-ceph-mgr1:9283-ceph-mgr2:9283# 高可用 Manager两个节点都暴露相同数据labels:cluster:ceph-prod注意无论几个 mgr 实例一次只需抓取一个或两个但instance标签相同因为它们报告相同的集群状态。可配置成多 target 但保留一个活跃以实现高可用抓取。4. 核心监控指标与 PromQLCeph Prometheus 模块导出的指标命名以ceph_为前缀标签包括cluster、osd、pool、instance等。4.1 集群健康状态指标含义ceph_health_status0HEALTH_OK, 1HEALTH_WARN, 2HEALTH_ERRceph_health_detail健康警告/错误的描述性标签字符串不易直接查询PromQL 告警ceph_health_status 0表示非健康。4.2 OSD 状态指标含义ceph_osd_up每个 OSD 是否在线1up, 0downceph_osd_in是否在集群中1in, 0outceph_osd_nearfull接近满的 OSD 数量从 Pacific 起可用ceph_osd_full满的 OSD 数量ceph_osd_stat_bytes_used/ceph_osd_stat_bytes_totalOSD 已用/总容量PromQL离线 OSDceph_osd_up 0全满 OSDceph_osd_full 0OSD 使用率ceph_osd_stat_bytes_used / ceph_osd_stat_bytes_total * 1004.3 Placement Group (PG) 状态指标含义ceph_pg_active活跃 PG 总数ceph_pg_clean清洁 PG 总数ceph_pg_degraded降级 PG 总数ceph_pg_stuck_degraded卡在降级状态的 PG 数ceph_pg_stuck_unclean卡在不洁状态的 PG 数关键告警ceph_pg_degraded 0或ceph_pg_stuck_unclean 0。4.4 MON 状态指标含义ceph_mon_quorum_status当前 MON 节点是否在法定数中1是ceph_mon_num_elections选举次数频繁选举表明不稳定告警ceph_mon_quorum_status 0表示某 MON 节点已出法定数。4.5 集群容量与池使用指标含义ceph_cluster_total_bytes集群总物理容量ceph_cluster_total_used_bytes已用物理容量ceph_cluster_total_avail_bytes可用空间ceph_pool_bytes_used/ceph_pool_max_avail池级别的使用和可用PromQL集群使用率ceph_cluster_total_used_bytes / ceph_cluster_total_bytes * 100池使用率ceph_pool_bytes_used / (ceph_pool_bytes_used ceph_pool_max_avail) * 1004.6 性能指标I/O 与延迟指标含义ceph_osd_op_w_latency_sum/_countOSD 写操作延迟ceph_osd_op_r_latency_sum/_countOSD 读操作延迟ceph_osd_perf_apply_latency_seconds事务应用延迟ceph_osd_perf_commit_latency_seconds提交延迟ceph_pool_rd_bytes/ceph_pool_wr_bytes池级读写速率PromQL平均写延迟rate(ceph_osd_op_w_latency_sum[5m]) / rate(ceph_osd_op_w_latency_count[5m])池吞吐MB/srate(ceph_pool_wr_bytes[1m]) / 1024 / 10244.7 RGW 对象网关若启用指标含义ceph_rgw_http_requests_totalRGW 请求总数ceph_rgw_http_errors_totalRGW 错误数ceph_rgw_qlen请求队列长度ceph_rgw_cache_hit_total/_miss_total缓存命中/未命中告警rate(ceph_rgw_http_errors_total[5m]) 05. Grafana 仪表盘推荐Ceph 社区提供了非常成熟的官方仪表盘Ceph Cluster DashboardID2842最经典涵盖集群健康、OSD、PG、容量、MON、I/O 延迟、池统计等完美适配 Prometheus 内置模块。Ceph RGWID13286若使用 RGW可独立导入。Ceph Pacific/Quincy EnhancementsID15328包含新版本增加的 nearfull、recovery 速率等面板。导入后选择 Prometheus 数据源将变量cluster绑定至你的 Ceph 集群标签。6. 告警规则实战groups:-name:ceph_alertsrules:-alert:CephClusterHealthWarnexpr:ceph_health_status 1for:5mlabels:severity:warningannotations:summary:Ceph 集群状态为 HEALTH_WARN-alert:CephClusterHealthErrexpr:ceph_health_status 2for:1mlabels:severity:criticalannotations:summary:Ceph 集群状态为 HEALTH_ERR立即处理-alert:CephOSDDownexpr:ceph_osd_up 0for:5mlabels:severity:criticalannotations:summary:OSD {{ $labels.osd }} 已离线-alert:CephOSDHostDownexpr:ceph_osd_in 0 and ceph_osd_up 0for:1mlabels:severity:criticalannotations:summary:OSD {{ $labels.osd }} 不在集群中且离线-alert:CephOSDNearFullexpr:ceph_osd_nearfull0for:10mlabels:severity:warningannotations:summary:存在接近满的 OSD立即添加容量或调整权重-alert:CephPGsDegradedexpr:ceph_pg_degraded0for:10mlabels:severity:warningannotations:summary:PG 出现降级数量{{ $value }}-alert:CephPGsStuckUncleanexpr:ceph_pg_stuck_unclean0for:15mlabels:severity:criticalannotations:summary:有 PG 长时间卡在不洁状态数据可能不可访问-alert:CephMonQuorumLostexpr:ceph_mon_quorum_status 0for:1mlabels:severity:criticalannotations:summary:MON 节点 {{ $labels.instance }} 失去法定数-alert:CephClusterCapacityFullexpr:ceph_cluster_total_used_bytes / ceph_cluster_total_bytes * 10085for:10mlabels:severity:warningannotations:summary:Ceph 集群容量使用率超过 85%-alert:CephPoolFullexpr:ceph_pool_bytes_used / (ceph_pool_bytes_used ceph_pool_max_avail) * 10085for:10mlabels:severity:warningannotations:summary:池 {{ $labels.pool }} 使用率超过 85%7. 进阶多集群、安全与性能7.1 多 Ceph 集群监控为每个集群的 mgr 配置不同的cluster标签在 Prometheus 中通过labels区分。Grafana 仪表盘通过变量cluster切换轻松实现多集群统一监控。7.2 安全加固Ceph Prometheus 端点默认无认证建议通过防火墙限制仅 Prometheus 服务器可访问 9283 端口。也可将 mgr 的 9283 绑定到127.0.0.1再用反向代理如 Caddy/Nginx添加 TLS 和 Basic Auth。确保 mgr 具备读取 RGW 统计的权限如ceph dashboard set-rgw-api-access-key等否则 RGW 指标会缺失。7.3 性能影响Prometheus 模块采集频率由 Prometheus scrape_interval 控制mgr 本身每次抓取时会查询集群状态对 mgr CPU 开销极小。通常 30s 抓取足够。8. 总结通过 Ceph 内置的 Prometheus 模块你的分布式存储集群不再是一块模糊的黑洞。从集群健康灯、OSD 在线状态、PG 降级到 RGW 请求延迟所有信息都转化为可查询、可告警的时序指标。结合 Grafana 丰富的仪表盘和 Alertmanager 的即时通知你能在数据丢失风险萌芽时就采取行动让 Ceph 真正成为软件定义存储的可观测基石。部署它让存储层也能像应用一样被“看见”。

相关新闻

你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南

你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南

你的描述符为何“失忆”?——Python __set_name__ 的属性名自动捕获与常见踩坑指南 在 Python 的描述符世界里,对象属性访问的三大魔术方法——__get__、__set__、__delete__——让你能自定义属性的存取行为,实现类型校验、延迟加载、ORM 映射…

2026/10/10 2:22:42 阅读更多 →
消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南

消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南

消息源加载“走火入魔”:Spring Boot 多文件国际化顺序混乱的终结指南 你的 Spring Boot 应用精心准备了多套国际化资源:messages.properties 存放公共文案,validation.properties 存放校验消息,还有各个模块自己的 module-messag…

2026/10/13 23:26:21 阅读更多 →
鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护

鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护

鸿蒙多功能工具箱开发实战(二十七)-安全加固与数据保护 前言 安全是应用开发的重要考量。本文将讲解HarmonyOS应用的安全加固和数据保护措施。 一、敏感数据保护 1.1 数据加密 import cryptoFramework from ohos.security.cryptoFrameworkexport class CryptoUtil {/*** AES加密…

2026/9/29 23:55:16 阅读更多 →

最新新闻

DSO编译运行实战:从环境配置到参数调优全解析

DSO编译运行实战:从环境配置到参数调优全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:39:10 阅读更多 →
并发写入的优雅礼让:用应用级队列与文件锁(flock)彻底消灭 SQLite 写入超时

并发写入的优雅礼让:用应用级队列与文件锁(flock)彻底消灭 SQLite 写入超时

秋雨下了一整天,小书房的窗框被雨水打得泛出一层深褐色的湿润。我坐在桌前,一边在手账编辑器里随手敲打着今天的读书记摘,一边开着后台脚本批量整理手机刚同步过来的上百张秋游照片。 就在我按下手账保存键的同一瞬间,相册整理脚本…

2026/10/14 1:39:10 阅读更多 →
STM32C5与CubeMX2实战:从选型到低功耗排错全记录

STM32C5与CubeMX2实战:从选型到低功耗排错全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:39:10 阅读更多 →
基于Spring Boot与uni-app的校园食堂订餐系统:从架构设计到订单状态机实战

基于Spring Boot与uni-app的校园食堂订餐系统:从架构设计到订单状态机实战

简介:这份资源是面向高校计算机相关专业学生与Java开发学习者的毕业设计完整文档,主题为基于Spring Boot的校园食堂订餐系统的设计与实现,可帮助读者理解如何将所学技术落地到真实校园服务场景中。系统针对疫情期间食堂拥挤、学生外卖依赖、就…

2026/10/14 1:39:10 阅读更多 →
人脸超分与关键点估计迭代协作:注意力恢复机制解析

人脸超分与关键点估计迭代协作:注意力恢复机制解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:39:10 阅读更多 →
YOLOv3电塔绝缘子检测权重:快速推理与微调实战

YOLOv3电塔绝缘子检测权重:快速推理与微调实战

简介:这是一份面向电力设施智能监测场景的YOLOv3电塔绝缘子检测训练成果包,适合目标检测初学者、电力巡检算法开发者及需要小目标检测参考方案的技术人员使用。资源包共990个文件,约520.07MB,包含json标注数据、png与jpg图像样本、…

2026/10/14 1:38:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →