journalctl
最近、私は16GBのSDカード(Raspberry Pi)の大部分を占めていることに気づきました。
$ journalctl --disk-usage
Archived and active journals take up 312.1M in the file system.
私はこのようなjournalctl
気がしませんjournald
。頑張るこのマシンの私のユースケースでは。古いRPiでrsyslog
動作します。私の要件と使用量journalctl
は次のとおりです。「一生に一度」。したがって、私はjournald
「フィード」を無効にすることにしましたjournalctl
。私はそれが次の起動時に起動しないように簡単だと思いsystemctl
ますstop
。disable
systemd-journald.service
プラグを抜く前に、私はいくつかの調査をすることにしました。 「方法」のアドバイスを提供する何千もの参考資料を見つけるのではなく、特定の検索クエリの結果はほとんどありませんでした。「ロギングを無効にする方法」。代わりに、結果は主に減少のjournald
提案を提供します。LF。私はしばらく停止するいくつかの参考資料を見つけました。
journald
ArchLinuxフォーラムの古い投稿によると、なしでは無効にすることはできません。エコー;つまり、"Masking systemd-journald causes all kinds of dependency failures and drops you at an emergency prompt."
この記事は10年前の記事です...
これsystemd-journald.サービスマニュアル説明する、"stopping it [systemd-journald.service] is not recommended."
。文書はそこから始まります名前空間?
systemd
デバイスの起動を防ぐための一般的なコマンドは効果がないことを学びました。つまり、正常に起動します。
$ sudo systemctl disable systemd-journald.service
$ sudo reboot
# ... and after boot & login:
$ systemctl status systemd-journald.service
● systemd-journald.service - Journal Service
Loaded: loaded (/lib/systemd/system/systemd-journald.service; static)
Active: active (running) since Fri 2022-06-03 07:30:29 UTC; 1min 59s ago
TriggeredBy: ● systemd-journald-audit.socket
● systemd-journald.socket
● systemd-journald-dev-log.socket
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 134 (systemd-journal)
Status: "Processing requests..."
Tasks: 1 (limit: 1598)
CPU: 820ms
CGroup: /system.slice/systemd-journald.service
└─134 /lib/systemd/systemd-journald
...
$
どうすればjournald
無効にできますか? ...または無効にすることはできますか?
そうでない場合は、systemd
なぜ開発者がユーザーにこれを強制するのですか? (はい、アドバイスを求めることですので、質問の該当部分を忘れてください。)
答え1
journald
使用時に取り除きたくない理由は、その情報を得ることができるからrsyslogd
です。rsyslogd
~から日記帳、そんなふうに二人が上手に遊びます。
これは、コメントにリンクされている一部のQ&Aとは多少相反します。ログが揮発性(メモリ内)リポジトリのみを使用し、rsyslog
実際のログファイルに書き込むように構成されている現在のLinuxシステム(FedoraとDebianで確認)で、これについてのいくつかの観察は次のとおりです。
/var/run/log
は 1 つのサブディレクトリがあるディレクトリです。これには、およびで作成したファイルがjournal
含まれています。systemd-journald
リーダーrsyslogd
。このディレクトリはtmpfs
パーティションにあるため、メモリの揮発性ストレージと見なされます。/dev/log
へのシンボリックリンクです/run/systemd/journal/dev-log
。
これらのシステムには/etc/rsyslog.conf
以下が含まれます(在庫なしrsyslog.conf
)。
# Input
module (
load="imjournal"
...
)
FedoraとDebianの違いはデフォルト設定にあります。電子imjournal
も使用しますimuxsock
(ユーザースペースソケット)。1 Debian はカーネル自体を受け取る必要がないため、imuxsock
and (カーネルログ) を使用します。私も性格がちょっと合わなかったと思いました。imklog
imjournal
私のポイントの1つは、ロギングを完全に削除することは不可能ではありませんが、悪い考えだということです。これは、現代のシステムベースのシステムの重要なコンポーネントです。欠点は、rsyslogよりも多くのディスク容量を使用できることですが、これはStorage=volatile
(たとえば)を使用して簡単に設定できます。RuntimeMaxUse=64M
/etc/systemd/journald
Journaldからrsyslogdを取得するのはバックエンド/フロントエンドの関係です。 rsyslogはプレーンテキストのロギングと記録される内容、場所、方法のより細かい制御を提供しますが、Journaldはシステムサービスとのより良い統合を提供するので優れています。
- rsyslog は
imuxsock
as の使用imuxjournal
が効率が悪く、他の問題が発生する可能性があることを示唆しています。これに対するAndrew Henryの答えと以下の説明も参照してください。
答え2
ロギングを無効にする方法は?
まず、これRsyslogd ドキュメントでは、imjournal
systemd ログからログメッセージを取得するモジュールについて説明します。(太字はオリジナルで、イタリック体は私が強調したものです):
このモジュールはログデータベースを読み込みます。比較的パフォーマンスが集中するタスクとみなされるタスク。したがって、このモジュールを利用する構成のパフォーマンスは次のとおりです。imuxsockを使用する場合よりも著しく遅い。このログはすべての「クラシック」syslogメッセージのコピーをimuxsockに提供しますが、構造化データは提供しません。 Imjournalは、構造化データが必要な場合にのみ使用してください。 それ以外の場合は、imjournalをimuxsockに置き換えることができ、それを強くお勧めします。。
意図されたユースケースの詳細については、rsyslogロギング統合の短いデモを確認することをお勧めします。
警告する:特定のバージョンのsystemdログにはデータベースの破損の問題があり、ログは緊密なループで同じデータを無限に返します。これにより、rsyslog 内で多数のメッセージが重複し、システム リソースが枯渇した場合にサービス拒否が発生する可能性があります。これは適切なスピードリミッタを使用してある程度軽減できますが、それでも古いデータには無限に繰り返される急増があります。デフォルトではレート制限が有効になっており、10分で20,000メッセージを処理できます。これはほとんどのユースケースには十分です。十分でない場合は、以下のパラメータを使用して許容される音量を調整してください。必要な場合にのみこのプラグインを使用することをお勧めします。。
rsyslogに「構造化データ」を提供する必要がある「緊急のニーズ」はありますか?これを行うときは、より多くのCPUサイクルを使用しますが、はるかに遅くなりますか?
systemdのログを直接rsyslogに置き換えるのは簡単です。
編集する
/etc/rsyslog.conf
。imjournal
とへのすべての参照を削除しますimuxsock
。上記の行を次のように置き換えます。
module(load="imuxsock" # provides support for local system logging (e.g. via logger command)
SysSock.Use="on") # Turn on message reception via local log socket;
次のコマンドを実行します。
systemctl stop systemd-journal-flush.service systemd-journald.service systemd-journald-dev-log.socket systemd-journald.socket
走る
systemctl stop systemd-journal-flush.service systemd-journald.service systemd-journald-dev-log.socket systemd-journald.socket
走る
systemctl restart rsyslog
確認メッセージが表示されます。
/var/log/messages
他。
特に、より多くのシステムサービスを無効にして、これらのコマンドのいくつかを調整する必要があるかもしれません。
答え3
このサービスを無効にしてもデバイスの動作が中断されることはありませんが、ロギングは著しく停止します。他の問題は見えません。