ロギング
journald, rsyslog, ログ管理
Linuxのログシステム
systemd環境ではjournaldがログを収集し、 オプションでrsyslogと連携してファイルに永続化します。
journald
- • systemd統合ログシステム
- • バイナリ形式で保存
- • 構造化ログ対応
- • デフォルトで揮発性(/run/log/journal/)
rsyslog
- • 伝統的なsyslogデーモン
- • テキスト形式で/var/log/に保存
- • リモート転送対応
- • フィルタリングルール
journalctl
1 # 基本操作 2 journalctl # 全ログ表示 3 journalctl -f # リアルタイム表示(tail -f相当) 4 journalctl -n 100 # 最新100行 5 6 # サービス指定 7 journalctl -u nginx 8 journalctl -u nginx -f 9 10 # 時間指定 11 journalctl --since today 12 journalctl --since "2024-01-01 00:00:00" 13 journalctl --since "1 hour ago" 14 journalctl --since "2024-01-01" --until "2024-01-02" 15 16 # ブート指定 17 journalctl -b # 現在のブート 18 journalctl -b -1 # 前回のブート 19 journalctl --list-boots # ブート一覧 20 21 # 優先度指定 22 journalctl -p err # error以上 23 journalctl -p warning # warning以上 24 # emerg, alert, crit, err, warning, notice, info, debug 25 26 # カーネルログ 27 journalctl -k # dmesg相当 28 29 # 出力形式 30 journalctl -o json # JSON形式 31 journalctl -o json-pretty 32 journalctl -o short-iso # タイムスタンプISO形式 33 34 # ディスク使用量 35 journalctl --disk-usage 36 journalctl --vacuum-size=1G # 1GBに圧縮 37 journalctl --vacuum-time=7d # 7日以上を削除
rsyslog設定
設定ファイル: /etc/rsyslog.conf、/etc/rsyslog.d/*.conf
1 # /etc/rsyslog.conf の構文 2 # facility.priority destination 3 # facility: auth, authpriv, cron, daemon, kern, mail, syslog, user, local0-7 4 # priority: emerg, alert, crit, err, warning, notice, info, debug 5 6 # 例: 全ログをファイルに 7 *.info /var/log/messages 8 9 # 認証ログを別ファイルに 10 authpriv.* /var/log/secure 11 12 # メールログ 13 mail.* /var/log/maillog 14 15 # cron 16 cron.* /var/log/cron 17 18 # リモートサーバーに転送 19 *.* @@log.example.com:514 # TCP 20 *.* @log.example.com:514 # UDP
主要なログファイル
/var/log/messages一般的なシステムログ
/var/log/syslogDebian/Ubuntuの一般ログ
/var/log/secure認証・セキュリティログ(RHEL系)
/var/log/auth.log認証ログ(Debian系)
/var/log/kern.logカーネルログ
/var/log/croncronジョブログ
logrotate
logrotateはログファイルのローテーション(圧縮・削除)を管理。 ディスク枯渇を防ぎます。
1 # /etc/logrotate.d/nginx 2 /var/log/nginx/*.log { 3 daily 4 rotate 14 5 compress 6 delaycompress 7 missingok 8 notifempty 9 create 0640 nginx nginx 10 sharedscripts 11 postrotate 12 [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` 13 endscript 14 } 15 16 # 主要オプション 17 # daily/weekly/monthly - ローテーション頻度 18 # rotate N - 保持世代数 19 # compress - gzip圧縮 20 # delaycompress - 次回ローテーション時に圧縮 21 # missingok - ファイルがなくてもエラーにしない 22 # notifempty - 空ファイルはローテートしない 23 # create - 新規ファイルのパーミッション 24 # copytruncate - コピー後に元ファイルを切り詰め 25 26 # 手動実行 27 logrotate -f /etc/logrotate.conf 28 logrotate -d /etc/logrotate.conf # ドライラン
SRE/インフラ観点
ログ管理のベストプラクティス
- • journald永続化:
mkdir /var/log/journal - • ログローテーション設定を確認(ディスク枯渇防止)
- • 重要ログの外部転送(Elasticsearch, CloudWatch等)
- • 構造化ログ(JSON)の活用
トラブルシューティング
- • サービス起動失敗:
journalctl -u service -xe - • ブート問題:
journalctl -b -p err - • 認証問題:
/var/log/secureまたはauth.log - • カーネル問題:
journalctl -kまたはdmesg