Benim yapılandırmada, ben değişikliklerini takip sorumlu kim rsyslog var /home/user/my_app/shared/log/unicorn.stderr.log
kullanarak imfile
. İçerik, TCP kullanılarak başka bir uzak günlük sunucusuna gönderilir.
Günlük dosyası döndüğünde, rsyslog uzak sunucuya veri göndermeyi durdurur.
Rsyslog'u yeniden yüklemeyi, bir HUP sinyali göndermeyi ve tamamen yeniden başlatmayı denedim, ancak hiçbir şey işe yaramadı.
Aslında işe yaradığını bulmak için tek yolu kirli:
- hizmeti durdurun, rsyslog istatistik dosyalarını silin ve rsyslog'u yeniden başlatın. Bütün bunlar logrotate dosyamdaki bir postrotate kancasında.
kill -9
rsyslog ve yeniden başlatın.
Bunu rsyslog içlerine dokunmadan yapmamın uygun bir yolu var mı ?
Rsyslog dosyası
$ ModYük immark $ ModLoad imudp $ ModLoad imtcp $ ModLoad imuxsock $ ModLoad imklog $ ModLoad imfile $ template WithoutTimeFormat, "[ortam] [% syslogtag%] -% msg%" $ WorkDirectory / var / spool / rsyslog $ InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $ InputFileTag unicorn-stderr $ InputFileStateFile stat-unicorn-stderr $ InputFileSeverity bilgisi $ InputFileFacility local8 $ InputFilePollInterval 1 $ InputFilePersistStateInterval 1 $ InputRunFileMonitor # Uzak sunucuya iletme $ syslogtag 'apache-' içeriyorsa @@ my_server: 5000; WithoutTimeFormat : syslogtag, içerir, "apache-" ~ *. * @@ sunucum: 5000; SyslFormat
Logrotate dosyası
/home/user/my_app/shared/log/*.log { günlük missingok dateext 30 döndür kompres notifempty uzatma gz copytruncate 640 kullanıcı oluştur sharedscripts Post-döndür (rsyslog && rm / var / spool / rsyslog / stat- * && rsyslog 2'yi başlat> & 1) || doğru endscript }
Bilginize, dosya rsyslog kullanıcısı tarafından okunabilir, sunucuma ulaşılabilir ve aynı döngüde dönmeyen diğer günlük dosyaları düzgün izlenmeye devam eder.
Ubuntu 12.04 kullanıyorum.
post-rotate
(bir şey değil)postrotate
olduğunu düşünüyorum, çünkü sahip olduğunuz orijinal logrotate komut dosyası rsyslog ile iyi çalışmış olmalıdır (postrotate komut dosyası çalışıyorsa ) ...?