第2章 ロギングの設定
本章では、Ceph の各種サブシステム向けにロギングを設定する方法について説明します。
ロギングはリソース集約的作業です。また、詳細なロギングは比較的短時間に膨大な量のデータを生成しかねません。クラスターの特定のサブシステム内で問題が発生している場合は、該当するサブシステムのロギングのみを有効にしてください。詳細は、「Ceph サブシステム」 を参照してください。
また、ログファイルのローテーション設定も検討してください。詳細は 「ログローテーションの迅速化」 を参照してください。
問題が解決したら、サブシステムのログとメモリーのレベルをデフォルト値に戻します。Ceph の全サブシステムおよびそれらのデフォルト値については、付録A サブシステムのデフォルトのロギングレベル を参照してください。
Ceph のロギングは以下の方法で設定できます。
-
ランタイムに
ceph
コマンドを使用する。これが一般的なアプローチです。詳細は、「ランタイムのロギング設定」 を参照してください。 - Ceph 設定ファイルを更新する。クラスターの起動時に問題が発生している場合は、このアプローチを使用してください。詳細は、「Ceph 設定ファイルでのロギング設定」 を参照してください。
2.1. Ceph サブシステム リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ceph サブシステムとそれらのロギングレベルについて説明します。
Ceph サブシステムとロギングレベル
Ceph はいくつかのサブシステムで構成されており、各サブシステムには以下のロギングレベルがあります。
-
出力ログ。これはデフォルトで
/var/log/ceph/
ディレクトリーに保存されます (ログレベル)。 - メモリーキャッシュに保存されるログ (メモリーレベル)。
一般的に、Ceph は以下の場合を除いてメモリーにあるログを出力ログに送信しません。
- 致命的なシグナルが発生した場合。
- リソースコードのアサートが発動された場合。
- ユーザーがリクエストした場合。
Ceph のロギングレベルは、1
から 20
までの値を設定することができます。1
が最も簡潔で、20
が最も詳細になります。
ログレベルとメモリーレベルに単一の値を使用すると、それらに同じ値が設定されます。例えば、debug_osd = 5
とすると、ceph-osd
デーモンのデバッグレベルは 5
に設定されます。
ログレベルとメモリーレベルに異なる値を設定するには、それらの値をスラッシュ (/
) でわけます。例えば、debug_mon = 1/5
とすると、ceph-mon
デーモンのデバッグログレベルは 1
に、メモリーログレベルは 5
に設定されます。
よく使用される Ceph サブシステムとそのデフォルト値
サブシステム | ログレベル | メモリーレベル | 説明 |
---|---|---|---|
|
1 |
5 |
管理ソケット |
|
1 |
5 |
認証 |
|
0 |
5 |
|
|
1 |
5 |
FileStore OSD バックエンド |
|
1 |
5 |
OSD ジャーナル |
|
1 |
5 |
メタデータサーバー |
|
0 |
5 |
モニタークライアントが、Ceph デーモンとモニター間のほとんどの通信を処理します。 |
|
1 |
5 |
モニター |
|
0 |
5 |
Ceph コンポーネント間のメッセージングシステム |
|
0 |
5 |
OSD デーモン |
|
0 |
5 |
モニターが合意を確立するために使用するアルゴリズム |
|
0 |
5 |
Ceph の核となるコンポーネントの Reliable Autonomic Distributed Object Store |
|
0 |
5 |
Ceph ブロックデバイス |
|
1 |
5 |
Ceph オブジェクトゲートウェイ |
ログ出力の例
以下は、モニターおよび OSD 向けのログの詳細度を高めた場合に出力されるログメッセージの例です。
モニターのデバッグ設定
debug_ms = 5 debug_mon = 20 debug_paxos = 20 debug_auth = 20
debug_ms = 5
debug_mon = 20
debug_paxos = 20
debug_auth = 20
モニターのデバッグ設定のログ出力例
OSD のデバッグ設定
debug_ms = 5 debug_osd = 20 debug_filestore = 20 debug_journal = 20
debug_ms = 5
debug_osd = 20
debug_filestore = 20
debug_journal = 20
OSD のデバッグ設定のログ出力例
その他の参照先
2.2. ランタイムのロギング設定 リンクのコピーリンクがクリップボードにコピーされました!
ランタイムに Ceph デバッグ出力である dout()
をアクティベートするには、以下を実行します。
ceph tell <type>.<id> injectargs --debug-<subsystem> <value> [--<name> <value>]
ceph tell <type>.<id> injectargs --debug-<subsystem> <value> [--<name> <value>]
上記コマンドで
-
<type>
を Ceph デーモンのタイプ (osd
、mon
、またはmds
) で置き換えます。 -
<id>
を Ceph デーモンの特定 ID で置き換えます。別の方法では、*
を使ってランタイム設定を特定のタイプのデーモンすべてに適用することもできます。 -
<subsystem>
を特定のサブシステムで置き換えます。詳細は 「Ceph サブシステム」 を参照してください。 -
<value>
を1
から20
までの数字で置き換えます。1
が最も簡潔で、20
が最も詳細になります。
例えば、osd.0
という名前の OSD にある OSD サブシステムのログレベルを 0 に、メモリーレベルを 5 に設定するには、以下を実行します。
ceph tell osd.0 injectargs --debug-osd 0/5
# ceph tell osd.0 injectargs --debug-osd 0/5
ランタイム設定を確認するには、以下を実行します。
-
ceph-osd
やceph-mon
などの実行中の Ceph デーモンのあるホストにログインします。 設定を表示します。
ceph daemon <name> config show | less
ceph daemon <name> config show | less
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように Ceph デーモンの名前を指定します。
ceph daemon osd.0 config show | less
# ceph daemon osd.0 config show | less
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
その他の参照先
- 「Ceph 設定ファイルでのロギング設定」
- Red Hat Ceph Storage 2 の Configuration Guide に記載の Logging Configuration Reference の章。
2.3. Ceph 設定ファイルでのロギング設定 リンクのコピーリンクがクリップボードにコピーされました!
起動時に Ceph デバッグ出力である dout()
をアクティベートするには、Ceph 設定ファイルにデバッグ設定を追加します。
-
各デーモンで共通のサブシステムの場合は、
[global]
セクションに設定を追加します。 -
特定のデーモンのサブシステムの場合は、
[mon]
、[osd]
、または[mds]
などのデーモンのセクションに設定を追加します。
例を以下に示します。
その他の参照先
- 「Ceph サブシステム」
- 「ランタイムのロギング設定」
- Red Hat Ceph Storage 2 の Configuration Guide に記載の Logging Configuration Reference の章。
2.4. ログローテーションの迅速化 リンクのコピーリンクがクリップボードにコピーされました!
Ceph コンポーネントのデバッグレベルを上げると、大量のデータが生成される可能性があります。ディスクが満杯に近い場合は、/etc/logrotate.d/ceph
にある Ceph ログローテーションファイルを修正することでログのローテーションを早めることができます。Cron ジョブスケジューラーはこのファイルを使用してログのローテーションをスケジュールします。
手順: ログローテーションの迅速化
ログのローテーションファイルでローテーション頻度の後に size 設定を追加します。
rotate 7 weekly size <size> compress sharedscripts
rotate 7 weekly size <size> compress sharedscripts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例えば、ログファイルが 500 MB に達したらローテーションするようにします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crontab
エディターを開きます。crontab -e
$ crontab -e
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/logrotate.d/ceph
ファイルをチェックするようにするエントリーを追加します。Cron が 30 分ごとに/etc/logrotate.d/ceph
をチェックするようにするには、以下のようにします。30 * * * * /usr/sbin/logrotate /etc/logrotate.d/ceph >/dev/null 2>&1
30 * * * * /usr/sbin/logrotate /etc/logrotate.d/ceph >/dev/null 2>&1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
その他の参照先
- Red Hat Enterprise Linux 7 システム管理者のガイドの システムタスクの自動化 のセクション。