2026年7月16日

2026年7月16日

journalctlでsystemdログを確認する方法

はじめに

journalctl は systemd が一元管理するシステムログ (journal) を閲覧するコマンドです。従来 /var/log/messages/var/log/syslogless で眺めていた作業が、サービス単位・時間単位・優先度単位で柔軟に絞り込めるようになります。

サービス障害時の原因調査、起動失敗の追跡、特定期間のセキュリティイベント抽出など、サーバー運用の中核ツールです。

症状・背景

journalctl が必要になる主な場面:

  • サービス起動失敗の原因を追いたいとき
  • アクセスやエラーをリアルタイム監視したいとき
  • 過去の障害時間帯のログを抽出したいとき
  • 起動シーケンスの問題を調査したいとき

手順・設定方法

ステップ1: 基本的な使い方

# 全ログを表示 (新→古、less表示)
sudo journalctl

# 新しい方から末尾100行
sudo journalctl -n 100

# 古い順に表示
sudo journalctl --no-pager

# リアルタイム追跡 (tail -f 相当)
sudo journalctl -f

ステップ2: サービスで絞り込み

# 特定サービスのログ
sudo journalctl -u nginx

# 複数サービスをまとめて
sudo journalctl -u nginx -u php-fpm

# サービスのリアルタイム監視
sudo journalctl -u nginx -f

# 直近10件だけ
sudo journalctl -u nginx -n 10

ステップ3: 時間と優先度で絞り込み

# 起動以降のログ
sudo journalctl -b

# 1つ前の起動のログ
sudo journalctl -b -1

# 期間を指定
sudo journalctl --since "2026-05-14 10:00" --until "2026-05-14 12:00"
sudo journalctl --since "1 hour ago"
sudo journalctl --since yesterday

# 優先度でフィルタ (err以上のみ)
sudo journalctl -p err
sudo journalctl -u nginx -p warning

ステップ4: 出力形式とメンテナンス

# JSON形式 (パイプ処理向け)
sudo journalctl -u nginx -o json-pretty

# カーネルメッセージだけ
sudo journalctl -k

# ディスク使用量
sudo journalctl --disk-usage

# 古いログを削除 (1週間以上前を削除)
sudo journalctl --vacuum-time=7d

# サイズ上限で削除
sudo journalctl --vacuum-size=500M

注意事項

  • デフォルトでは journal はメモリ上に保存される設定もあり、再起動で消えることがあります。永続化には /var/log/journal/ ディレクトリを作成
  • -p の優先度は emerg→alert→crit→err→warning→notice→info→debug の8段階
  • 巨大な journal は journalctl --disk-usage で確認し、定期的に --vacuum-time で整理を
  • 時刻指定は "YYYY-MM-DD HH:MM:SS" の形式以外に "1 hour ago" などの自然言語も使えます

まとめ

1. 基本: -u SERVICE でサービス、-n で件数指定

2. 追跡: -f でリアルタイム監視

3. 期間: --since / --until で時刻範囲

4. 優先度: -p err などで重要度フィルタ

5. 整理: --disk-usage--vacuum-time で容量管理

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