Help us understand the problem. What is going on with this article?

rails5 + unicorn + nginx : ログローテーション

More than 3 years have passed since last update.

ログの容量が増えると管理しにくいことと追跡が難しくなるため、ログローテーションをしたい。

rails関連のログローテーションをlogrotateで管理する。

logrotateにログローテーションを作成する

まずlogrotate.d配下にあるものを確認してみる。

$cd /etc/logrotate.d

$ls -l

合計 36
-rw-r--r-- 1 root root 103  9月 14  2015 dracut
-rw-r--r-- 1 root root 185  3月  7 23:48 httpd
-rw-r--r-- 1 root root 118  6月 23 09:42 mackerel-agent
-rw-r--r-- 1 root root 907 11月 11  2015 mysqld
-rw-r--r-- 1 root root 204  2月 19 22:52 nginx
-rw-r--r-- 1 root root 329  9月 10  2014 psacct
-rw-r--r-- 1 root root 210 11月 11  2014 syslog
-rw-r--r-- 1 root root 100 10月 15  2015 yum

ログローテーション設定ファイルを作成します。

touch unicorn

作成したファイルに設定を記載します。

$sudo vim unicorn

/var/www/rails/app/current/log/*.log {
  daily
  missingok
  rotate 7
  dateext

  compress
  delaycompress
  copytruncate

  create 0666 ec2-user ec2-user

  lastaction
    pid=/var/www/app/current/tmp/pids/unicorn.pid
    test -s $pid && kill -USR1 "$(cat $pid)"
  endscript
}
  • daily:ログローテーションを毎日行う
  • missingok:指定のログファイルがなくてもエラーを出さずに処理を続行する
  • rotate:ログローテートの世代管理は7
  • dateext:ログローテートを日付形式にする
  • lastaction~endscript
    • unicornには、USR1シグナル(プロセスの動作を中断させたり、再開、変更といった合図を送るための指定)を送ると、ログファイルを開き直してくれる機能があります。
    • test -s \$pid「ファイルが存在すれば」kill -USR1 "\$(cat \$pid)"「pidをUSR1でkillする

テスト

設定が終了したらテストで実行してみます。

$cd /etc/logrotate.d

$logrotate -df /etc/logrotate.d/unicorn
  • d : デバッグモード
  • f : 強制実行

実行(手動で適用)

$logrotate -f /etc/logrotate.d/unicorn

$ls -l /var/www/rails/app/current/log

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から起動されるので、以上で設定完了です。再起動は不要です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした