2026年7月16日
2026年7月16日
journalctlでsystemdログを確認する方法
はじめに
journalctl は systemd が一元管理するシステムログ (journal) を閲覧するコマンドです。従来 /var/log/messages や /var/log/syslog を less で眺めていた作業が、サービス単位・時間単位・優先度単位で柔軟に絞り込めるようになります。
サービス障害時の原因調査、起動失敗の追跡、特定期間のセキュリティイベント抽出など、サーバー運用の中核ツールです。
症状・背景
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 で容量管理
関連記事: