| name | ceph-status-analyzer |
| description | Ceph 分布式存储集群状态分析技能。获取和分析 Rook-Ceph 集群的健康状态、存储利用率、OSD 性能等。
触发场景:Ceph 集群状态检查、性能问题排查、容量规划、OSD/PG/Monitor/MDS 故障诊断。
支持用户纠正和补充。
|
Ceph Status Analyzer
数据来源约束
重要:禁止使用 kubectl、ceph 命令直接获取数据。
| 数据类型 | 接口 | 地址 |
|---|
| 指标数据 | Prometheus HTTP API | https://prometheus.example.com |
| 日志数据 | VictoriaLogs HTTP API | https://victorialogs.example.com |
快速诊断流程
问题发生
│
├─ 1. 运行健康检查
│ scripts/diagnose_health_checks.sh
│ → 返回所有告警和处理建议
│
├─ 2. 根据告警类型选择脚本
│ ├─ OSD Down → scripts/diagnose_osd_down.sh --osd <id>
│ ├─ OSD 延迟 → scripts/diagnose_osd_latency.sh
│ ├─ PG 问题 → scripts/diagnose_pg_issues.sh
│ ├─ Monitor → scripts/diagnose_monitor.sh
│ ├─ MDS → scripts/diagnose_mds.sh
│ └─ 容量 → scripts/get_pool_status.sh, get_osd_status.sh
│
└─ 3. 深入分析
scripts/diagnose_osd_down.sh --osd <id> # OSD 故障综合诊断(含节点日志)
scripts/query_osd_logs.sh --osd <id> # 查看 OSD 日志
scripts/diagnose_config.sh # 配置检查
脚本索引
诊断脚本(推荐使用)
| 脚本 | 用途 | 常用参数 |
|---|
diagnose_health_checks.sh | 健康检查,返回告警和建议 | -c 集群名 --json |
diagnose_osd_down.sh | OSD Down 综合诊断(含节点日志) | --osd <id> -r 时间范围 |
diagnose_pg_issues.sh | PG 状态诊断 | -c 集群名 |
diagnose_monitor.sh | Monitor 仲裁、时钟、存储检查 | -c 集群名 |
diagnose_osd_latency.sh | OSD 延迟诊断,定位慢 OSD | -t 时间点 --type write/read/all -n Top数 |
diagnose_mds.sh | MDS/CephFS 诊断,问题客户端 | -c 集群名 -r 时间范围 --json |
diagnose_config.sh | 配置检查与最佳实践建议 | -t osd/pool/mds/mon --json |
数据获取脚本
| 脚本 | 用途 | 输出内容 |
|---|
get_cluster_status.sh | 集群整体状态 | 健康、存储、OSD、PG 概览 |
get_osd_status.sh | 所有 OSD 状态 | up/in/weight/使用率/延迟 |
get_pool_status.sh | 所有 Pool 状态 | 使用率/对象数/IOPS |
query_osd_logs.sh | OSD 日志分析 | 异常模式识别 |
常用命令示例
scripts/diagnose_health_checks.sh
scripts/get_osd_status.sh | head -30
scripts/diagnose_osd_down.sh --osd 188
scripts/diagnose_osd_latency.sh -t 2026-01-23T10:00:00Z --type write
scripts/query_osd_logs.sh --osd 5 -t 2026-01-23T10:00:00Z
scripts/diagnose_mds.sh
scripts/diagnose_config.sh
关键阈值速查
注意:延迟阈值基于 2026-02-04 实际数据优化(P50=23ms, P95=66ms, P99=94ms)
| 指标 | 正常 | 警告 | 严重 |
|---|
| 集群/OSD 使用率 | <70% / <85% | 70-85% / 85-90% | >85% / >90% |
| OSD apply/commit 延迟 | <80ms | 80-120ms | >120ms |
| 客户端读/写延迟 | <120ms | 120-200ms | >200ms |
| Monitor 时钟偏差 | <200ms | 200-500ms | >500ms |
| Monitor 存储 | <2GB | 2-5GB | >5GB |
| MDS Caps | <1M/MDS | 1M-5M | >5M |
VictoriaLogs 日志查询
Ceph 组件日志
| 组件 | 查询条件 |
|---|
| OSD Pod | k8s_cluster:prod-cluster namespace:rook-ceph pod_name:~"rook-ceph-osd-<id>-.*" container_name:osd |
| Monitor | k8s_cluster:prod-cluster namespace:rook-ceph app:ceph-mon |
| MDS | k8s_cluster:prod-cluster namespace:rook-ceph app:ceph-mds |
| Operator | k8s_cluster:prod-cluster namespace:rook-ceph app:rook-ceph-operator |
| CSI | k8s_cluster:prod-cluster namespace:rook-ceph app:csi-rbdplugin-provisioner |
| OSD Prepare | k8s_cluster:prod-cluster namespace:rook-ceph app:rook-ceph-osd-prepare |
节点日志(诊断磁盘/硬件问题)
| 用途 | 查询条件 |
|---|
| 节点错误日志 | k8s_cluster: "prod-cluster" AND node_name: "<node>" AND ~"error" | sort by (_time) desc |
| 磁盘硬件错误 | k8s_cluster: "prod-cluster" AND node_name: "<node>" AND ~"Hardware Error" | sort by (_time) desc |
| I/O 错误 | k8s_cluster: "prod-cluster" AND node_name: "<node>" AND ~"I/O error" | sort by (_time) desc |
| SCSI 错误 | k8s_cluster: "prod-cluster" AND node_name: "<node>" AND ~"sd" | sort by (_time) desc |
使用 diagnose_osd_down.sh 会自动查询 OSD 所在节点的日志。
参考文档
反馈与改进