根据ceph 16版本的changelog,16版本提供了cephfs-top文件系统监控工具。刚好手头最近有个16版本的集群,便体验一下。
统计原理
文件系统客户端周期性向元数据服务发送各类监控指标(metrics),这部分数据由元数据服务路由到mds为rank 0的节点 。
元数据服务器(多活部署)同样会将自身的指标数据发送至rank 0节点。并由rank 0汇集之后发送给Ceph mgr服务。
工具的使用者可以看到两类和文件系统相关的数据:
1、全局数据。窥探文件系统整体情况,比如客户端延迟。
2、每个MDS服务的数据。比如每个MDS拥有的子树(但是实际体验没看到)。
MGR的stats插件
ceph-mgr作为管理组件,具有集成插件的能力。stats负责统计插件。使用前开启stats插件
ceph mgr module enable stats
由stats插件提供的文件系统性能统计命令
ceph fs perf stats [] [] []
(注:方括号代表可选)
不加mds_rank查看到的是整体文件系统监控指标。利用json形式查看。
ceph fs perf stats | python3 -m json.tool
输出如下:
{
"version": 1, //stat格式的版本号
"global_counters": [ //全局的性能统计参数:8个
"cap_hit",
"read_latency",
"write_latency",
"metadata_latency",
"dentry_lease",
"opened_files",
"pinned_icaps",
"opened_inodes"
],
"counters": [], //每个mds的性能统计参数
"client_metadata": { //客户端的元数据信息(这里的元数据非文件元数据)
"client.6459": {
"IP": "10.101.17.11",
"hostname": "jtfast01",
"root": "/",
"mount_point": "/mnt/cephfs",
"valid_metrics": [
"cap_hit",
"read_latency",
"write_latency",
"metadata_latency",
"dentry_lease",
"opened_files",
"pinned_icaps",
"opened_inodes"
]
}
},
"global_metrics": { //全局的性能统计情况
"client.6459": [
[
0,
0
],
[
0,
31697
],
.....
[
0,
1003
]
]
},
"metrics": { //每个mds的统计情况
"delayed_ranks": [],
"mds.0": {
"client.6459": []
},
"mds.1": {
"client.6459": []
}
}
}
尝试之后发现展示的信息还是不够直观。另外,MDS的统计信息都是空的。
其中属于客户端几个主要的参数:
参数 | 含义 | 备注 |
---|---|---|
cap_hit | cap命中率 | 衡量MDS实际分配(客户端保有)和客户端所需的cap之间的差异 |
read_latency | 读读操作总延迟 | 单位秒 |
write_latency | 写读操作总延迟 | 单位秒 |
metadata_latency | 元数据操作总延迟 | 单位秒 |
dentry_lease | 客户端dentry lease有效情况 | dentry在该客户端上可用比例 |
opened_files | 打开文件的数量 | 客户端有打开操作时数量有所变化 |
pinned_icaps | 在该节点pin的caps数量 | caps含p标志位 |
opened_inodes | 打开inode数量 | 一般和opened_files保持一致 |
几个延迟是总延迟,除以操作量才是平均延迟。
cephfs-top
cephfs-top是类似top的形式,依赖组件是mgr中的stats插件。使用python语言实现,展示主要是客户端的统计情况。
cephfs-top源码中,获取数据实现部分。
部署
创建client.fstop用户,该用户为cephfs-top工具默认使用的用户
ceph auth get-or-create client.fstop mon 'allow r' mds 'allow r' osd 'allow r' mgr 'allow r'
安装cephfs-top工具
yum install cephfs-top
如果出现 “RADOS permission denied”的错误。使用ceph auth get命令获得fstop的keyring至本地ceph默认配置目录。
ceph auth get client.fstop -o /etc/ceph/ceph.client.fstop.keyring
运行监控命令
cephfs-top
选项 -d 可以支持0.5s以上的展示频率。
内容展示
可展示信息:
1、客户端数量,统计FUSE、内核、libcephfs使用者。
2、客户端id;
3、客户端对应cephfs挂载目录;
4、客户端本地目录,IP地址;
5、chit cap的命中率。
6、rlat 读操作总延迟(单位s)
7、wlat 写操作总延迟(单位s)。
8、mlat 元数据操作总延迟(单位s)。
9、dlease dentry lease即客户端dentry可用率。
10、oicaps 该客户端持有caps的数量。
11、oinodes 该客户端打开文件持有inode的数量。
写在最后
在统计插件stats和cephfs-top出现前,ceph支持到各个组件所在节点通过命令查看性能统计。
ceph daemon /var/run/ceph/
.asok perf dump
比如客户端的延迟只能登陆到各个挂载节点查看。MDS的情况也只能在对应的节点通过ceph daemon方式查看。现在做了部分信息的汇总,对于运维和性能优化工作而言非常方便。
但是,统计的信息覆盖面还比较窄,组件的统计信息细节没有完全展示,如果要查看某个客户端或者MDS的统计信息,还是需要到各个节点上查看。cephfs-top还有可完善的空间。