Ceph 可观测性最佳实践

Ceph 介绍

Ceph 是一种高性能、高可扩展性和高可靠性的开源分布式存储系统,广泛应用于云计算、大数据和高性能计算等领域。它通过其核心组件(如对象存储守护进程OSD、元数据服务器MDS和监控守护进程MON)协同工作,利用 CRUSH 算法实现数据的分布存储和动态负载均衡,支持对象存储、块存储和文件存储等多种存储接口,能够灵活满足不同场景下的存储需求。

Ceph 的整体监控体系通过多种机制和工具实现对集群的全面监控与管理。除了核心的 MON 组件负责维护集群状态和一致性外,Ceph 还利用 OSD 的自我监控功能,实时检测存储节点的健康状况和性能指标。此外,Ceph 提供了丰富的监控接口,能够与 Prometheus、Grafana 等外部监控工具集成,实现对集群资源使用、性能瓶颈、故障告警等信息的可视化展示和实时分析,从而帮助管理员全面掌握集群运行状态,及时发现并解决问题,确保整个存储系统的稳定性和可靠性。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

采集器配置

前置条件

  • Ceph 暴露 Prometheus 监控接口

相关组件及端口关系如下:

组件 组件指标端口
mgr-prometheus 9283
ceph-exporter 9926
nvmeof 10008
nfs 9587

通过以下方式获取对应监控的配置信息,其中 8765 为管理端口:

格式 http://<endpoint>:8765/sd/prometheus/sd-config?service=<组件名称> 获取 prometheus 的配置文件。

如: http://<endpoint>:8765/sd/prometheus/sd-config?service=mgr-prometheus 获取 mgr-prometheus 的配置文件。

arduino 复制代码
[root@ceph001 ~]# curl http://192.168.0.37:8765/sd/prometheus/sd-config?service=mgr-prometheus
[{"targets": ["ceph001:9283"], "labels": {}}]

可以看到有一个 targets,通过 targets,我们就可以配置出对应的指标访问 url: http://ceph001:9283/metrics 由于节点会飘移,所以采集的时候需要配置多个 targets。

DataKit 开启 Prom 采集器

按照实际节点数调整配置:

  • ceph-mgr.conf

进入 DataKit 安装目录下的 conf.d/prom ,复制 prom.conf.sampleceph-mgr.conf

bash 复制代码
cp prom.conf.sample ceph-mgr.conf

修改 ceph-mgr.conf 内容如下:

ini 复制代码
# {"version": "1.74.2", "desc": "do NOT edit this line"}

[[inputs.prom]]
  ## Exporter URLs.
  urls=["http://ceph001:9283/metrics","http://ceph002:9283/metrics","http://ceph003:9283/metrics"]

  ## Collector alias.
  source = "ceph-mgr"

  ## Customize tags.
  [inputs.prom.tags]
   cluster="ceph-cluster" 

  ...
  • ceph-exporter.conf

进入 DataKit 安装目录下的 conf.d/prom ,复制 prom.conf.sampleceph-exporter.conf

bash 复制代码
cp prom.conf.sample ceph-exporter.conf

修改 ceph-exporter.conf 内容如下:

ini 复制代码
# {"version": "1.74.2", "desc": "do NOT edit this line"}

[[inputs.prom]]
  ## Exporter URLs.
  urls=["http://ceph001:9926/metrics","http://ceph002:9926/metrics","http://ceph003:9926/metrics"]

  ## Collector alias.
  source = "ceph-exporter"

  ## Customize tags.
  [inputs.prom.tags]
   cluster="ceph-cluster" 

  ...
  • ceph-nfs.conf

进入 DataKit 安装目录下的 conf.d/prom ,复制 prom.conf.sampleceph-nfs.conf

bash 复制代码
cp prom.conf.sample ceph-nfs.conf

修改 ceph-nfs.conf 内容如下:

ini 复制代码
# {"version": "1.74.2", "desc": "do NOT edit this line"}

[[inputs.prom]]
  ## Exporter URLs.
  urls=["http://ceph001:9587/metrics"]

  ## Collector alias.
  source = "ceph-nfs"

  ## Customize tags.
  [inputs.prom.tags]
   cluster="ceph-cluster" 

  ...
  • ceph-nvmeof.conf

进入 DataKit 安装目录下的 conf.d/prom ,复制 prom.conf.sampleceph-nvmeof.conf

bash 复制代码
cp prom.conf.sample ceph-nvmeof.conf

