重新启动rsyslog重新发送日志

我在EC2上运行Ubuntu 12.04.1 LTS。 我有一堆应用程序服务器被configuration为通过rsyslog将其日志转发到中央服务器。

由于对中央服务器上的日志文件进行了Nagios监视,因此我收到警报,指出特定应用程序服务器无法将日志转发到中央服务器。

login到计算机并重新启动rsyslog服务可以解决问题。 但是,rsyslog会再次重新传输日志,导致收集器上出现重复。 为什么这样做?

这个问题的日志传输方面的冻结似乎可能是由于一个错误的方式rsyslog的方式configuration'buntu: https ://bugs.launchpad.net/ubuntu/+source/rsyslog/+bug / 940030

我也能够在expertsexchange上find一个有趣的post:www.expert-sex-change.com/OS/Linux/Administration/Q_27511414.html:

 >我最近遇到了一个问题,希望有人能帮我弄明白。 我是
 >运行Ubuntu 10.04和rsyslog 5.8.1。 我设置rsyslog来监视几个文件并发送
 >这些文件的任何更改Loggly(伟大的服务方式)。 那么,这一切工作
 >伟大的,除了每当我重新启动rsyslog它重新发送这些事实
 >过去发送的文件。 现在,我的理解是rsyslog应该使用
 > $ WorkDirectory并创build你为$ InputFileStateFile设置的文件来保存
 >监视的文件的状态,以便它不发送重复的条目。
 > 
 >这是我正在使用的一个例子:
 > 
 > $ WorkDirectory / var / log / rsyslog
 > 
 >#监视日志文件
 > $ InputFileName /var/log/monit.log
 > $ InputFileTag监视
 > $ InputFileStateFile监控状态
 > $ InputFileSeverity信息
 > $ InputRunFileMonitor
 > 
 >所以,从我上面的描述中,rsyslog应该创build一个“monit-state”文件 
 >“/ var / log / rsyslog”会保存/var/log/monit.log文件的状态, 
 >重复发送。 那是对的吗? 如果是这样,这不会发生!
 > 
 >“/ var / log / rsyslog”的权限应该是什么? 我必须触摸“monit-state”
 >“/ var / log / rsyslog”(我已经试过了,什么也没有发生)?

有一个有趣的答案:

 >好的,我find了这个网站(Trouble Shooting Rsyslog),并进行了交互式debugging
 >模式使用:
 > 
 > rsyslogd -c5 -dn>日志文件
 > 1:
 >全选
 >在新窗口中打开
 > 
 > 
 >我能够看到这实际上是一个权限问题。 我打开了权限
 > 777为我的$ WorkDirectory,只是为了testing,和rsyslog确实创build了状态文件和
 >一切按计划进行。 我将继续玩权限,以便它
 >不是777(显然),但我想让任何可能有这个问题的人知道
 >我怎么解决它。    

我调整了/ var / spool / rsyslog的权限,归用户“syslog”所有。 我已经testing重复传输应用此更改后,它似乎已经解决了这个问题。 如果问题重新出现,或者我发现这个问题没有解决,我会回到这里,更新答案。

解:

$ sudo chown syslog /var/spool/rsyslog