目錄
即看即用
1 運行時
查看配置
運行時執行下列命令,用 osd 、 mon 或 mds 替代 {daemon-type}:
ceph daemon {daemon-name} config show | less
例如:
ceph daemon osd.0 config show | less
激活 Ceph 的調試輸出(dout() )
ceph tell 命令把參數注入運行時配置:
ceph tell {daemon-type}.{daemon id or *} injectargs --{name} {value} [--{name} {value}]
用 osd 、 mon 或 mds 替代 {daemon-type} 。 * 同類型的所有守護進程,id:指定具體守護進程。例如:
ceph tell osd.0 injectargs --debug-osd 0/5
ceph tell 命令會通過 monitor 起作用。如果你不能綁定 monitor,仍可以登錄你要改的那台主機然后用 ceph daemon 來更改。例如:
sudo ceph daemon osd.0 config set debug_osd 0/5
2 啟動時
激活 Ceph 的調試輸出(dout() )
把選項加入配置文件, [global] 段:各進程共有, [mon] 、 [osd] 、 [mds] :某類進程的配置。例如:
[global]
debug ms = 1/5
[mon]
debug mon = 20
debug paxos = 1/5
debug auth = 2
[osd]
debug osd = 1/5
debug filestore = 1/5
debug journal = 1
debug monc = 5/20
[mds]
debug mds = 1
debug mds balancer = 1
debug mds log = 1
debug mds migrator = 1
3 加速日志更迭
logrotate是linux下負責檢查日志和切割輪轉的服務,它的配置文件在 /etc/logrotate.d/目錄下,/etc/logrotate.d/ceph是ceph添加的配置,
例如默認配置大致如此:
rotate 7
weekly
compress
sharedscripts
增加一個 size 選項,表示當日志的size達到500M就執行切割和輪轉( rotate 7只保留最近7個日志文件)
rotate 7
weekly
size 500M
compress
sharedscripts
然后,打開 crontab 編輯器。
crontab -e
最后,增加一條用以檢查 /etc/logrorate.d/ceph 文件的語句。
30 * * * * /usr/sbin/logrotate /etc/logrotate.d/ceph >/dev/null 2>&1
本例中每 30 分鍾檢查一次 /etc/logrorate.d/ceph 文件。
4 子系統、日志和調試設置
大多數情況下,你可以通過子系統打開調試日志輸出。
日志文件(log file level)和 內存日志(memory level),可以子系統(ms、osd、rdb等)設置為統一級別,也可以分別為不同級別(用正斜杠(/)分隔它們)。如下:
debug {subsystem} = {log-level}/{memory-level}
#for example
#日志文件級別 和 內存日志級別都設置成5
debug ms = 5
#日志文件級別設置為1,內存日志級別設置為5
debug ms = 1/5
詳細說明
內容:
Ceph日志分類(一個分兩類log file level和memory level)、怎么設置日志級別、日志存在哪個目錄等
日志和調試
一般來說,你應該在運行時增加調試選項來調試問題;也可以把調試選項添加到 Ceph 配置文件里來調試集群啟動時的問題,然后查看 /var/log/ceph (默認位置)下的日志文件。
查看日志路徑的命令,請參考:ceph命令系列(一):ceph-deploy/ceph/rados/rbd 常用命令詳解
Tip: 調試輸出會拖慢系統,這種延時有可能掩蓋競爭條件。
日志記錄是資源密集型任務。如果你碰到的問題在集群的某個特定區域,只啟用那個區域對應的日志功能即可。例如,你的 OSD 運行良好、元數據服務器卻有問題,這時應該先打開那個可疑元數據服務器實例的調試日志;如果不行再打開各子系統的日志。
重要: 詳盡的日志每小時可能超過 1GB ,如果你的系統盤滿了,這個節點就會停止工作。
如果你要打開或增加 Ceph 日志級別,確保有足夠的系統盤空間。滾動日志(Log Rotation)的方法見下面的 加速日志更迭 小節。集群穩定運行后,可以關閉不必要的調試選項以優化運行。集群在運行中記錄調試輸出信息會拖慢系統、且浪費資源。
運行時
如果你想在運行時查看某一進程的配置,必須先登錄對應主機,然后執行下列命令,用 osd 、 mon 或 mds 替代 {daemon-type}:
ceph daemon {daemon-name} config show | less
例如:
ceph daemon osd.0 config show | less
要在運行時激活 Ceph 的調試輸出(即 dout() ),用 ceph tell 命令把參數注入運行時配置:
ceph tell {daemon-type}.{daemon id or *} injectargs --{name} {value} [--{name} {value}]
用 osd 、 mon 或 mds 替代 {daemon-type} 。還可以用星號( * )把配置應用到同類型的所有守護進程,或者指定具體守護進程的 ID 。例如,要給名為 ods.0 的 ceph-osd 守護進程提高調試級別,用下列命令:
ceph tell osd.0 injectargs --debug-osd 0/5
ceph tell 命令會通過 monitor 起作用。如果你不能綁定 monitor,仍可以登錄你要改的那台主機然后用 ceph daemon 來更改。例如:
sudo ceph daemon osd.0 config set debug_osd 0/5
啟動時
要在啟動時激活調試輸出(即 dout() ),你得把選項加入配置文件。各進程共有配置可寫在配置文件的 [global] 段下,某類進程的配置可寫在對應的守護進程段下(如 [mon] 、 [osd] 、 [mds] )。例如:
[global]
debug ms = 1/5
[mon]
debug mon = 20
debug paxos = 1/5
debug auth = 2
[osd]
debug osd = 1/5
debug filestore = 1/5
debug journal = 1
debug monc = 5/20
[mds]
debug mds = 1
debug mds balancer = 1
debug mds log = 1
debug mds migrator = 1
加速日志更迭
如果你的系統盤比較滿,可以修改 /etc/logrotate.d/ceph 內的日志滾動配置以加快滾動。在滾動頻率后增加一個日志 size 選項(達到此大小就滾動)來加快滾動(通過 cronjob )。例如默認配置大致如此:
rotate 7
weekly
compress
sharedscripts
增加一個 size 選項。
rotate 7
weekly
size 500M
compress
sharedscripts
然后,打開 crontab 編輯器。
crontab -e
最后,增加一條用以檢查 /etc/logrorate.d/ceph 文件的語句。
30 * * * * /usr/sbin/logrotate /etc/logrotate.d/ceph >/dev/null 2>&1
本例中每 30 分鍾檢查一次 /etc/logrorate.d/ceph 文件。
VALGRIND 工具
調試時可能還需要追蹤內存和線程問題。你可以在 Valgrind 中運行單個守護進程、一類進程、或整個集群。 Valgrind 是計算密集型程序,應該只用於開發或調試 Ceph,否則它會拖慢系統。Valgrind 的消息會記錄到 stderr 。
子系統、日志和調試設置
大多數情況下,你可以通過子系統打開調試日志輸出。
各子系統都有日志級別用於分別控制其輸出到日志文件(log file level)和 內存日志(memory level),你可以分別為這些子系統設置不同的記錄級別。如下:
debug {subsystem} = {log-level}/{memory-level}
#for example
debug ms = 5
如果指定debug ms=5,CEPH將把它視為把日志級別 和 內存級別都設置成5。您也可以單獨指定它們。第一個設置是日志級別,第二個設置是內存級別。必須用正斜杠(/)分隔它們。例如,如果要將MS子系統的調試日志記錄級別設置為1,並將其內存級別設置為5,則將其指定為debug ms=1/5。例如:
Ceph 的日志級別范圍是 1~20 , 1 是簡潔、 20 是詳細。通常,內存駐留日志不會發送到輸出日志,除非:
致命信號出現,或者
源碼中的 assert 被觸發,或者
明確要求發送。
Ceph 子系統及其默認日志和內存級別具體見Ceph官方文檔 SUBSYSTEM, LOG AND DEBUG SETTINGS 。一旦你完成調試,應該恢復默認值,或一個適合平常運營的級別。
下表列出了CEPH子系統的 默認日志級別 和內存日志級別。你可以在完成日志記錄工作后,將子系統恢復到默認級別或適合正常操作的級別。
(圖表見原文)
原文鏈接:https://blog.csdn.net/don_chiang709/article/details/95628708