修改 ceph-nvmeof.conf 内容如下:

ini 复制代码
# {"version": "1.74.2", "desc": "do NOT edit this line"}

[[inputs.prom]]
  ## Exporter URLs.
  urls=["http://ceph001:10008"]

  ## Collector alias.
  source = "ceph-nvmeof"

  ## Customize tags.
  [inputs.prom.tags]
   cluster="ceph-cluster" 

  ...

重启 DataKit

复制代码
datakit service -R

关键指标

指标名称 描述 单位
cluster_by_class_total_bytes 按类别的集群总字节数 字节
cluster_by_class_total_used_bytes 按类别的集群已使用的字节数 字节
cluster_by_class_total_used_raw_bytes 按类别的集群已使用的原始字节数 字节
cluster_osd_blocklist_count 集群 OSD 黑名单的数量
cluster_total_bytes 集群总字节数 字节
cluster_total_used_bytes 集群已使用的字节数 字节
cluster_total_used_raw_bytes 集群已使用的原始字节数 字节
daemon_health_metrics 守护进程健康指标 无单位
disk_occupation 磁盘占用率 百分比
disk_occupation_human 磁盘占用率(人类可读格式) 百分比
exporter_scrape_time 导出器抓取时间
health_detail 健康详细信息 无单位
health_status 健康状态 无单位
healthcheck_slow_ops 健康检查慢操作的数量
mgr_metadata 管理器元数据 无单位
mgr_module_can_run 管理器模块是否可以运行 布尔值
mgr_module_status 管理器模块状态 无单位
mgr_status 管理器状态 无单位
mon_election_call 监控器选举调用次数
mon_election_lose 监控器选举失败次数
mon_election_win 监控器选举成功次数
mon_metadata 监控器元数据 无单位
mon_num_elections 监控器选举次数
mon_num_sessions 监控器会话数量
mon_quorum_status 监控器仲裁状态 无单位
mon_session_add 监控器会话添加次数
mon_session_rm 监控器会话移除次数
mon_session_trim 监控器会话修剪次数
num_objects_degraded 降级对象的数量
num_objects_misplaced 错误放置的对象数量
num_objects_unfound 未找到的对象数量
objecter_op_active 当前活跃的对象操作数量
objecter_op_r 对象读取操作的数量
objecter_op_rmw 对象读取-修改-写入操作的数量
objecter_op_w 对象写入操作的数量
osd_apply_latency_ms OSD 应用延迟 毫秒
osd_commit_latency_ms OSD 提交延迟 毫秒

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,输入 "Ceph", 选择 "Ceph Cluster",点击 "确定" 即可添加视图。

  • Ceph Cluster:可查看 Ceph 集群相关信息
  • Ceph OSD
  • Ceph - CephFS

监控器(告警)

观测云内置了监控器模板,可以选择从模版创建监控器,并开启适合业务的监控器以及时通知相关成员关注问题,触发条件、频率等信息可以依据实际业务进行调整。

登录观测云控制台,点击「监控」 -「新建监控器」,输入 "阿里云 Ceph", 选择对应的监控器,点击 "确定" 即可添加。

总结

使用观测云可以实时采集 Ceph 的各项关键指标,包括集群的健康状态、存储利用率、I/O 性能、网络带宽等。同时,观测云支持可视化界面,能够以直观的图表和仪表板形式展示 Ceph 的运行数据,帮助运维人员快速定位问题。此外,它还具备强大的告警功能,一旦检测到异常情况,如磁盘故障、性能瓶颈等,能够及时发出告警通知,确保 Ceph 集群的稳定运行。

相关推荐
云游1 天前
大模型性能指标的监控系统(prometheus3.5.0)和可视化工具(grafana12.1.0)基础篇
grafana·prometheus·可视化·监控
海风极客1 天前
一个案例带你搞懂Prometheus指标类型(下)
监控
可观测性用观测云3 天前
OpenTelemetry WebSocket 监控终极方案:打通最后一公里
监控
可观测性用观测云5 天前
观测云接收 OpenTelemetry Collector 数据最佳实践
监控
SRETALK6 天前
夜莺开源监控,模板函数一览
运维·监控·自动化运维
可观测性用观测云10 天前
使用观测云打造企业级监控告警中心
监控
可观测性用观测云12 天前
DataKit 采集器敏感信息加密最佳实践
监控
可观测性用观测云24 天前
Undertow 可观测性最佳实践
监控