kusanagiのnginxのログがアーカイブされずに圧迫していたので対処した話

なんか急にkusanagiちゃんのディスク容量が少なくなってアラートが来ていたので調査。見てみると、logディレクトリがモリモリ増えていた。

ll /home/kusanagi/hogehoge/log/nginx/
-rw-rw-r-- 1 root root 2.0G Jul 16 13:15 ssl_access.log
-rw-rw-r-- 1 root root  12G Jul 16 13:15 ssl_error.log

おお、ローテーションされていない。なんでだろう。
まずはログローテートの設定を確認。
/etc/logrotate.d/nginx

/var/log/nginx/*.log /home/kusanagi/*/log/nginx/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        sharedscripts
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

ちゃんと入っているな。
実際にログローテートがどう仕事をしている(しようとして)のかを調べるために、logroteteをデバッグモードで実行。
(-d オプションを付けると、Dry runでテストできる)

広告

[dacelo@kusanagi nginx]$ sudo logrotate -d /etc/logrotate.d/nginx
(略)
error: skipping "/home/kusanagi/www_dacelo/log/nginx/ssl_access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
error: skipping "/home/kusanagi/www_dacelo/log/nginx/ssl_error.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.

お、なんか警告されてる。

日本語訳

エラー! “/ssl_access.log”は飛ばした。
なぜなら、親ディレクトリのパーミッションが安全でないので( 全世界から書き込み可能、もしくは”root”ではないグループによって書き込み可能)、設定ファイルに “su”ディレクティブを設定して、どのユーザー/グループをローテーションに使用するかを指示せよ。

logディレクトリを見ると、パーミッションが775になっていたので、他の標準設定サーバとあわせて755にしたら警告は出なくなった。

ひとまず手動対応

よってひとまずlogrotateを手動で動かしてローテーションだけさせておく。

$ sudo logrotate /etc/logrotate.d/nginx

結果

-rw-r--r-- 1 httpd root  46K Jul 16 13:47 ssl_access.log
-rw-rw-r-- 1 root  root 2.0G Jul 16 13:15 ssl_access.log.1
-rw-rw-r-- 1 root  root    0 Jul 16 13:15 ssl_error.log
-rw-rw-r-- 1 root  root 10G Jul 16 13:15 ssl_error.log.1

ローテーションによってできたファイルを手動でgz圧縮しておく。

[gp_kikukawa@kusanagi03 nginx]$ find ./ -name "*.1" | xargs sudo gzip -9

結果

-rw-r--r-- 1 httpd root  85K Feb 16 14:14 ssl_access.log
-rw-rw-r-- 1 root  root 200M Feb 16 13:15 ssl_access.log.1.gz
-rw-rw-r-- 1 root  root    0 Feb 16 13:15 ssl_error.log
-rw-rw-r-- 1 root  root 200M Jul 16 13:15 ssl_error.log.1.gz

ちゃんと新しいログが書き込まれて増量していることを確認。これでよし。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *