【LPIC1】ログのローテーション

LPIC1

1.ログのローテーションとは

rsyslogの「/var/log/messages」にはログが蓄積していくが、一つのファイルに蓄積し続けることでファイルが肥大化してI/O負荷の上昇やディスク容量枯渇、読み書き検索の遅延に繋がる。
これを防ぐために古いログを別ファイルに切り離して管理することをログのローテーション機能と呼ぶ。古いログファイルは、保存できるログファイル数をこえると古い方から自動で削除される。
ローテーションの実行はコマンド「logrotate」で行われ、デフォルトではcronにより1日1回呼び出されている。

2.コマンド「logrotate」

(1)書式

cronで自動実行されるためコマンドラインに直接打ち込むことはないが参考までに。

logrotate [オプション] /etc/logrotate.conf

(2)オプション

①logrotate -d /etc/logrotate.conf

設定内容の確認。実行はしない。

②logrotate -f /etc/logrotate.conf

強制実行。

(3)設定

ローテーションの頻度やどれくらい過去のログまで保持するかなどを設定するには設定ファイル「/etc/logrotate.conf」を編集する必要がある。以下設定内容一覧。覚える必要ない。

設定項目設定できる内容説明
frequencydaily, weekly, monthly, yearlyログのローテーション周期
rotate数値(例:4)保持するログ世代数(古い順に削除)
compress(引数なし)ローテーション後にgzipで圧縮(.gz
nocompress(引数なし)圧縮しない(デフォルト無効)
delaycompress(引数なし)ローテーションの次回で圧縮(compress と併用)
nodatecompress(引数なし)圧縮をすぐ実施する
dateext(引数なし)ローテーションファイルに日付を付ける(例:log-20250701.gz
dateformat-%Y%m%d などdateext 使用時のフォーマット
missingok(引数なし)ログファイルがなくてもエラーにしない
nomissingok(引数なし)ログファイルが無ければエラーにする
notifempty(引数なし)空のログはローテーションしない
ifempty(引数なし)空でもローテーションする(デフォルト)
createモード ユーザー グループ新ログファイルのパーミッションと所有者(例:0640 root utmp
nocreate(引数なし)ログファイルを新しく作成しない
maxsizeサイズ(例:100M)最大サイズに達したらローテーション(dailyなどと併用可能)
minsizeサイズ(例:1M)最小サイズに達しなければローテーションしない
sizeサイズ指定サイズに達したときにのみローテーション(周期設定は無視される)
sharedscripts(引数なし)同じブロック内ファイルに対して1回だけスクリプトを実行
nosharedscripts(引数なし)各ログファイルごとにスクリプト実行
prerotateendscriptシェルスクリプトローテーション前の処理(例:通知・停止など)
postrotateendscriptシェルスクリプトローテーション後の処理(例:rsyslogのHUPなど)
includeディレクトリパス他の設定ファイルを読み込む(通常 /etc/logrotate.d
compresscmdコマンド名圧縮に使うコマンド(デフォルト:gzip
uncompresscmdコマンド名解凍コマンド(デフォルト:gunzip
compressoptions文字列圧縮オプション(例:-9
extension.log などログファイルの拡張子を明示的に指定
タイトルとURLをコピーしました