Linuxのシステムログを設定・確認する方法|rsyslogとjournaldの設定ファイルと使い分け

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのシステムログを設定・確認する方法|rsyslogとjournaldの設定ファイルと使い分け
「Linuxのログがどこに出力されているか分からない」「rsyslogとjournaldって両方使うの?」

こういった疑問を持つ方は多いです。RHEL8/9以降はrsyslogとsystemd-journaldが共存しており、どちらをどう設定すればいいかが分かりにくいですよね。

この記事では、rsyslogjournaldの設定方法と使い分け、logrotateによるログローテーション、journalctlコマンドの実践的な使い方を解説します。

この記事のポイント

・RHEL9ではrsyslogとjournaldが共存。journaldがカーネルログを受け取りrsyslogに転送する
・rsyslogの設定は/etc/rsyslog.confで「ファシリティ.プライオリティ 出力先」の形式で記述
・journalctlで過去のログを柔軟に検索できる(-u, --since, --until, -p)
・ログローテーションはlogrotate。/etc/logrotate.d/に設定ファイルを追加して管理する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Linuxのログ管理の仕組み:rsyslogとjournaldの関係

RHEL9/Rocky Linux9では2つのログ管理機構が並行して動作しています。

systemd-journald:systemdのコンポーネント。起動直後からカーネルログ・サービスログをバイナリ形式で収集する
rsyslog:従来からあるsyslogデーモン。/etc/rsyslog.confの設定に従いテキスト形式のログファイルに書き出す

デフォルトではjournaldがログを収集し、rsyslogに転送(imjournalモジュール経由)することで両方が機能します。

# ログ管理プロセスの確認 [root@server ~]# systemctl status rsyslog * rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; preset: enabled) Active: active (running) since Tue 2026-04-07 09:00:00 JST; 2h ago Main PID: 1234 (rsyslogd) [root@server ~]# systemctl status systemd-journald * systemd-journald.service - Journal Service Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static) Active: active (running) since Tue 2026-04-07 09:00:00 JST; 2h ago Main PID: 567 (systemd-journald)

rsyslogの設定:/etc/rsyslog.conf

rsyslogの動作設定を行うのが/etc/rsyslog.confファイルです。このファイルを編集することで、どのログをどこに出力するかを指定できます。

1. 設定ファイルの書式

# 書式 ファシリティ.プライオリティ 出力先

2. ファシリティ(メッセージの出力元)

ファシリティ 対象
kern カーネルメッセージ
user ユーザープログラムメッセージ
mail メールサービス関連メッセージ
daemon システムデーモンメッセージ
auth 認証・セキュリティ関連(su、loginなど)
authpriv プライベートな認証情報(SSH、sudoなど)
syslog syslogd自身が生成するメッセージ
cron cronデーモンメッセージ
local0~local7 ローカルで自由に使えるファシリティ(アプリ別ログ振り分けに使用)
* すべてのファシリティ
複数のファシリティを指定する場合はセミコロン「;」で区切ります。

3. プライオリティ(ログの重要度レベル)

プライオリティ 意味 重要度
debug デバッグに有益な詳細情報
info 通常の情報メッセージ
notice 通常動作だが注意すべき状況
warning 警告(動作に支障はない)
err エラーが発生している
crit 致命的な問題
alert すぐに対処が必要な問題
emerg システム不能の非常事態
none メッセージを送らない(除外設定用)
ポイント:プライオリティは「指定した重要度以上のすべて」を記録します。例えば*.warningと設定するとwarning・err・crit・alert・emergのすべてが記録されます。特定のプライオリティのみを記録したい場合は「=」を付けます(例:*.=warning)。

4. 出力先の種類

出力先の書式 意味
/var/log/messages ファイルに出力(フルパスで指定)
-/var/log/maillog ファイルに出力(先頭の-は非同期書き込みを意味する)
@192.168.1.100 リモートホストにUDPで送信(syslogサーバーに集約する場合)
@@192.168.1.100 リモートホストにTCPで送信(@@は信頼性の高い転送)
root rootユーザーの端末に表示
* ログイン中の全ユーザーの端末に表示
/dev/console コンソールに出力

5. /etc/rsyslog.confの設定例(RHEL9)

[root@server ~]# cat /etc/rsyslog.conf # モジュール読み込み module(load="imuxsock") # ローカルのsyslog送信を受け付ける module(load="imjournal" StateFile="imjournal.state") # journaldからログを取得 #### GLOBAL DIRECTIVES #### global(workDirectory="/var/lib/rsyslog") $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #### RULES #### # mail,authpriv,cron以外のinfo以上のログを/var/log/messagesに出力 *.info;mail.none;authpriv.none;cron.none /var/log/messages # 認証系のログは/var/log/secureに出力 authpriv.* /var/log/secure # メールログは/var/log/maillogに出力(-は非同期書き込み) mail.* -/var/log/maillog # cronのログは/var/log/cronに出力 cron.* /var/log/cron # 緊急度emegのメッセージを全ユーザーに通知 *.emerg :omusrmsg:* # 追加設定ファイルを読み込む $IncludeConfig /etc/rsyslog.d/*.conf

