ログローテはたまにやろうとすると、あれどうだっけ?となるので logrotateを使ったログのローテーション方法をまとめました。
前提
- 環境(OS):CentOS 6.6
- 利用機能:logrotate、cron
今回は、ローテーションしたいログ、例えばアプリケーションログを /var/log/app配下に吐いているとして考えていきます。
※作業はsudoユーザで実施してください。
手順
/etc/logrotate.dディレクトリにappファイルを作成し、ログローテ設定をします。
なので、まずはこのディレクトリをlogrotateが読むようになっているかを確認しましょう。
logrotate.dの読み込み確認
logrotate.confに以下の記述があること確認してください。
もしなければ、適当な位置に追記をしてください。
- /etc/logrotate.conf
include /etc/logrotate.d
これが設定されていれば、logrotate.dディレクトリの設定も読み込まれます。
ローテーション設定の記述
logrotate.dディレクトリ配下にファイルを作ってローテーションの設定を記述します。 ファイル名は何でもよいのですが、logが作成されるディレクトリ名など、 何のログのローテーション設定が書かれたものか分かるように様な名前が良いです。 (ここではlogディレクトリ名からappという名前にしています)
appファイルについて
- /etc/logrotate.d/app
- 権限:644、root:root
/var/log/app/*.log { copytruncate daily rotate 30 compress missingok ifempty }
以下の流れで実施すると、設定確認まできてGOODです
cd /etc/logrotate.d/ sudo vi app logrotate -dv app
※エラーが出たら設定を見直してください。
cronの設定確認
ローテーションの設定自体は終わっているのですが、 一応cronでlogrotateが動かされているかを確認しておきましょう。
確認ポイントは、# service crond status
の結果がrunningになっていることと、
/etc/cron.daily/logrotate
が存在していることです。
もしlogrotateファイルがなければ、権限:755で、root:rootの所有となるlogrotateファイルを、 以下の内容で作成してください。
#!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
まとめ
これで一旦ローテーション設定は有効になったと思います。 設定内容の詳細については、appの設定値とlogrotateの詳細を参照してください☆