記事概要
Unicornのログローテーションの設定方法をまとめた記事です
環境
- centos6.5
- rails4.2.5
- ruby2.3.0
- rbenv
- unicorn
はじめに
railsのWEBアプリでunicornを利用している人は多いと思います。
nginxとunicornは相性がよく、デフォルト設定でも優れたパフォーマンスを発揮します。
しかし、デフォルトだとunicornのログローテートが実行されません。
このままにしておくと、ログの容量が一気に増えてしまいます。
なので、unicornのログローテートの設定は必須です。
unicornログローテーション
unicornのログローテーションは、logrotateで設定します。
logrotateファイルに記述してもよいのですが、logrotate.d配下にunicorn用のログローテートファイルを置くのが良いでしょう。
cd /etc/logrotate.d [root@vagrant-centos65 logrotate.d]# ls -l total 32 -rw-r--r--. 1 root root 103 Nov 29 2013 dracut -rw-r--r-- 1 root root 185 Aug 15 2014 httpd -rw-r--r--. 1 root root 172 Nov 23 2013 iscsiuiolog -rw-r--r-- 1 root root 844 Sep 11 2014 mysql -rw-r--r-- 1 root root 302 Sep 16 2014 nginx -rw-r--r-- 1 root root 207 Jun 10 2015 php-fpm -rw-r--r--. 1 root root 210 Aug 15 2013 syslog -rw-r--r--. 1 root root 100 Dec 17 2013 yum
unicornのログローテートを設定するファイルを作成します
touch unicorn
作成したunicornファイルに設定を記載します
/var/www/rails/app/current/log/*.log { daily missingok rotate 7 dateext compress delaycompress lastaction pid=/tmp/unicorn.pid test -s $pid && kill -USR1 "$(cat $pid)" endscript }
上記で設定している詳細内容は以下の通りです。
Assertion | Purpose |
---|---|
daily |
ログローテーションを毎日行う |
missingok |
指定のログファイルがなくてもエラーを出さずに処理を続行する |
rotate |
ログローテートの世代管理は7 |
dateext |
ログローテートを日付形式にする |
スクリプト
unicornには、USR1シグナル(プロセスの動作を中断させたり、再開、変更といった合図を送るための指定)を送ると、ログファイルを開き直してくれる機能があります。
この機能を利用して、lastactionとendscriptで囲んだシェルスクリプトを実行するように設定します。
lastaction pid=/tmp/unicorn.pid test -s $pid && kill -USR1 "$(cat $pid)" endscript
上記の設定の意味は、test -s $pid「ファイルが存在すれば」kill -USR1 "$(cat $pid)"「pidをUSR1でkillする」ということになります
テスト実行
設定が終了したらテストで実行します。
cd /etc/logrotate.d logrotate -df /etc/logrotate.d/unicorn
dがデバッグモードで、fは強制となります。
[root@vagrant-centos65 log]# logrotate -f /etc/logrotate.d/unicorn [root@vagrant-centos65 log]# ls -l total 652 -rw-rw-r-- 1 vagrant vagrant 553843 Sep 20 12:19 development.log-20160213 -rw-rw-r-- 1 vagrant vagrant 99141 Sep 20 12:19 unicorn.stderr.log-20160213 -rw-rw-r-- 1 vagrant vagrant 0 Dec 21 2014 unicorn.stdout.log-20160213
logrotateはcronから起動されるので、以上で設定完了です。再起動は不要です。
まとめ
ログは放置しておくとあっという間にサーバーの容量を圧迫してしまいます。
ログローテーションを利用して、サーバーの容量には注意を払うようにしましょう。
以上。
0 件のコメント:
コメントを投稿