6. 設定変更後はrsyslogを再起動する

# rsyslog.confを編集後に反映 [root@server ~]# systemctl restart rsyslog # 設定ファイルの構文チェック [root@server ~]# rsyslogd -N 1 rsyslogd: version 8.2102.0-105.el9, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.

journaldの設定:/etc/systemd/journald.conf

systemd-journaldの設定は/etc/systemd/journald.confで行います。ログの保存場所・保存期間・最大サイズなどを設定できます。

[root@server ~]# cat /etc/systemd/journald.conf [Journal] #Storage=auto #Compress=yes #Seal=yes #SplitMode=uid #SyncIntervalSec=5m #RateLimitIntervalSec=30s #RateLimitBurst=10000 #SystemMaxUse= #SystemKeepFree= #SystemMaxFileSize= #RuntimeMaxUse= #RuntimeKeepFree= #RuntimeMaxFileSize= #MaxRetentionSec= #MaxFileSec=1month #ForwardToSyslog=yes #ForwardToKMsg=no #ForwardToConsole=no #ForwardToWall=yes

設定項目 意味
Storage=auto ログの保存場所。auto=/var/log/journalが存在すればそこに保存、なければメモリのみ
SystemMaxUse=100M ディスクに保存するログの最大サイズ(例:100M)
MaxRetentionSec=1month ログの最大保存期間(例:1week、1month)
ForwardToSyslog=yes journaldのログをrsyslogに転送する(デフォルトyes)

1. journaldのログを永続化する

デフォルトではjournaldのログは再起動後に消える場合があります。永続化するには/var/log/journalディレクトリを作成します。

# ログを永続化するディレクトリを作成 [root@server ~]# mkdir -p /var/log/journal # パーミッション設定 [root@server ~]# systemd-tmpfiles --create --prefix /var/log/journal # journaldを再起動して設定を反映 [root@server ~]# systemctl restart systemd-journald # 確認(Storageが変わる) [root@server ~]# journalctl --disk-usage Archived and active journals take up 120.0M in the file system.

journalctlコマンド:ログを検索・確認する

journalctlコマンドはjournaldが収集したログを検索・表示します。grepよりも柔軟な条件指定ができるのが特徴です。

1. 基本的な使い方

# 全ログを表示(新しい順) [root@server ~]# journalctl -r | head -20 # リアルタイムにログを監視(tail -fと同等) [root@server ~]# journalctl -f # 起動してから現在までのログ [root@server ~]# journalctl -b # 特定サービスのログを表示(-uオプション) [root@server ~]# journalctl -u httpd -- ジャーナルの始め -- 4月 07 09:00:00 server systemd[1]: Starting The Apache HTTP Server... 4月 07 09:00:01 server systemd[1]: Started The Apache HTTP Server.

2. 時間範囲でフィルタリングする

# 2026-04-07の9時以降のログ [root@server ~]# journalctl --since "2026-04-07 09:00:00" # 2026-04-07の8時から10時までのログ [root@server ~]# journalctl --since "2026-04-07 08:00:00" --until "2026-04-07 10:00:00" # 1時間前からのログ [root@server ~]# journalctl --since "1 hour ago" # 昨日のログ [root@server ~]# journalctl --since yesterday --until today

3. 重要度でフィルタリングする

# err以上の重要度のログのみ表示(-pオプション) [root@server ~]# journalctl -p err 4月 07 11:00:00 server kernel: EXT4-fs error (device sdb): ext4_validate... # warningのみを表示(=を付けて特定レベルのみ) [root@server ~]# journalctl -p warning # サービス指定+重要度指定の組み合わせ [root@server ~]# journalctl -u sshd -p err --since "2026-04-07"

4. その他の便利なオプション

# カーネルログのみ表示(dmesgと同等) [root@server ~]# journalctl -k # 最後のN行を表示(-nオプション) [root@server ~]# journalctl -n 50 # ログをgrepする(パイプで使用) [root@server ~]# journalctl -u httpd | grep "error" # ディスク使用量を確認 [root@server ~]# journalctl --disk-usage # 古いログを削除して容量を確保(2週間以上古いものを削除) [root@server ~]# journalctl --vacuum-time=2weeks # 500MB以上のログを削除 [root@server ~]# journalctl --vacuum-size=500M

