Ubuntu 16.04でdockerを実行していますが、ログを表示したいと考えています。しかし、ある種のローテーションであると推測したり、ログが特定のサイズに大きくなった後、ログを表示できません。
私はjournald.confに変更を加えていないため、ここではデフォルトを使用しています。
私が見ているものの例:
systemctl docker status
は、サービスがアクティブであることを確認しますsince Thu 2016-10-13 18:56:28 UTC
。
ただし、journalctl -u docker.service --until "2016-10-13 22:00"
のようなものを実行すると、得られる出力は-- Logs begin at Fri 2016-10-14 01:18:49 UTC, end at Fri 2016-10-14 16:18:25 UTC. --
だけです。期待どおりにその範囲のログを表示できます。
私の質問は、なぜジャーナルctlで古いログを表示できないのか、そしてログを表示できるようにこの問題をどのように修正できるのですか?
これが発生する理由は、保存されるジャーナルファイルのサイズのデフォルトが原因です。これについての詳細は ドキュメント内 です。リンクしたセクション全体を読む価値はありますが、デフォルトは次のように機能します。
journald will use 10% of the disk or 4G, whichever is smaller.
journald will leave free 15% of the disk or 4G, whichever is larger.
Storage=persistent
あなたのjournald.confで、他の回答ノートとして、あなたは--boot=-1
フラグをjournalctl
コマンドに付けて、前回の起動からログを取得します。
ホストが再起動されていないことが確認されたOPの場合、ログの損失は単にSystemMaxUse
および/またはSystemKeepFree
のデフォルトが原因でした。
注:私はOPですが、この質問にはまだ賛否両論あります。そのため、journald(およびrtfm)の経験が増えたので、他の人の役に立つことを願ってここに投稿します。
これは、最後の起動以降にジャーナルを確認しようとしているためである可能性があります。これは、Dockerイメージ内のケースのようです。
Ubuntu 16.04では、ジャーナルストレージはデフォルトでメモリ内にあります。 /etc/systemd/journald.conf
を開き、Storage=
行をauto
からpersistent
に変更することで、デフォルトを永続的に変更できます。設定ファイルを編集した後、systemctl restart systemd-journald
によってjournaldを再起動する必要がある場合があります。
ジャーナルはデフォルトで永続的でなければならない だと思うので、それに関するバグを公開しました。