注意

本文档适用于 Ceph 的开发版本。

CephFS Top 实用程序

CephFS 提供了一个类似于 top(1) 的实用程序,用于实时显示各种 Ceph 文件系统指标。cephfs-top 是一个基于 curses 的 Python 脚本,它利用 Ceph Manager 中的 stats 插件来获取(并显示)指标。

管理器插件

Ceph 文件系统客户端会定期将各种指标转发给 Ceph 元数据服务器 (MDS),MDS 零号节点又将这些指标转发给 Ceph Manager。每个活动的 MDS 都会将其各自的指标集转发给 MDS 零号节点。指标会被聚合并转发给 Ceph Manager。

指标分为两类:全局指标和每个 MDS 指标。全局指标代表整个文件系统的指标集(例如,客户端读取延迟),而每个 MDS 指标则针对特定的 MDS 节点(例如,特定 MDS 处理的子树数量)。

注意

目前,仅跟踪全局指标。

stats 插件默认禁用,需要通过以下方式启用:

$ ceph mgr module enable stats

启用后,可以通过以下方式获取 Ceph 文件系统指标:

$ ceph fs perf stats

输出格式为 JSON,包含以下字段:

  • version: 统计信息输出的版本

  • global_counters: 全局性能指标列表

  • counters: 每个 MDS 性能指标列表

  • client_metadata: Ceph 文件系统客户端元数据

  • global_metrics: 全局性能计数器

  • metrics: 每个 MDS 性能计数器(目前为空)和延迟节点

注意

delayed_ranks 是报告陈旧指标的活动 MDS 节点集。这可能发生在 MDS 零号节点与其他活动 MDS 之间存在(临时)网络问题等情况下。

可以针对特定客户端和/或一组活动 MDS 获取指标。要获取特定客户端(例如,客户端 ID:1234)的指标:

$ ceph fs perf stats --client_id=1234

要仅获取一部分活动 MDS(例如,MDS 节点 1 和 2)的指标:

$ ceph fs perf stats --mds_rank=1,2

cephfs-top

cephfs-top 实用程序依赖于 stats 插件来获取性能指标并以类似于 top(1) 的格式显示。cephfs-top 作为 cephfs-top 软件包的一部分提供。

默认情况下,cephfs-top 使用 client.fstop 用户连接到 Ceph 集群

$ ceph auth get-or-create client.fstop mon 'allow r' mds 'allow r' osd 'allow r' mgr 'allow r'
$ cephfs-top

字段说明

  1. chitCap 命中率

    文件功能命中占总功能数的百分比

  2. dlease目录项租约

    已授予的目录项租约占总目录项租约请求的百分比

  3. ofiles打开的文件数

    打开的文件数

  4. oicaps固定功能数

    固定的功能数

  5. oinodes打开的索引节点数

    打开的索引节点数

  6. rtio读取 IO 总大小

    所有进程生成的输入/输出操作中读取的字节数

  7. wtio写入 IO 总大小

    所有进程生成的输入/输出操作中写入的字节数

  8. raio读取 IO 平均大小

    所有进程生成的输入/输出操作中读取的字节数占总 IO 的平均值

  9. waio写入 IO 平均大小

    所有进程生成的输入/输出操作中写入的字节数占总 IO 的平均值

  10. rsp读取速度

    相对于上次客户端刷新的持续时间,读取 IO 的速度

  11. wsp写入速度

    相对于上次客户端刷新的持续时间,写入 IO 的速度

  12. rlatavg平均读取延迟

    读取延迟的平均值

  13. rlatsd读取延迟的标准偏差(方差)

    读取延迟指标相对于其平均值的离散程度

  14. wlatavg平均写入延迟

    写入延迟的平均值

  15. wlatsd写入延迟的标准偏差(方差)

    写入延迟指标相对于其平均值的离散程度

  16. mlatavg平均元数据延迟

    元数据延迟的平均值

  17. mlatsd元数据延迟的标准偏差(方差)

    元数据延迟指标相对于其平均值的离散程度

命令行选项

要使用非默认用户(非 client.fstop),请使用:

$ cephfs-top --id <name>

默认情况下,cephfs-top 连接到集群名称为 ceph 的集群。要使用非默认集群名称:

$ cephfs-top --cluster <cluster>

cephfs-top 默认每秒刷新一次统计信息。要选择不同的刷新间隔:

$ cephfs-top -d <seconds>

刷新间隔应为正整数。

要将指标转储到标准输出而不创建 curses 显示:

$ cephfs-top --dump

要将给定文件系统的指标转储到标准输出而不创建 curses 显示:

$ cephfs-top --dumpfs <fs_name>

交互式命令

  1. m文件系统选择

    显示文件系统菜单供选择。

  2. s排序字段选择

    指定排序字段。默认是 'cap_hit'。

  3. l客户端限制

    设置要显示的客户端数量限制。

  4. r重置

    将排序字段和限制值重置为默认值。

  5. q退出

    如果您在主屏幕(所有文件系统信息),则退出实用程序;否则返回主屏幕。

可以使用箭头键、PgUp/PgDn、Home/End 和鼠标滚动指标显示。

运行 cephfs-top(有两个文件系统)的示例截图

../../_images/cephfs-top.png

注意

cephfs-top 兼容的最低 Python 版本是 3.6.0。cephfs-top 支持 RHEL 8、Ubuntu 18.04、CentOS 8 及更高版本。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入