先日centos7でrsyslogを設定する機会がありましたので、
その際に調査したログローテションの設定についての備忘録を記載します。
ローテションの設定については、
/etc/logrotate.conf
→全体的な、メインの設定
/etc/logrotate.d/xxxxxx
→各個々のログごとの設定
となり、
※デフォルトでは
ls /etc/logrotate.d/
配下にsyslogやhttpd、namedなどがすでに存在しています。
指定したログファイルだけのローテション設定は
/etc/logrotate.d/任意の名前A
を作成し、
任意の名前Aにローテション設定をします。
今回の設定については
vi /etc/logrotate.d/任意の名前A
/var/log/指定のログがあるディレクトリ/*log #対象のログファイル
{
missingok
ifempty
dateformat .%Y%m%d
daily
dateext
compress
rotate 45
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
という感じで設定しました。
設定可能項目については概ね下記があるようです。
compress ローテーションしたログをgzipで圧縮
delaycompress ログの圧縮作業を次回のローテーション時まで遅らせる。compressと共に指定
nocompress ローテーションしたログを圧縮しない
copytruncate ログファイルをコピーし、内容を削除
create [パーミッション ユーザー名 グループ名] ローテーション後に空のログファイルを新規作成。ファイルのパーミッション、ユーザー名、グループ名を指定可能
daily ログを毎日ローテーションする
weekly ログを毎週ローテーションする
monthly ログを毎月ローテーションする
ifempty ログファイルが空でもローテーションする
notifempty ログファイルが空ならローテーションしない
missingok ログファイルが存在しなくてもエラーを出さずに処理を続行
nomissingok ログファイルが存在しない場合にエラーを出す
nocreate 新たな空のログファイルを作成しない
noolddir ローテーション対象のログと同じディレクトリにローテーションしたログを格納
olddir [ディレクトリ名] 指定したディレクトリ内にローテーションしたログを格納
postrotate~endscript postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行
prerotate~endscript postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行
sharedscripts 複数指定したログファイルに対し、postrotateまたはprerotateで記述したコマンドを実行
rotate 回数 ローテーションする回数を指定
size [ファイルサイズ] ログファイルが指定したファイルサイズ以上になったらローテーションする
※※ちなみにテストでローテション確認するため利用したコマンド
sudo /usr/sbin/logrotate -f /etc/logrotate.d/任意の名前A