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


78

journalctlCentOS 7システムで実行すると、最後のブート後に生成されたメッセージのみが出力されます。

コマンド

# 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マニュアルページには、バージョン番号として「systemd 208」が記載されています。)

回答:


99

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ページには、説明autoのように:

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

(鉱山を強調する)

したがって、systemd-journald.serviceのマニュアルページには次のように記載されています。

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

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

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

# mkdir /var/log/journal

そして、パーミッションを修正してjournaldを再起動します、例えば

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

6
それsystemctl restart systemd-journaldを行う必要があります。したがって、再起動は必要ありません。
xx4h 14年

@ xx4h、答えを更新
-maxschlepzig

9
Debianでは、これは次の場所で文書化されてい/usr/share/doc/systemd/README.Debianますinstall -d -g systemd-journal /var/log/journal
ペビック

@ pevik、CentOS 7システム(mkdirを使用したばかり)を調べましたが、現在のアクセス許可はdrwxr-sr-x. 3 root systemd-journal-おそらくjournald が初期化中にアクセス許可/所有権を修正します。
maxschlepzig

8
USR1巧妙なトリックを学びました:再起動する代わりにシグナルを送信する場合、現在のジャーナルされたコンテンツを失うことはありません。 killall -USR1 systemd-journald
ジェームズB

1
systemctl restart systemd-journald

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

mkdir /var/log/journal

ある変更ではv208

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

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

だから、あなたのような何かを実行する必要がありますsystemd-tmpfiles --create --prefix /var/log/journalmkdir /var/log/journal

こちらもご覧ください


うーん、または `chmod 4755 / var / log / journal; chown root:systemd-journal!:2 '-または再起動するだけです。回答を更新します。
maxschlepzig

@maxschlepzig、再起動だけでは機能しません:github.com/systemd/systemd/pull/1398#issuecomment-144247498
Evgeny Vereshchagin

chmod 4755 /var/log/journal; chown root:systemd-journal !:2正常に動作します。しかしtmpfiles:ジャーナルディレクトリでACLマジックを使用
Evgeny Vereshchagin

OK、別のバグ:)-回答を更新しました。
maxschlepzig
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.