Journalctlを使用してシステムログを表示および操作する方法

前書き

systemdの最も魅力的な利点のいくつかは、プロセスとシステムのロギングに関係するものです。 他のツールを使用する場合、ログは通常、システム全体に分散され、異なるデーモンとプロセスによって処理され、複数のアプリケーションにまたがる場合、解釈がかなり困難になる場合があります。 Systemdは、すべてのカーネルお​​よびユーザーランドプロセスをログに記録するための集中管理ソリューションを提供することにより、これらの問題に対処しようとします。 これらのログを収集および管理するシステムは、ジャーナルと呼ばれます。

ジャーナルは、カーネル、initrd、サービスなどによって生成されたすべてのメッセージを処理するjournaldデーモンで実装されます。 このガイドでは、ジャーナル内に保持されているデータにアクセスして操作するために使用できるjournalctlユーティリティの使用方法について説明します。

一般的なアイデア

systemdジャーナルの背後にある推進力の1つは、メッセージの発信元に関係なく、ログの管理を一元化することです。 ブートプロセスとサービス管理の多くはsystemdプロセスによって処理されるため、ログの収集とアクセスの方法を標準化することは理にかなっています。 journaldデーモンは、利用可能なすべてのソースからデータを収集し、簡単で動的な操作のためにバイナリ形式で保存します。

これにより、多くの重要な利点が得られます。 単一のユーティリティを使用してデータを操作することにより、管理者はニーズに応じてログデータを動的に表示できます。 これは、3回前のブートのブートデータを表示したり、2つの関連サービスのログエントリを順番に組み合わせて通信の問題をデバッグしたりするのと同じくらい簡単です。

ログデータをバイナリ形式で保存すると、現時点で必要なものに応じて、データを任意の出力形式で表示できます。 たとえば、毎日のログ管理では、標準のsyslog形式でログを表示することに慣れているかもしれませんが、後でサービスの中断をグラフ化することにした場合は、各エントリをJSONオブジェクトとして出力して、次のように使用できるようにすることができます。グラフ作成サービス。 データはプレーンテキストでディスクに書き込まれないため、別のオンデマンド形式が必要な場合、変換は必要ありません。

systemdジャーナルは、必要に応じて、既存のsyslog実装で使用することも、syslog機能を置き換えることもできます。 systemdジャーナルは、ほとんどの管理者のロギングニーズをカバーしますが、既存のロギングメカニズムを補完することもできます。 たとえば、複数のサーバーからのデータをコンパイルするために使用する一元化されたsyslogサーバーがある場合がありますが、単一システム上の複数のサービスからのログをsystemdジャーナルでインターリーブしたい場合もあります。 これらのテクノロジーを組み合わせることで、これらの両方を実行できます。

システム時刻の設定

ロギングにバイナリジャーナルを使用する利点の1つは、ログレコードをUTCまたは現地時間で自由に表示できることです。 デフォルトでは、systemdは現地時間で結果を表示します。

このため、ジャーナルを始める前に、タイムゾーンが正しく設定されていることを確認します。 systemdスイートには、実際にはこれを支援できるtimedatectlというツールが付属しています。

まず、list-timezonesオプションで使用できるタイムゾーンを確認します。

timedatectl list-timezones

これにより、システムで利用可能なタイムゾーンがリストされます。 サーバーの場所に一致するものが見つかったら、set-timezoneオプションを使用して設定できます。

sudo timedatectl set-timezone zone

マシンが現在正しい時刻を使用していることを確認するには、timedatectlコマンドを単独で使用するか、statusオプションを指定して使用します。 表示は同じです:

timedatectl status
      Local time: Thu 2015-02-05 14:08:06 EST
  Universal time: Thu 2015-02-05 19:08:06 UTC
        RTC time: Thu 2015-02-05 19:08:06
       Time zone: America/New_York (EST, -0500)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

最初の行には正しい時間が表示されます。

基本的なログ表示

journaldデーモンが収集したログを表示するには、journalctlコマンドを使用します。

単独で使用する場合、システム内のすべてのジャーナルエントリは、閲覧できるようにポケットベル(通常はless)内に表示されます。 最も古いエントリが上になります:

