根據(jù)ceph 16版本的changelog杉编,16版本提供了cephfs-top文件系統(tǒng)監(jiān)控工具大咱。剛好手頭最近有個16版本的集群,便體驗(yàn)一下焕刮。
統(tǒng)計(jì)原理
文件系統(tǒng)客戶端周期性向元數(shù)據(jù)服務(wù)發(fā)送各類監(jiān)控指標(biāo)(metrics)舶沿,這部分?jǐn)?shù)據(jù)由元數(shù)據(jù)服務(wù)路由到mds為rank 0的節(jié)點(diǎn) 。
元數(shù)據(jù)服務(wù)器(多活部署)同樣會將自身的指標(biāo)數(shù)據(jù)發(fā)送至rank 0節(jié)點(diǎn)济锄。并由rank 0匯集之后發(fā)送給Ceph mgr服務(wù)暑椰。
工具的使用者可以看到兩類和文件系統(tǒng)相關(guān)的數(shù)據(jù):
1霍转、全局?jǐn)?shù)據(jù)荐绝。窺探文件系統(tǒng)整體情況,比如客戶端延遲避消。
2低滩、每個MDS服務(wù)的數(shù)據(jù)。比如每個MDS擁有的子樹(但是實(shí)際體驗(yàn)沒看到)岩喷。
MGR的stats插件
ceph-mgr作為管理組件恕沫,具有集成插件的能力。stats負(fù)責(zé)統(tǒng)計(jì)插件纱意。使用前開啟stats插件
ceph mgr module enable stats
由stats插件提供的文件系統(tǒng)性能統(tǒng)計(jì)命令
ceph fs perf stats [<mds_rank>] [<client_id>] [<client_ip>]
(注:方括號代表可選)
不加mds_rank查看到的是整體文件系統(tǒng)監(jiān)控指標(biāo)婶溯。利用json形式查看。
ceph fs perf stats | python3 -m json.tool
輸出如下:
{
"version": 1, //stat格式的版本號
"global_counters": [ //全局的性能統(tǒng)計(jì)參數(shù):8個
"cap_hit",
"read_latency",
"write_latency",
"metadata_latency",
"dentry_lease",
"opened_files",
"pinned_icaps",
"opened_inodes"
],
"counters": [], //每個mds的性能統(tǒng)計(jì)參數(shù)
"client_metadata": { //客戶端的元數(shù)據(jù)信息(這里的元數(shù)據(jù)非文件元數(shù)據(jù))
"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": { //全局的性能統(tǒng)計(jì)情況
"client.6459": [
[
0,
0
],
[
0,
31697
],
.....
[
0,
1003
]
]
},
"metrics": { //每個mds的統(tǒng)計(jì)情況
"delayed_ranks": [],
"mds.0": {
"client.6459": []
},
"mds.1": {
"client.6459": []
}
}
}
嘗試之后發(fā)現(xiàn)展示的信息還是不夠直觀偷霉。另外迄委,MDS的統(tǒng)計(jì)信息都是空的。
其中屬于客戶端幾個主要的參數(shù):
參數(shù) | 含義 | 備注 |
---|---|---|
cap_hit | cap命中率 | 衡量MDS實(shí)際分配(客戶端保有)和客戶端所需的cap之間的差異 |
read_latency | 讀讀操作總延遲 | 單位秒 |
write_latency | 寫讀操作總延遲 | 單位秒 |
metadata_latency | 元數(shù)據(jù)操作總延遲 | 單位秒 |
dentry_lease | 客戶端dentry lease有效情況 | dentry在該客戶端上可用比例 |
opened_files | 打開文件的數(shù)量 | 客戶端有打開操作時數(shù)量有所變化 |
pinned_icaps | 在該節(jié)點(diǎn)pin的caps數(shù)量 | caps含p標(biāo)志位 |
opened_inodes | 打開inode數(shù)量 | 一般和opened_files保持一致 |
幾個延遲是總延遲类少,除以操作量才是平均延遲叙身。
cephfs-top
cephfs-top是類似top的形式,依賴組件是mgr中的stats插件硫狞。使用python語言實(shí)現(xiàn)信轿,展示主要是客戶端的統(tǒng)計(jì)情況晃痴。
cephfs-top源碼中,獲取數(shù)據(jù)實(shí)現(xiàn)部分财忽。
部署
創(chuàng)建client.fstop用戶倘核,該用戶為cephfs-top工具默認(rèn)使用的用戶
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
如果出現(xiàn) “RADOS permission denied”的錯誤。使用ceph auth get命令獲得fstop的keyring至本地ceph默認(rèn)配置目錄即彪。
ceph auth get client.fstop -o /etc/ceph/ceph.client.fstop.keyring
運(yùn)行監(jiān)控命令
cephfs-top
選項(xiàng) -d 可以支持0.5s以上的展示頻率笤虫。
內(nèi)容展示
可展示信息:
1、客戶端數(shù)量祖凫,統(tǒng)計(jì)FUSE琼蚯、內(nèi)核、libcephfs使用者惠况。
2遭庶、客戶端id;
3稠屠、客戶端對應(yīng)cephfs掛載目錄峦睡;
4、客戶端本地目錄权埠,IP地址榨了;
5、chit cap的命中率攘蔽。
6龙屉、rlat 讀操作總延遲(單位s)
7、wlat 寫操作總延遲(單位s)满俗。
8转捕、mlat 元數(shù)據(jù)操作總延遲(單位s)。
9唆垃、dlease dentry lease即客戶端dentry可用率五芝。
10、oicaps 該客戶端持有caps的數(shù)量辕万。
11枢步、oinodes 該客戶端打開文件持有inode的數(shù)量。
寫在最后
在統(tǒng)計(jì)插件stats和cephfs-top出現(xiàn)前渐尿,ceph支持到各個組件所在節(jié)點(diǎn)通過命令查看性能統(tǒng)計(jì)醉途。
ceph daemon /var/run/ceph/<instance>.asok perf dump
比如客戶端的延遲只能登陸到各個掛載節(jié)點(diǎn)查看。MDS的情況也只能在對應(yīng)的節(jié)點(diǎn)通過ceph daemon方式查看∥写粒現(xiàn)在做了部分信息的匯總结蟋,對于運(yùn)維和性能優(yōu)化工作而言非常方便。
但是渔彰,統(tǒng)計(jì)的信息覆蓋面還比較窄嵌屎,組件的統(tǒng)計(jì)信息細(xì)節(jié)沒有完全展示推正,如果要查看某個客戶端或者M(jìn)DS的統(tǒng)計(jì)信息,還是需要到各個節(jié)點(diǎn)上查看宝惰。cephfs-top還有可完善的空間植榕。