LoginSignup
4
3

More than 5 years have passed since last update.

cronolog で nginx のアクセスログをローテート

Posted at

cronolog のインストール

$ sudo yum -y install cronolog --enablerepo=epel
$ which cronolog
/usr/sbin/cronolog

cronolog の使い方

30秒間隔でローテート
$ cronolog --period=30seconds access.log
30分間隔でローテート
$ cronolog --period=30minutes access.log
2時間間隔でローテート
$ cronolog --period=2hours access.log
2日間間隔でローテート
$ cronolog --period=2days access.log
2週間間隔でローテート
$ cronolog --period=2weeks access.log
2ヶ月間隔でローテート
$ cronolog --period=2months access.log

cronolog で出来ないこと

120分間隔でローテート
$ cronolog --period=120minutes access.log
※60分を超える時間は指定できない。
120秒間隔でローテート
$ cronolog --period=120seconds access.log
※60秒を超える時間は指定できない
7分間隔でローテート
$ cronolog --period=7minutes access.log
※60分で割り切れない時間は扱えない

nginx の設定

/var/log/nginx/access.logmkfifo でパイプにして、実際のログは /var/log/nginx/access.log.%Y-%m-%d.%H.%M に出力するようにする。

/etc/init.d/nginx
 :
 :

cronolog="/usr/sbin/cronolog"
logdir="/var/log/nginx"

 :
 :

cronolog_start() {
    if ! [ -p $logdir/access.log ]; then
       rm -f $logdir/access.log
       mkfifo $logdir/access.log
    fi

    /bin/sh -c "/bin/cat $logdir/access.log | $cronolog --period=30minutes $logdir/access.log.%Y-%m-%d.%H.%M &"
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    cronolog_start || exit 7  ← これを追記
  :
  :
}

アクセスログ

アクセスログはこんな感じになります。

スクリーンショット 2015-05-11 15.01.29.png

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3