journalctl
-- Logs begin at Tue 2015-02-03 21:48:52 UTC, end at Tue 2015-02-03 22:29:38 UTC. --
Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49.
Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is using 6.2M (max allowed 49.
Feb 03 21:48:52 localhost.localdomain systemd-journald[139]: Received SIGTERM from PID 1 (systemd).
Feb 03 21:48:52 localhost.localdomain kernel: audit: type=1404 audit(1423000132.274:2): enforcing=1 old_en
Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules.
Feb 03 21:48:52 localhost.localdomain kernel: SELinux: 2048 avtab hash slots, 104131 rules.
Feb 03 21:48:52 localhost.localdomain kernel: input: ImExPS/2 Generic Explorer Mouse as /devices/platform/
Feb 03 21:48:52 localhost.localdomain kernel: SELinux:  8 users, 102 roles, 4976 types, 294 bools, 1 sens,
Feb 03 21:48:52 localhost.localdomain kernel: SELinux:  83 classes, 104131 rules

. . .

スクロールするページとデータのページがある可能性があります。これは、systemdがシステムに長期間存在する場合、数万行から数十万行の長さになる可能性があります。 これは、ジャーナルデータベースで使用可能なデータ量を示しています。

この形式は、標準のsyslogロギングに慣れている人にはおなじみです。 ただし、これは実際には、従来のsyslogの実装で可能なよりも多くのソースからデータを収集します。 これには、初期ブートプロセス、カーネル、initrd、およびアプリケーション標準エラーのログが含まれます。 これらはすべてジャーナルで入手できます。

表示されているすべてのタイムスタンプが現地時間であることに気付くかもしれません。 これは、システムで現地時間が正しく設定されているため、すべてのログエントリで使用できます。 この新しい情報を使用して、すべてのログが表示されます。

タイムスタンプをUTCで表示する場合は、--utcフラグを使用できます。

journalctl --utc

時間によるジャーナルフィルタリング

このような大量のデータコレクションにアクセスできることは間違いなく有用ですが、そのような大量の情報は、精神的に検査および処理することが困難または不可能な場合があります。 このため、journalctlの最も重要な機能の1つは、フィルタリングオプションです。

現在のブートからのログの表示

毎日使用する可能性のあるこれらの中で最も基本的なものは、-bフラグです。 これにより、最新の再起動以降に収集されたすべてのジャーナルエントリが表示されます。

journalctl -b

これは、現在の環境に関連する情報を識別および管理するのに役立ちます。

この機能を使用しておらず、1日以上の起動を表示している場合は、システムがダウンするたびにjournalctlが次のような行を挿入していることがわかります。

. . .

-- Reboot --

. . .

これは、情報をブートセッションに論理的に分離するのに役立ちます。

過去のブーツ

通常、現在のブートからの情報を表示する必要がありますが、確かに過去のブートも役立つ場合があります。 ジャーナルは以前の多くの起動からの情報を保存できるため、journalctlで情報を簡単に表示できます。

一部のディストリビューションでは、デフォルトで以前のブート情報の保存が可能ですが、他のディストリビューションではこの機能が無効になっています。 永続的なブート情報を有効にするには、次を入力してジャーナルを保存するディレクトリを作成します。

sudo mkdir -p /var/log/journal

または、ジャーナル構成ファイルを編集できます。

sudo nano /etc/systemd/journald.conf

[Journal]セクションで、Storage=オプションを「persistent」に設定して、永続的なロギングを有効にします。

/etc/systemd/journald.conf

. . .
[Journal]
Storage=persistent

サーバーで以前のブートの保存が有効になっている場合、journalctlは、分割の単位としてブートを操作するのに役立ついくつかのコマンドを提供します。 journaldが認識しているブーツを確認するには、journalctl--list-bootsオプションを使用します。

journalctl --list-boots
-2 caf0524a1d394ce0bdbcff75b94444fe Tue 2015-02-03 21:48:52 UTC—Tue 2015-02-03 22:17:00 UTC
-1 13883d180dc0420db0abcb5fa26d6198 Tue 2015-02-03 22:17:03 UTC—Tue 2015-02-03 22:19:08 UTC
 0 bed718b17a73415fade0e4e7f4bea609 Tue 2015-02-03 22:19:12 UTC—Tue 2015-02-03 23:01:01 UTC

これにより、ブートごとに1行が表示されます。 最初の列は、journalctlでブートを簡単に参照するために使用できるブートのオフセットです。 絶対参照が必要な場合、ブートIDは2列目にあります。 ブートセッションが参照する時間は、最後にリストされている2つの時間指定で確認できます。

これらのブートからの情報を表示するには、最初または2番目の列の情報を使用できます。

たとえば、前回の起動時のジャーナルを表示するには、-bフラグを指定した-1相対ポインターを使用します。

journalctl -b -1

ブートIDを使用して、ブートからデータをコールバックすることもできます。

journalctl -b caf0524a1d394ce0bdbcff75b94444fe

時間枠

ブートごとにログエントリを表示することは非常に便利ですが、多くの場合、システムブートとうまく整合しない時間枠を要求することができます。 これは、長時間稼働しているサーバーを長時間使用する場合に特に当てはまります。

--sinceおよび--untilオプションを使用して、任意の時間制限でフィルタリングできます。これらのオプションは、表示されるエントリを、それぞれ指定された時間の後または前のエントリに制限します。

時間値にはさまざまな形式があります。 絶対時間値の場合、次の形式を使用する必要があります。

YYYY-MM-DD HH:MM:SS

たとえば、次のように入力すると、2015年1月10日午後5時15分以降のすべてのエントリを表示できます。

journalctl --since "2015-01-10 17:15:00"

上記の形式のコンポーネントを省略した場合、いくつかのデフォルトが適用されます。 たとえば、日付が省略された場合、現在の日付が想定されます。 時間コンポーネントが欠落している場合、「00:00:00」(真夜中)に置き換えられます。 秒フィールドは、デフォルトで「00」に設定することもできます。

journalctl --since "2015-01-10" --until "2015-01-11 03:00"

ジャーナルは、いくつかの相対値と名前付きショートカットも理解します。 たとえば、「昨日」、「今日」、「明日」、「今」などの単語を使用できます。 番号付きの値の前に「-」または「+」を追加するか、文の構成で「ago」などの単語を使用して、相対時間を実行します。

昨日からデータを取得するには、次のように入力できます。

journalctl --since yesterday

午前9時から1時間前まで続くサービス中断のレポートを受け取った場合、次のように入力できます。

journalctl --since 09:00 --until "1 hour ago"

ご覧のとおり、柔軟な時間枠を定義して、見たいエントリをフィルタリングするのは比較的簡単です。

メッセージインタレストによるフィルタリング

上記で、時間の制約を使用してジャーナルデータをフィルタリングする方法をいくつか学びました。 このセクションでは、関心のあるサービスまたはコンポーネントに基づいてフィルタリングする方法について説明します。 systemdジャーナルは、これを行うためのさまざまな方法を提供します。

ユニットごと

おそらく、最も便利なフィルタリング方法は、関心のあるユニットによるものです。 -uオプションを使用して、この方法でフィルタリングできます。

たとえば、システム上のNginxユニットからのすべてのログを表示するには、次のように入力できます。

journalctl -u nginx.service

通常、関心のある行を表示するために、時間でフィルタリングすることもできます。 たとえば、今日のサービスの実行状況を確認するには、次のように入力します。

journalctl -u nginx.service --since today

このタイプのフォーカスは、さまざまなユニットのレコードをインターリーブするジャーナルの機能を活用するときに非常に役立ちます。 たとえば、NginxプロセスがPHP-FPMユニットに接続されて動的コンテンツを処理する場合、両方のユニットを指定することで、両方のエントリを時系列順にマージできます。

journalctl -u nginx.service -u php-fpm.service --since today

これにより、個々のプロセスではなく、異なるプログラムとデバッグシステム間の相互作用を簡単に見つけることができます。

プロセス、ユーザー、またはグループIDごと

一部のサービスは、作業を行うためにさまざまな子プロセスを生成します。 興味のあるプロセスの正確なPIDを探し出した場合は、それでフィルタリングすることもできます。

これを行うには、_PIDフィールドを指定してフィルタリングできます。 たとえば、興味のあるPIDが8088の場合、次のように入力できます。

journalctl _PID=8088

また、特定のユーザーまたはグループから記録されたすべてのエントリを表示することもできます。 これは、_UIDまたは_GIDフィルターを使用して実行できます。 たとえば、Webサーバーがwww-dataユーザーの下で実行されている場合、次のように入力してユーザーIDを見つけることができます。

id -u www-data
33

その後、返されたIDを使用して、ジャーナル結果をフィルタリングできます。

journalctl _UID=33 --since today

systemdジャーナルには、フィルタリングに使用できる多くのフィールドがあります。 それらのいくつかは、ログに記録されているプロセスから渡され、いくつかは、ログ時にシステムから収集した情報を使用してjournaldによって適用されます。

先頭の下線は、_PIDフィールドが後者のタイプであることを示します。 ジャーナルは、後でフィルタリングするためにログを記録しているプロセスのPIDを自動的に記録およびインデックス付けします。 次のように入力して、利用可能なすべての仕訳フィールドについて調べることができます。

man systemd.journal-fields

このガイドでは、これらのいくつかについて説明します。 ただし、ここでは、これらのフィールドによるフィルタリングに関連するもう1つの便利なオプションについて説明します。 -Fオプションを使用して、特定のジャーナルフィールドで使用可能なすべての値を表示できます。

たとえば、systemdジャーナルにエントリがあるグループIDを確認するには、次のように入力します。

journalctl -F _GID
32
99
102
133
81
84
100
0
124
87

これにより、ジャーナルがグループIDフィールドに保存したすべての値が表示されます。 これは、フィルターの構築に役立ちます。

コンポーネントパス別

パスの場所を指定してフィルタリングすることもできます。

パスが実行可能ファイルにつながる場合、journalctlは、問題の実行可能ファイルに関連するすべてのエントリを表示します。 たとえば、bash実行可能ファイルを含むエントリを見つけるには、次のように入力します。

journalctl /usr/bin/bash

通常、実行可能ファイルでユニットが使用可能な場合、そのメソッドはよりクリーンで、より良い情報(関連する子プロセスからのエントリなど)を提供します。 ただし、これが不可能な場合もあります。

カーネルメッセージの表示

通常dmesgの出力にあるカーネルメッセージは、ジャーナルからも取得できます。

これらのメッセージのみを表示するには、コマンドに-kまたは--dmesgフラグを追加します。

journalctl -k

デフォルトでは、現在のブートからのカーネルメッセージが表示されます。 前述の通常のブート選択フラグを使用して、代替ブートを指定できます。 たとえば、5回前のブートからメッセージを取得するには、次のように入力できます。

journalctl -k -b -5

優先順

システム管理者がしばしば関心を持つフィルターの1つは、メッセージの優先度です。 多くの場合、非常に詳細なレベルで情報を記録すると便利ですが、実際に利用可能な情報を消化する場合、優先度の低いログは気が散って混乱を招く可能性があります。

-pオプションを使用すると、journalctlを使用して、指定した優先度以上のメッセージのみを表示できます。 これにより、優先度の低いメッセージを除外できます。

たとえば、エラーレベル以上で記録されたエントリのみを表示するには、次のように入力します。

journalctl -p err -b

これにより、エラー、クリティカル、アラート、または緊急としてマークされたすべてのメッセージが表示されます。 ジャーナルは、標準のsyslogメッセージレベルを実装します。 優先度名またはそれに対応する数値を使用できます。 優先度の高いものから順に、次のとおりです。

  • 0:出現

  • 1:アラート

  • 2:クリティカル

  • 3:エラー

  • 4:警告

  • 5:通知

  • 6:情報

  • 7:デバッグ

上記の番号または名前は、-pオプションと同じ意味で使用できます。 優先度を選択すると、指定したレベルでマークされたメッセージとそれより上のメッセージが表示されます。

ジャーナル表示の変更

上記では、フィルタリングによるエントリの選択を示しました。 ただし、出力を変更する方法は他にもあります。 さまざまなニーズに合わせてjournalctlの表示を調整できます。

出力の切り捨てまたは展開

出力を縮小または拡大するように指示することで、journalctlがデータを表示する方法を調整できます。

デフォルトでは、journalctlはページャーにエントリ全体を表示し、エントリが画面の右側に続くようにします。 この情報にアクセスするには、右矢印キーを押します。

情報が削除された場所に省略記号を挿入して出力を切り捨てたい場合は、--no-fullオプションを使用できます。

journalctl --no-full
. . .

Feb 04 20:54:13 journalme sshd[937]: Failed password for root from 83.234.207.60...h2
Feb 04 20:54:13 journalme sshd[937]: Connection closed by 83.234.207.60 [preauth]
Feb 04 20:54:13 journalme sshd[937]: PAM 2 more authentication failures; logname...ot

これを逆方向に進めて、印刷できない文字が含まれているかどうかに関係なく、すべての情報を表示するようにjournalctlに指示することもできます。 これは、-aフラグを使用して実行できます。

journalctl -a

標準出力への出力

デフォルトでは、journalctlは、消費しやすいように出力をページャーに表示します。 ただし、テキスト操作ツールを使用してデータの処理を計画している場合は、おそらく標準出力に出力できるようにする必要があります。

これは、--no-pagerオプションを使用して実行できます。

journalctl --no-pager

これは、必要に応じて、すぐに処理ユーティリティにパイプするか、ディスク上のファイルにリダイレクトできます。

出力フォーマット

前述のように、仕訳入力を処理している場合、データがより使いやすい形式であれば、データを解析する時間がより簡単になる可能性が高くなります。 幸いなことに、ジャーナルは必要に応じてさまざまな形式で表示できます。 これは、フォーマット指定子を指定した-oオプションを使用して実行できます。

たとえば、次のように入力して、JSONでジャーナルエントリを出力できます。

journalctl -b -u nginx -o json
{ "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635", "__REALTIME_TIMESTAMP" : "1422990364739502", "__MONOTONIC_TIMESTAMP" : "27200938", "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d", "PRIORITY" : "6", "_UID" : "0", "_GID" : "0", "_CAP_EFFECTIVE" : "3fffffffff", "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee", "_HOSTNAME" : "desktop", "SYSLOG_FACILITY" : "3", "CODE_FILE" : "src/core/unit.c", "CODE_LINE" : "1402", "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading", "SYSLOG_IDENTIFIER" : "systemd", "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5", "_TRANSPORT" : "journal", "_PID" : "1", "_COMM" : "systemd", "_EXE" : "/usr/lib/systemd/systemd", "_CMDLINE" : "/usr/lib/systemd/systemd", "_SYSTEMD_CGROUP" : "/", "UNIT" : "nginx.service", "MESSAGE" : "Starting A high performance web server and a reverse proxy server...", "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973" }

. . .

これは、ユーティリティを使用した解析に役立ちます。 json-pretty形式を使用して、データ構造をJSONコンシューマーに渡す前に、より適切に処理することができます。

journalctl -b -u nginx -o json-pretty
{
    "__CURSOR" : "s=13a21661cf4948289c63075db6c25c00;i=116f1;b=81b58db8fd9046ab9f847ddb82a2fa2d;m=19f0daa;t=50e33c33587ae;x=e307daadb4858635",
    "__REALTIME_TIMESTAMP" : "1422990364739502",
    "__MONOTONIC_TIMESTAMP" : "27200938",
    "_BOOT_ID" : "81b58db8fd9046ab9f847ddb82a2fa2d",
    "PRIORITY" : "6",
    "_UID" : "0",
    "_GID" : "0",
    "_CAP_EFFECTIVE" : "3fffffffff",
    "_MACHINE_ID" : "752737531a9d1a9c1e3cb52a4ab967ee",
    "_HOSTNAME" : "desktop",
    "SYSLOG_FACILITY" : "3",
    "CODE_FILE" : "src/core/unit.c",
    "CODE_LINE" : "1402",
    "CODE_FUNCTION" : "unit_status_log_starting_stopping_reloading",
    "SYSLOG_IDENTIFIER" : "systemd",
    "MESSAGE_ID" : "7d4958e842da4a758f6c1cdc7b36dcc5",
    "_TRANSPORT" : "journal",
    "_PID" : "1",
    "_COMM" : "systemd",
    "_EXE" : "/usr/lib/systemd/systemd",
    "_CMDLINE" : "/usr/lib/systemd/systemd",
    "_SYSTEMD_CGROUP" : "/",
    "UNIT" : "nginx.service",
    "MESSAGE" : "Starting A high performance web server and a reverse proxy server...",
    "_SOURCE_REALTIME_TIMESTAMP" : "1422990364737973"
}

. . .

次の形式を表示に使用できます。

  • cat:メッセージフィールド自体のみを表示します。

  • export:転送またはバックアップに適したバイナリ形式。

  • json:1行に1つのエントリを持つ標準のJSON。

  • json-pretty:人間が読みやすいようにフォーマットされたJSON

  • json-sse:サーバー送信イベントの追加と互換性を持たせるためにラップされたJSON形式の出力

  • short:デフォルトのsyslogスタイルの出力

  • short-iso:ISO8601ウォールクロックタイムスタンプを表示するように拡張されたデフォルトの形式。

  • short-monotonic:単調なタイムスタンプを持つデフォルトの形式。

  • short-precise:マイクロ秒精度のデフォルト形式

  • verbose:通常は内部的に非表示になっているものも含め、エントリに使用できるすべてのジャーナルフィールドを表示します。

これらのオプションを使用すると、現在のニーズに最適な形式でジャーナルエントリを表示できます。

アクティブプロセス監視

journalctlコマンドは、アクティブまたは最近のアクティビティを監視するためにtailを使用する管理者の数を模倣します。 この機能はjournalctlに組み込まれているため、別のツールにパイプすることなくこれらの機能にアクセスできます。

最近のログを表示する

設定された量のレコードを表示するには、tail -nオプションを使用できます。これはtail -nとまったく同じように機能します。

デフォルトでは、最新の10エントリが表示されます。

journalctl -n

表示するエントリの数は、-nの後に数字を付けて指定できます。

journalctl -n 20

フォローログ

書き込まれているログを積極的に追跡するには、-fフラグを使用できます。 繰り返しますが、これは、tail -fの使用経験がある場合に期待できるように機能します。

journalctl -f

ジャーナルのメンテナンス

これまでに見てきたすべてのデータを保存するのに費用がかかるのではないかと思われるかもしれません。 さらに、いくつかの古いログをクリーンアップしてスペースを解放することに興味があるかもしれません。

現在のディスク使用量を見つける

--disk-usageフラグを使用すると、ジャーナルが現在ディスク上で占有しているスペースの量を確認できます。

journalctl --disk-usage
Journals take up 8.0M on disk.

古いログの削除

ジャーナルを縮小したい場合は、2つの異なる方法で行うことができます(systemdのバージョン218以降で使用可能)。

--vacuum-sizeオプションを使用する場合は、サイズを指定することでジャーナルを縮小できます。 これにより、ディスクで使用されているジャーナルスペースの合計が要求されたサイズになるまで、古いエントリが削除されます。

sudo journalctl --vacuum-size=1G

ジャーナルを縮小できるもう1つの方法は、--vacuum-timeオプションでカットオフ時間を提供することです。 それ以降のエントリはすべて削除されます。 これにより、特定の時間後に作成されたエントリを保持できます。

たとえば、昨年のエントリを保持するには、次のように入力できます。

sudo journalctl --vacuum-time=1years

ジャーナル拡張の制限

ジャーナルが占有できるスペースに制限を設けるようにサーバーを構成できます。 これは、/etc/systemd/journald.confファイルを編集することで実行できます。

以下の項目を使用して、ジャーナルの成長を制限できます。

  • SystemMaxUse=:永続ストレージ内のジャーナルが使用できる最大ディスク容量を指定します。

  • SystemKeepFree=:ジャーナルエントリを永続ストレージに追加するときにジャーナルが空けるスペースの量を指定します。

  • SystemMaxFileSize=:ローテーションされる前に永続ストレージ内で個々のジャーナルファイルがどれだけ大きくなるかを制御します。

  • RuntimeMaxUse=:揮発性ストレージ(/runファイルシステム内)で使用できる最大ディスク容量を指定します。

  • RuntimeKeepFree=:(/runファイルシステム内の)揮発性ストレージにデータを書き込むときに他の用途のために確保するスペースの量を指定します。

  • RuntimeMaxFileSize=:ローテーションされる前に個々のジャーナルファイルが揮発性ストレージ(/runファイルシステム内)で占有できるスペースの量を指定します。

これらの値を設定することにより、journaldがサーバー上のスペースをどのように消費および保持するかを制御できます。 SystemMaxFileSizeRuntimeMaxFileSizeは、アーカイブされたファイルを対象として、指定された制限に達することに注意してください。 これは、バキューム処理後にファイル数を解釈するときに覚えておくことが重要です。

結論

ご覧のとおり、systemdジャーナルは、システムとアプリケーションのデータを収集および管理するのに非常に役立ちます。 柔軟性の大部分は、自動的に記録される広範なメタデータとログの集中化された性質に由来します。 journalctlコマンドを使用すると、ジャーナルの高度な機能を簡単に利用したり、さまざまなアプリケーションコンポーネントの広範な分析やリレーショナルデバッグを実行したりできます。