web-dev-qa-db-ja.com

CentOS 7で以前のブートからのログメッセージを表示するにはどうすればよいですか?

CentOS 7システムでjournalctlを実行すると、最後の起動後に生成されたメッセージが出力されるだけです。

コマンド

# journalctl --boot=-1

プリント

Failed to look up boot -1: Cannot assign requested address

ステータス1で終了します。

現在のFedoraシステムと比較すると、CentOS 7には/var/log/journalがありません(そしてjournalctl--list-bootsを提供していません)。

したがって、最後の起動日より前に書き込まれたログメッセージを表示する方法についての私の質問。

または、おそらくこの機能をCentOS 7で有効にする必要がありますか?

journalctl manページには、バージョン番号として「systemd 208」がリストされています。)

83
maxschlepzig

tl; dr

CentOS 7では、ログメッセージの永続的なストレージを有効にする必要があります。

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald

それ以外の場合、ジャーナルログメッセージはブート間で保持されません。

細部

journaldが以前のブートからのログメッセージを保持するかどうかは、/etc/systemd/journald.confを介して構成されます。 CentOS 7でのデフォルト設定は次のとおりです。

[Journal]
Storage=auto

journald.conf man pageautoを次のように説明しています。

「volatile」、「persistent」、「auto」、「none」のいずれか。 「揮発性」の場合、ジャーナルログデータはメモリ内、つまり/ run/log/journal階層(必要に応じて作成される)の下にのみ保存されます。 「永続的」の場合、データはディスクに、つまり/ var/log/journal階層(必要に応じて作成されます)の下に保存され、/ run/log/journal(必要に応じて作成されます)にフォールバックします。早期起動、およびディスクが書き込み可能でない場合。 「auto」は「永続的」に似ていますが、ディレクトリ/ var/log/journal必要に応じて作成されません。その存在により、ログデータの移動先が制御されます

(鉱山を強調)

systemd-journald.service man page はこうして次のように述べています:

デフォルトでは、ジャーナルはログデータを/ run/log/journal /に保存します。/run /は揮発性であるため、再起動時にログデータは失われます。データを永続化するには、systemd-journaldがデータを保存する/ var/log/journal /を作成するだけで十分です。

どうやら、デフォルトは Fedora 19で変更されました (永続的なストレージへ)でした。CentOS7はFedora 18から派生しているため、デフォルトではまだ永続的ではありません。永続性は、デフォルトで/var/log/messagesおよびrsyslogdによって書き込まれるローテーションバージョン/var/log/messages-YYYYMMDD(デフォルトで実行され、journaldから入力を取得)を介して、journaldの外部で実装されます。

したがって、RHEL/CentOS 7でjournaldを使用して永続的なロギングを有効にするには、

# mkdir /var/log/journal

次に、権限を修正し、journaldを再起動します。経由して

# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
108
maxschlepzig
systemctl restart systemd-journald

ログが失われる可能性があります: https://github.com/systemd/systemd/issues/2236 を参照してください

mkdir /var/log/journal

v208には change があります:

systemd-journaldは、作成するジャーナルファイルのグループを「systemd-journal」グループに調整しなくなりました。代わりに、「systemd-journal」グループが所有するジャーナルディレクトリとそのsetgidビットセットに依存しているため、カーネルファイルシステムレイヤーは、ジャーナルファイルがこのグループ割り当てを継承することを自動的に実施します。

Systemdに含まれるtmpfiles.d(5)スニペットは、すべてのブートで存在する場合、setgidビットとグループがジャーナルディレクトリに適切に設定されていることを確認します。

したがって、systemd-tmpfiles --create --prefix /var/log/journalの後にmkdir /var/log/journalのようなものを実行する必要があります

以下も参照してください

2