5. journalctlのオプション一覧

やりたいこと コマンド
リアルタイム監視 journalctl -f
起動以降のログ journalctl -b
サービス別ログ journalctl -u サービス名
時間範囲指定 journalctl --since "日時" --until "日時"
重要度フィルタ journalctl -p err
カーネルログ journalctl -k
ディスク使用量確認 journalctl --disk-usage
古いログを削除 journalctl --vacuum-time=2weeks

ログローテーション:logrotate

ログファイルは放置すると際限なく増え続けます。logrotateはログを定期的にローテーション(世代管理)するツールです。

1. logrotateの設定ファイル

/etc/logrotate.conf:デフォルト設定(全サービス共通)
/etc/logrotate.d/:サービス別の個別設定(このディレクトリに追加する)

[root@server ~]# cat /etc/logrotate.conf # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d

2. サービス別設定の例(/etc/logrotate.d/)

# /etc/logrotate.d/httpd の内容例 [root@server ~]# cat /etc/logrotate.d/httpd /var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }

3. 主な設定オプション

オプション 意味
daily / weekly / monthly ローテーションの頻度(毎日・毎週・毎月)
rotate 7 世代数。7を指定すると7世代分のログを保持する
compress 古いログをgzipで圧縮する
delaycompress 圧縮を1世代遅らせる(プロセスがまだ使用中の場合に有効)
missingok ログファイルが存在しなくてもエラーにしない
notifempty ログが空の場合はローテーションしない
create 644 root root ローテーション後に指定した権限で新しいログファイルを作成する
size 100M ファイルサイズが指定値を超えたらローテーションする
postrotate / endscript ローテーション後に実行するコマンドを記述する

4. logrotateを手動で実行する

# 設定のテスト実行(実際にはローテーションしない) [root@server ~]# logrotate -d /etc/logrotate.conf reading config file /etc/logrotate.conf ... log needs rotating # 強制的にローテーションを実行(テスト確認後に使用) [root@server ~]# logrotate -f /etc/logrotate.conf # 特定サービスの設定だけを実行 [root@server ~]# logrotate -f /etc/logrotate.d/httpd

loggerコマンド:手動でsyslogにメッセージを送信する

loggerコマンドを使うと、シェルスクリプトや手動でsyslogにメッセージを送信できます。rsyslogの設定テストや、スクリプトのログ記録に活用できます。

# 書式 logger [-p ファシリティ.プライオリティ] [-t タグ] "メッセージ" # info優先度でsyslogにメッセージを送信 [root@server ~]# logger -p syslog.info -t TEST "logger動作テスト" # /var/log/messagesで確認 [root@server ~]# tail -3 /var/log/messages Apr 7 09:30:00 server TEST: logger動作テスト # journalctlでも確認できる [root@server ~]# journalctl -t TEST 4月 07 09:30:00 server TEST[12345]: logger動作テスト

よく確認するログファイルと用途

ログファイル 内容
/var/log/messages システム全般のメッセージ(mail・authpriv・cronは除く)
/var/log/secure SSH接続・sudo・su・認証関連のログ
/var/log/maillog Postfix・Sendmailなどのメール送受信ログ
/var/log/cron cronジョブの実行ログ
/var/log/boot.log システム起動時のログ
/var/log/dmesg カーネルメッセージ(ハードウェア検出など)
/var/log/httpd/ Apacheのアクセスログ・エラーログ
/var/log/audit/audit.log SELinuxの監査ログ

本記事のまとめ

やりたいこと コマンド・ファイル
rsyslogの設定を変更する /etc/rsyslog.conf を編集して systemctl restart rsyslog
rsyslogの設定構文チェック rsyslogd -N 1
journaldのログを永続化する mkdir -p /var/log/journal
journaldの設定を変更する /etc/systemd/journald.conf を編集して systemctl restart systemd-journald
リアルタイムでログ監視する journalctl -f
サービスのログを確認する journalctl -u サービス名
エラーログだけ確認する journalctl -p err
古いjournalログを削除する journalctl --vacuum-time=2weeks
logrotateを手動で実行する logrotate -f /etc/logrotate.conf
syslogにテストメッセージを送る logger -p syslog.info -t TEST "メッセージ"
RHEL9/Rocky9では「rsyslogでファイルに書き出し、journalctlで検索」という使い方が実務の基本です。journaldのvacuumでの定期クリーンアップと、logrotateによるログファイルの世代管理を組み合わせることで、ディスク溢れを防げます。

Linuxのログ管理を含むサーバー運用スキルをより深く学びたい方は、無料のLinuxマニュアル(図解60P)もご活用ください。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。