私の構成では、/home/user/my_app/shared/log/unicorn.stderr.log
使用の次の変更を担当するrsyslogがありますimfile
。コンテンツはTCPを使用して別のリモートログサーバーに送信されます。
ログファイルがローテーションすると、rsyslogはリモートサーバーへのデータ送信を停止します。
rsyslogをリロードしてHUPシグナルを送信し、それを完全に再起動してみましたが、何も機能しませんでした。
実際に機能することがわかった唯一の方法は汚いものでした。
- サービスを停止し、rsyslog statファイルを削除して、rsyslogを再起動します。これらすべては、私のlogrotateファイルのpostrotateフックにあります。
kill -9
rsyslogを実行してやり直してください。
rsyslog内部に触れずにこれを行う適切な方法はありますか?
Rsyslogファイル
$ ModLoad immark $ ModLoad imudp $ ModLoad imtcp $ ModLoad imuxsock $ ModLoad imklog $ ModLoad imfile $ template WithoutTimeFormat、 "[環境] [%syslogtag%]-%msg%" $ WorkDirectory / var / spool / rsyslog $ InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $ InputFileTag unicorn-stderr $ InputFileStateFile stat-unicorn-stderr $ InputFileSeverity情報 $ InputFileFacility local8 $ InputFilePollInterval 1 $ InputFilePersistStateInterval 1 $ InputRunFileMonitor #リモートサーバーに転送 $ syslogtagに 'apache-'が含まれている場合、@@ my_server:5000; WithoutTimeFormat :syslogtag、contains、 "apache-"〜 *。* @@ my_server:5000; SyslFormat
Logrotateファイル
/home/user/my_app/shared/log/*.log { 毎日 Missingok dateext 30回転 圧縮する 通知なし 拡張gz コピー 640ユーザーのユーザーを作成する 共有スクリプト 後回転 (rsyslogを停止&& rm / var / spool / rsyslog / stat- * && rsyslog 2>&1を開始)|| 本当 endscript }
参考までに、rsyslogユーザーはファイルを読み取ることができます。サーバーにアクセスでき、同じサイクルでローテーションしない他のログファイルは引き続き適切に追跡されます。
Ubuntu 12.04を実行しています。
post-rotate
(のものではないです)の代わりに、postrotate
postrotateスクリプトが実行されていた場合、あなたが持っていた元logrotateのスクリプトが(rsyslogので罰金を働いているはずなので、 )...?