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
ちゃんと新しいログが書き込まれて増量していることを確認。これでよし。