Benim yapılandırmada, ben değişikliklerini takip sorumlu kim rsyslog var /home/user/my_app/shared/log/unicorn.stderr.logkullanarak 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 -9rsyslog 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)postrotateolduğ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 ) ...?