質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

2回答

9076閲覧

【nginx】ログローテートが動作しない

gogoackman3

総合スコア109

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

0クリップ

投稿2018/01/09 23:49

編集2018/01/10 06:09

###やりたい事

nginxのログローテートを動作するようにして、日毎でファイルを分け、一定期間が経過したものは削除したい。

###現状

/etc/logrotate.dにあるnginxの設定は以下の通りです。

➜ logrotate.d cat nginx /var/log/nginx/*log { create 0644 nginx nginx daily rotate 10 missingok notifempty compress delaycompress sharedscripts postrotate /etc/init.d/nginx reopen_logs endscript }

/etc/init.dにあるnginxは以下の通りでした。

# Tell nginx to reopen logs reopen_logs() { configtest_q || return 6 echo -n $"Reopening $prog logs: " killproc -p $pidfile $prog -USR1 retval=$? echo return $retval }

またこの記事を参考に以下のコマンドを実行しています。

logrotate /etc/logrotate.conf

これで日付が変わればnginxのログファイルがローテーションされるはずなのですが、nginx.access.logというファイルに書き込まれ続けます。

なお実行権限は以下のようになっています。

➜ /etc ll /etc/logrotate.d/nginx -rw-r--r-- 1 root root 222 Jan 10 08:35 /etc/logrotate.d/nginx

###聞きたい事

一体何がうまくいっていないのでしょうか??もし見当がつきそうであれば教えていただけると幸いです。

###追記

以下のコマンドを実行した結果です。

(1) logrotate -d /etc/logrotate.d/nginx (2) logrotate -d -f /etc/logrotate.d/nginx
➜ git:(master) logrotate -d /etc/logrotate.d/nginx reading config file /etc/logrotate.d/nginx reading config info for /var/log/nginx/*log Handling 1 logs rotating pattern: /var/log/nginx/*log after 1 days (10 rotations) empty log files are not rotated, old logs are removed not running postrotate script, since no logs were rotated ➜ git:(master) logrotate -d -f /etc/logrotate.d/nginx reading config file /etc/logrotate.d/nginx reading config info for /var/log/nginx/*log Handling 1 logs rotating pattern: /var/log/nginx/*log forced from command line (10 rotations) empty log files are not rotated, old logs are removed not running postrotate script, since no logs were rotated

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

設定は問題ないように思います。
元の nginx.access.lognginx.access.log.1 にリネームされ、新しく作成された nginx.access.log にログが書き込まれているのであれば、正常な動作です。

ローテート後の nginx.access.log.1 に書き込まれているということですか?
それとも、 ローテートされない(nginx.access.log.1 にリネームされない)ということですか?

試しに、デバッグモード(dry-run)で挙動を確認してみてください。

(1) logrotate -d /etc/logrotate.d/nginx (2) logrotate -d -f /etc/logrotate.d/nginx

(1),(2) をそれぞれ実行し、以下のようなメッセージが出力されるかどうか。

renaming /var/log/nginx/nginx.access.log to /var/log/nginx/nginx.access.log.1

投稿2018/01/10 06:05

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gogoackman3

2018/01/10 06:12

ファイルがリネームされずにnginx.access.logの1ファイルにずっとログが書き込まれ続けている状態です。 ①②のコマンドを実行した結果は本文に追記として記載させて頂きました。この結果を見る限り、ローテーションされていないですよね?
TaichiYanagiya

2018/01/10 06:15

ログローテートの対象は「/var/log/nginx/*log」ですが、このパスに該当するファイルが存在しないようです。 実際のログファイルのパスと /etc/logrotate.d/nginx の設定と合っていないのではないでしょうか?
gogoackman3

2018/01/10 06:54

ありがとうございます。理解できました。確かにnginxのlogファイルは/var/www/rails/プロジェクト名/logというパスに生成されているので、設定と相違があります。ここまで分かれば解決出来そうです。とても助かりました!
gogoackman3

2018/01/10 12:27 編集

すみません、結局、nginxのアクセスログの出力先を変更するのが根本的な解決になるかなと思って調べたのですが、なぜconfファイルの設定通りにならずrailsプロジェクト内に生成されるのか掴めませんした。 以下に新しく質問をしたので、もし可能でしたら確認頂けると嬉しいです。 https://teratail.com/questions/108377
TaichiYanagiya

2018/01/10 14:36

/etc/logrotate.d/nginx 側を変更する方法もあります。
guest

0

試してないですし、あてずっぽなので申し訳ないですが、ディレクトリの権限が root なのが気になります。

投稿2018/01/10 02:17

mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gogoackman3

2018/01/10 06:12

ありがとうございます。確認してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問