Skip to Content
ドキュメント運用システム管理ログとjournalctl

ログとjournalctl

systemd-journald は、Ubuntu 26.04 のシステム ログ サービスです。カーネル、サービス、アプリケーションからすべてのログを収集して管理します。 journalctl は、これらのログのクエリと分析を行うためのコマンドライン ツールです。

ジャーナルctlの基本

ログの表示

# View all logs journalctl # View the latest logs (tail) journalctl -e # Follow new logs in real time (similar to tail -f) journalctl -f # View the most recent N entries journalctl -n 50 # Output without paging journalctl --no-pager # Reverse order (newest first) journalctl -r

出力フォーマット

# Short format (default) journalctl -o short # Verbose format (shows all fields) journalctl -o verbose # JSON format journalctl -o json # JSON format (one entry per line, convenient for scripting) journalctl -o json-lines # Message content only journalctl -o cat

ログのフィルタリング

サービスでフィルタリングする

# View logs for a specific service journalctl -u nginx.service # View logs for multiple services journalctl -u nginx.service -u php-fpm.service # Follow a specific service's logs in real time journalctl -u myapp.service -f

時間によるフィルター

# View logs from the current boot journalctl -b # View logs from the previous boot journalctl -b -1 # List all boot records journalctl --list-boots # Specify a time range journalctl --since "2026-03-24 10:00:00" journalctl --since "2026-03-24 10:00:00" --until "2026-03-24 12:00:00" # Use relative time journalctl --since "1 hour ago" journalctl --since "30 min ago" journalctl --since today journalctl --since yesterday --until today

優先度によるフィルター

ログの優先度レベルの範囲は 0 (最も重大) から 7 (最も詳細) です。

レベル名前説明
0現れるシステムが使用できません
1警告直ちに対応が必要です
2クリティカル重大なエラー
3エラーエラー
4警告警告
5気づく正常だが重要
6情報情報提供
7デバッグデバッグ
# Show only errors and above journalctl -p err # Show only warnings journalctl -p warning # Show a range of priorities journalctl -p warning..err

他の基準でフィルタリングする

# By process PID journalctl _PID=1234 # By user ID journalctl _UID=1000 # By executable path journalctl _EXE=/usr/bin/python3 # Combine conditions journalctl _SYSTEMD_UNIT=nginx.service -p err --since today # Kernel logs journalctl -k journalctl --dmesg

ログコンテンツの検索

# Filter with grep journalctl -u nginx.service | grep "error" # Use journalctl's built-in matching journalctl -g "failed|error|timeout"

ログストレージの構成

設定ファイル

Journald 構成ファイルは /etc/systemd/journald.conf にあります。

sudo nano /etc/systemd/journald.conf

一般的な構成オプション:

[Journal] # Log storage mode: persistent (to disk), volatile (memory only), auto (default) Storage=persistent # Maximum disk space for logs SystemMaxUse=500M # Maximum size of a single log file SystemMaxFileSize=50M # Maximum retention time MaxRetentionSec=1month # Maximum memory usage for logs RuntimeMaxUse=100M # Log compression Compress=yes # Forward to syslog ForwardToSyslog=yes # Rate limiting: max 10000 entries per service per 30 seconds RateLimitIntervalSec=30s RateLimitBurst=10000

構成変更を適用します。

sudo systemctl restart systemd-journald

ログの永続性の確保

デフォルトでは、/var/log/journal/ ディレクトリが存在しない場合、ログはメモリ内にのみ保存されます。永続性を有効にするには:

# Create the persistent log directory sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal # Or set it in the configuration file # Storage=persistent # Restart the service sudo systemctl restart systemd-journald

ログのローテーションとクリーンアップ

手動クリーンアップ

# Clean by time: keep only the last 7 days of logs sudo journalctl --vacuum-time=7d # Clean by size: keep only 500MB of logs sudo journalctl --vacuum-size=500M # Clean by file count: keep only the 5 most recent log files sudo journalctl --vacuum-files=5 # View current disk usage by logs journalctl --disk-usage

ログの整合性を検証する

# Check log file consistency journalctl --verify

syslogとの関係

systemd-journald は、従来の syslog (rsyslog など) と併用できます。

# Check if rsyslog is installed dpkg -l rsyslog # rsyslog log files are located under /var/log/ ls /var/log/syslog ls /var/log/auth.log ls /var/log/kern.log

従来のログ ファイル

ファイル説明
/var/log/syslog一般的なシステムログ
/var/log/auth.log認証ログ
/var/log/kern.logカーネルログ
/var/log/dpkg.logパッケージのインストールログ
/var/log/apt/history.logAPT動作履歴
/var/log/boot.logブートログ

rsyslogの構成

# Main configuration file sudo nano /etc/rsyslog.conf # Custom rules go in this directory ls /etc/rsyslog.d/

rsyslog ルールの例 (nginx ログを別のファイルに書き込む):

# /etc/rsyslog.d/nginx.conf if $programname == 'nginx' then /var/log/nginx/syslog.log & stop

logrotate ログローテーション

logrotate は、従来のログ ファイルのローテーションを管理します。

# Main configuration file cat /etc/logrotate.conf # Application configurations directory ls /etc/logrotate.d/

カスタム logrotate 構成の例:

sudo nano /etc/logrotate.d/myapp
/var/log/myapp/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 myapp myapp sharedscripts postrotate systemctl reload myapp.service > /dev/null 2>&1 || true endscript }
# Test logrotate manually sudo logrotate -d /etc/logrotate.d/myapp # dry-run sudo logrotate -f /etc/logrotate.d/myapp # force execution

実践的なヒント

サービス起動の失敗を監視する

# Create a script to monitor failed services journalctl -p err -u "*.service" --since "5 min ago" --no-pager -o cat

ログのエクスポート

# Export as a text file journalctl -u nginx.service --since today > /tmp/nginx-today.log # Export in binary format (readable by journalctl) journalctl -u nginx.service -o export > /tmp/nginx.export

ディスク I/O 関連ログの表示

journalctl -k | grep -i "i/o\|error\|disk\|sda"

ブートプロセスの分析

# View logs from the boot process journalctl -b --no-pager | head -100