【Ceph】Ceph 進階系列(一):Ceph日志和調試[new]


目錄

即看即用

1 運行時

2 啟動時

3 加速日志更迭

4 子系統、日志和調試設置

詳細說明


即看即用

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM