この記事は Linux Advent Calendar 2023 の1日目の記事です!
journalとは
journalとはsystemd環境におけるログ管理システムjournaldによって出力されたログファイルを指します。journalとういう言葉自体は訳すと「雑誌,学術誌,会報,新聞」らしいです。systemd 環境におけるログ管理の仕組みということもありソースコード自体はsystemd/systemd配下にありました。
正式名称は systemd-journald.serviceで以下のようにsystemctlから認識できるサービスとして稼働しています。
systemctl status systemd-journald.service ● systemd-journald.service - Journal Service Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static; vendor preset: disabled) Active: active (running) since Tue 2019-11-12 15:08:55 JST; 4 years 0 months ago Docs: man:systemd-journald.service(8) man:journald.conf(5) Main PID: 20818 (systemd-journal) Status: "Processing requests..." CGroup: /system.slice/systemd-journald.service └─20818 /usr/lib/systemd/systemd-journald
どういう仕組みで管理しているのか
journaldは、systemdに組み込まれたログ管理システムで、Linuxシステムの様々なイベントやメッセージを収集し、効率的に管理するための仕組みを提供しています。journaldの主な特徴と管理メカニズムは以下の通りです:
- バイナリログ形式:journaldはログをバイナリ形式で保存します。これにより、テキストベースのファイルよりも高速にアクセスでき、ログの整合性とセキュリティが向上します。
- 中央集権的なログ収集:journaldはシステムの全てのログを集めます。これには、カーネルのメッセージ、システムサービスのログ、アプリケーションのログ、および標準出力や標準エラー出力に書き出されたメッセージが含まれます。
- メタデータの保存:各ログエントリには、タイムスタンプ、プロセスID、ユーザーID、ブートID、ホスト名など、豊富なメタデータが含まれています。これにより、後でログを分析しやすくなります。
- ログの圧縮とローテーション:journaldはディスクスペースの節約と効率的なログ管理のために、ログを圧縮し、設定に基づいて古いログを自動的に削除します。
- マルチレベルのログフィルタリング:journaldはログの重要度に基づいてフィルタリングすることができます。これにより、必要な情報に素早くアクセスし、重要度の低い情報を無視することが可能です。
- セキュリティと監査のサポート:journaldはセキュリティと監査に関するログも管理します。これにより、システムのセキュリティに関する詳細な情報を提供します。
- レート制限:journaldは、過剰なログ出力によるリソースの浪費を防ぐために、ログのレート制限を行うことができます。
rsyslogとの並行運用
CentOS7や環境には journaldの他、CentOS7より前から使用されている rsyslog も並行して稼働しています/var/log/messages などはrsyslogにFowradしその他のプロセスjournaldが管理するということが行われています。/etc/systemd/journald.conf
あたりで設定をすることでrsyslogとの連携などについても設定することができます。Amazon Linux 2023だとこのrsyslogがインストールされていなくjournalのみで/var/log/messages
などがなくjournalctlで各種のログを確認することになります。(インストールすれば使えますが)
どのログをどのファイルに出すかはrsyslogの設定ファイル/etc/rsyslog.conf
に記載していきます。