重新启动 rsyslog 再次重新发送日志

重新启动 rsyslog 再次重新发送日志

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

自从在中央服务器上安装 Nagios 监控日志文件后,我一直收到警报,表明特定应用程序服务器无法将其日志转发到中央服务器。

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

答案1

该问题的日志传输冻结方面似乎是由于 rsyslog 在“buntu:”的开箱即用配置方式中存在错误造成的。https://bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/940030

我还能够在expertsexchange上找到一篇有趣的帖子:www.expert-sex-change.com/OS/Linux/Administration/Q_27511414.html:

> 我最近遇到了一个问题,希望有人能帮我解决。我
> 运行 Ubuntu 10.04 和 rsyslog 5.8.1。我设置了 rsyslog 来监控一些文件并发送
> 将这些文件的任何更改发送给 Loggly(顺便说一句,服务很棒)。嗯,一切都正常
> 很好,除了每当我重新启动 rsyslog 时,它都会重新发送那些
> 它过去发送过的文件。现在,我的理解是 rsyslog 应该使用
> $WorkDirectory 并创建您为 $InputFileStateFile 设置的文件来保存
> 监控文件的状态,以便它不会发送重复的条目。
>
> 以下是我正在使用的一个例子:
>
>$工作目录/var/log/rsyslog
>
># 监控日志文件
> $输入文件名 /var/log/monit.log
> $InputFileTag 监控
> $InputFileStateFile 监控状态
> $InputFileSeverity 信息
>$InputRunFileMonitor(输入运行文件监视器)
>
> 因此,根据我上面的描述,rsyslog 应该在
>“/var/log/rsyslog”将保存/var/log/monit.log文件的状态,因此没有
> 发送了重复项。对吗?如果是这样,那就不会发生这种情况!
>
> “/var/log/rsyslog” 的权限应该是什么?我是否必须触摸“monit-state”
> “/var/log/rsyslog”(我已经尝试过了,什么也没发生)?

答案很有趣:

> 好的,我找到了这个网站(故障排除 Rsyslog)并进行了交互式调试
> 模式使用:
>
> rsyslogd -c5 -dn > 日志文件
> 1:
> 全选
> 在新窗口中打开
>
>
> 我能够看到这实际上是一个权限问题。我打开了权限
> 777 作为我的 $WorkDirectory,只是为了测试,rsyslog 确实创建了状态文件和
> 一切都按计划进行。我将继续使用权限,以便
> 不是 777(显然),但我想让其他可能遇到此问题的人知道
> 我如何解决这个问题。    

我已将 /var/spool/rsyslog 的权限调整为用户“syslog”所拥有。应用此更改后,我已测试了重复传输,似乎已解决问题。如果问题再次出现或我发现此方法无法解决问题,我将返回此处并更新答案。

解决方案:

$ sudo chown syslog /var/spool/rsyslog

相关内容