journaldでユニットごとのログストレージポリシーを構成する方法


14

珍しいが重要な情報をログに記録する特定のサービスがあります。数か月前にセットアップしましたが、今日journalctl -n 50 --unit=my-serviceはエントリがないことを確認するためだけに実行しました。

ほとんどのユニットでこの動作に完全に満足しています。すぐに(または多くても数日前)起こったことが必要であり、数か月前のレコードは気にしません。

しかし、journald単一の特定のユニットのレコードに対して、独立したストレージおよび保持ポリシーを持つように指示する方法はありますか?私はそれらの特定のログを、たとえば5年間、それがかかるサイズに関係なく保持したいと考えています。他のユニットのログはこれによる影響を受けず、既存の動作を保持する必要があります。

私は理解を失っていてjournald.conf(5)、ユニット単位の構成が可能な場合はいつでも理解できません。もしそうなら-簡単で具体的な例に感謝します-どのファイルを編集/作成し、何を書くべきか。または、確かにそれが確実に実行できないことを知っている場合-それも同様に良い答えでしょう。

注:私の特定のケースにはArch Linuxホストが関係していますが、これはそれほど問題ではないと思います。


上記の回答にコメントして、この機能をjournaldに追加することに関する問題にこのリンクを追加することはできません。そのため、これは別の回答です:github.com/systemd/systemd/issues/4751
swoop81

回答:


7

私はジャーナリングで運が悪いようです。独立した "長期保存"ジャーナルを生成する方法(現在、ユーザーごとに異なるジャーナルがあるように)を見つけない限り、それが実行可能で健全なアプローチであるかどうかはわかりません。おそらく、syslogd(およびlogrotate)を設定する方が簡単でしょう。

Lennart自身が確認したように、この機能は2014年後半には存在しませんでした。

そして、それはまだここにないようです。少なくとも、「ジャーナル:ローテーション/バキューム時に優先度とサービスごとの保持時間を許可する」という行はまだTODOファイルにあります(2016-07-11のリビジョンへのリンク)。


3
これは非常に大きな設計上の欠陥のようで、ほとんど機能しなくなっています。特に、ログを詰まらせる、非常におしゃべりなユニットの保持または少なくともログレベルを下げたい場合は。
オリオン2017年

1
この質問時につまずく誰のために、TODOでの参照行がまだこのコメント(26.03.18)のように存在している:github.com/systemd/systemd/blob/...
TIMSS

1
それについていくつかの牽引力を得るために、私はプロジェクトの問題としてそれを提起しました-github.com/systemd/systemd/issues/9519
slm

1

ログファイルを生成するのは非常に簡単です。デフォルトでは、journaldへのすべてのロギングもsyslogに送られ、このデフォルトを設定する必要があります。rsyslog.confは、syslogに渡されたエントリの処理方法を制御します。さらに、SyslogFacilityデフォルトではdaemon、すべてのサービスのログエントリが通常のdaemon.logファイルに格納され/var/logます。

サービスファイルで、[service]セクションに追加します。

SyslogFacility=local2

(数字は0から7の間です)https://www.freedesktop.org/software/systemd/man/systemd.exec.html

/etc/rsyslog.confを変更して(変更する既存の行を見つけます)、local2が特定のファイル(最初の行)に記録され、理想的にはlocal2.none、次のように追加してsyslogに記録されないようにします(すでにジャーナルにあります)。

local2.*                        /var/log/your-service-name.log
*.*;auth,authpriv.none,local2.none          -/var/log/syslog

[編集]キャッチオールも修正する必要があります

*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none,local2.none      -/var/log/messages

もちろん、実際の保存は、logrotateで行う必要があります。

HTH

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