远程服务器重启后,获取rsyslog转发消息

时间:2013-10-30 13:03:05

标签: syslog rsyslog

我让syslog成功地将日志转发到上游服务器,如下所示:

$MainMsgQueyeType LinkedList
$MainMsgQueueSize 10000
$MainMsgQueusDiscardMark 8000
$MainMsgQueueDiscardSeverity 1
$MainMsgQueueSaveOnShutdown off
$MainMsgQueueTimeoutEnqueue 0

$ActionQueueType LinkedList    # in memory queue
$ActionQueueFileName fwdRule1  # unique name prefix for spool files
$ActionQueueSize 10000         # Only allow 10000 elements in the queue
$ActionQueueDiscardMark 8000   # Only allow 8000 elements in the queue before dropping msgs
$ActionQueueDiscardSeverity 1  # Discard Alert,Critical,Error,Warning,Notice,Info,Debug, NOT Emergency
$ActionQueueSaveOnShutdown off # save messages to disk on shutdown
$ActionQueueTimeoutEnqueue 0
$ActionResumeRetryCount -1     # infinite retries if host is down

$RepeatedMsgReduction off

*.* @@remoteserver.mynetwork.com:5544

在远程服务器上,我有一些与syslog进行对话并侦听该端口的东西。为了测试,我有一个简单的日志客户端,每秒记录100条消息到syslog。

这一切都运行正常,我已经配置了上面的队列,以便在远程服务器不可用的情况下,队列开始填满,最后消息被丢弃,从而保护syslog阻止其日志客户端。

当我在remoteserver:5544上停止远程日志接收器时,syslog仍然稳定(队列填满/填满),但是当我稍后重启远程日志接收器时,rsyslog再次检测到服务器,重新建立TCP连接

但是 - 尽管队列中有数千条消息,并且日志记录客户端继续每秒记录100条消息,但syslog只向它转发了1条消息

如果检测到远程服务器备份后,如何让syslog再次开始转发邮件? (不重启syslog)。

使用rsyslog 4.6.2-2

我正在使用,并希望使用TCP

1 个答案:

答案 0 :(得分:5)

如果遇到任何人遇到此问题,则该工作目录设置为:

$WorkDirectory /var/spool/rsyslog  

以上配置,这样做:

$ActionQueueFileName fwdRule1

即使它应该是内存中的队列。因此,当队列达到800(奇怪,不是8000)时,磁盘辅助模式被激活,并且syslog尝试将消息写入/ var / spool / rsyslog。 此目录不存在。随机地(因此必须存在竞争条件和rsyslog中的错误),在不断尝试在该目录中的磁盘上打开队列文件后,rsyslog进入扭曲状态并放弃并继续排队消息,直到它达到高位10,000马克。重新启动下游日志服务器无法使其恢复。

取出对ActionQueueFileName的所有引用并使WorkDirectory存在修复此问题。