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 集群的稳定运行。

相关推荐
行百里er6 小时前
Spring Insight 里如何画出服务拓扑
spring boot·spring cloud·监控
行百里er1 天前
Spring Insight 里如何对 Span 进行清洗
spring boot·spring cloud·监控
盛世宏博智慧档案2 天前
户外配电柜为什么要装POE供电以太网温湿度传感器?
服务器·网络·人工智能·监控·温湿度·配电柜
行百里er3 天前
Spring Insight 里收到的 Span 是怎么存下来的
spring boot·spring·监控
行百里er5 天前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
spring boot·spring cloud·监控
SkyWalking中文站5 天前
Horizon UI 1.0 正式发布:SkyWalking 新一代控制台接棒 Booster
运维·监控·自动化运维
行百里er5 天前
BlockingQueue:异步批量上报
spring boot·spring cloud·监控
IT界的老黄牛5 天前
Prometheus TSDB 拆不出来、也存不了一年:4 条外部存储出路 + 容量测算
prometheus·时序数据库·监控·thanos·victoriametrics·remote_write
IT界的老黄牛7 天前
Jenkins 监控一条龙:接入、看板 9964、11 条告警规则直接抄走
jenkins·grafana·prometheus·监控·ci-cd·告警规则
SkyWalking中文站7 天前
SkyWalking 11 与 BanyanDB 0.11:在存储引擎内部实现 Trace 尾部采样
运维·监控·自动化运维