logrotateはLinux運用では「当たり前」の存在ですが、
設定を誤ると確実に障害を引き起こすツール
でもあります。
本記事では、現場で実際に発生しがちな
- よくある設定ミス
- 発生する症状
- なぜ起きたのか
- どう防ぐべきか
を障害事例形式でまとめます。
目次
事例① copytruncateの誤用でログが欠損
発生した症状
- 特定時間帯のログが存在しない
- 障害調査が不可能
- 監査で指摘
原因
copytruncateは
- コピー中
- truncate実行中
に書き込まれたログを確実に失います。
よくある設定
/var/log/app.log {
daily
rotate 7
copytruncate
}
防止策
- postrotate + SIGHUP を使う
- ログ再オープン可能か確認
事例② postrotate未設定でログが出なくなる
発生した症状
- ログローテート後にログが一切出ない
- ファイルサイズが0のまま
原因
ログファイルはリネームされたが、
アプリが新しいログファイルを開き直していない
ため。
典型例
/var/log/app.log {
daily
rotate 7
}
防止策
postrotate
systemctl reload app.service
endscript
事例③ rotate数が少なすぎて証跡消失
発生した症状
- 障害発生時のログが残っていない
- 数日前のログが存在しない
原因
rotate設定が少なすぎる。
rotate 3
防止策
- 最低7〜14世代を確保
- 監査要件を事前に確認
事例④ 圧縮設定漏れでディスク逼迫
発生した症状
- /varが急激に逼迫
- サービス停止
原因
compress未設定。
compress
delaycompress
防止策
- 必ず圧縮設定を入れる
- 巨大ログは日次圧縮
事例⑤ notifempty未設定で無駄なログ増殖
発生した症状
- 空ファイルが大量生成
- inode枯渇
原因
空ログもローテートされ続けた。
防止策
notifempty
事例⑥ missingok未設定でcronエラー大量発生
発生した症状
- cronメールが大量発生
- logrotate失敗
原因
対象ログが存在しない状態で実行。
防止策
missingok
事例⑦ create設定漏れで権限エラー
発生した症状
- ログ出力不可
- Permission denied
原因
新しいログファイルの権限未指定。
防止策
create 0640 appuser appgroup
事例⑧ サイズローテーション誤設定
発生した症状
- ログが一切回らない
- または頻繁に回りすぎる
原因
size 10M
と
daily
の組み合わせ誤解。
防止策
- sizeは条件であることを理解
- 優先順位を把握
事例⑨ 削除しても容量が空かない
発生した症状
- dfは空かない
- duでは見えない
原因
プロセスが古いログを掴み続けている。
確認コマンド
lsof | grep deleted
防止策
- 適切なローテート方法
- truncate依存をやめる
logrotate安全設定テンプレート(例)
/var/log/app.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 appuser appgroup
postrotate
systemctl reload app.service
endscript
}
まとめ
logrotateは
「設定して終わり」ではなく「設計対象」
です。
本記事の事例は、
- ほぼ全て現場で実際に起きる
- 再発率が非常に高い
事故です。
この記事をlogrotate設定レビューのチェックリストとして活用してください。
あわせて読みたい


ログローテーション設定(logrotate)が動かない/古いログが消えないときの修正
概要 Linux サーバーではログファイルの肥大化を防ぐために、logrotate による定期的なローテーションが行われます。しかし設定ミスや権限、cron の不具合などにより、…
あわせて読みたい


logrotateでtruncateを使うべきケース・使うべきでないケース【実務判断ガイド】
Linux運用でログ肥大化対策として必ず登場するのが logrotate の copytruncate(truncate) ですが、 「とりあえず使う」は非常に危険 です。 本記事では、 truncateと…
あわせて読みたい


削除したファイルの容量が解放されない理由|dfとduがズレる本当の原因
Linux運用で非常によくあるトラブルが、 「rmでファイルを削除したのに、ディスク容量が空かない」 という現象です。 この問題は、仕組みを理解していないと 無意味なrm…
