Linuxサーバー管理

journalctlでシステムログを効率的に調査する【永続化・フィルタ完全ガイド】

Linuxサーバー管理
記事内に広告が含まれています。

/var/logの見方に続き、この記事ではsystemdのログ管理システム「journald」をjournalctlで使いこなす方法を深掘りします。

journaldとは

journaldはsystemdの一部として動作するログ管理デーモンです。バイナリ形式でログを保存するため、高速な検索・フィルタリングが可能です。/var/log/journal/ または /run/log/journal/ に保存されます(設定による)。

journalctlの基本から応用まで

# 全ログを表示(新しい順)
$ journalctl -r

# 特定サービスのログ
$ journalctl -u nginx
$ journalctl -u nginx -u mysql   # 複数サービス

# リアルタイム追跡
$ journalctl -u nginx -f

# 最新N行だけ表示
$ journalctl -u nginx -n 50

# エラーレベル以上のみ表示
$ journalctl -p err          # err/warning/notice/info/debug
$ journalctl -p 0..3         # 数値指定(0=emerg, 3=err)

# 今回の起動分のみ
$ journalctl -b
$ journalctl -b -1    # 1回前の起動分

時刻・日時によるフィルタリング

# 期間指定
$ journalctl --since "2026-03-15 10:00:00"
$ journalctl --until "2026-03-15 12:00:00"
$ journalctl --since "2026-03-15 10:00" --until "2026-03-15 12:00"

# 相対時刻
$ journalctl --since "1 hour ago"
$ journalctl --since "yesterday"
$ journalctl --since "today"

ログの永続化設定

デフォルトでは再起動後にログが消える場合があります。永続化するには以下の設定が必要です。

# /etc/systemd/journald.conf を編集
[Journal]
Storage=persistent      # auto(デフォルト)→ persistent に変更
SystemMaxUse=500M        # ログの最大使用量
SystemKeepFree=100M      # ディスクの最低空き容量
MaxRetentionSec=1month   # 保持期間

# 設定反映
$ sudo systemctl restart systemd-journald

# /var/log/journal/ ディレクトリを作成(永続化に必要)
$ sudo mkdir -p /var/log/journal
$ sudo systemd-tmpfiles --create --prefix /var/log/journal

ログのサイズ管理

# 現在のジャーナルサイズを確認
$ journalctl --disk-usage

# サイズを500MB以下に削減
$ sudo journalctl --vacuum-size=500M

# 1ヶ月以上前のログを削除
$ sudo journalctl --vacuum-time=1month

# 世代数を指定して削除
$ sudo journalctl --vacuum-files=5

まとめ

  • journalctl -u サービス名 -f でサービスのログをリアルタイム追跡
  • -p err でエラー以上のログのみ表示
  • --since/--until で障害発生時刻のログを絞り込む
  • 永続化には Storage=persistent を設定して /var/log/journal/ を作成
  • --vacuum-size=500M でログサイズを定期的に削減

📋 Linuxサーバー運用・管理チェックリスト完全版でPhase 2の全要点を確認できます。

コメント

タイトルとURLをコピーしました