gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:46:32 26 4
gpt4 key购买 nike

我让 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

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

一切正常,我已经配置了上面的队列,以便在远程服务器不可用的情况下,队列开始填满,然后最终消息被丢弃,从而防止系统日志阻塞其日志记录客户端。

p>

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

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

一旦检测到远程服务器已备份,如何让系统日志再次开始转发消息? (无需重新启动系统日志)。

我正在使用 rsyslog 4.6.2-2

我正在使用,并且想使用TCP

最佳答案

万一有人遇到这个问题是工作目录设置为:

$WorkDirectory /var/spool/rsyslog  

上面的配置是这样做的:

$ActionQueueFileName fwdRule1

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

删除对 ActionQueueFileName 的所有引用并使 WorkDirectory 存在可解决此问题。

关于syslog - 远程服务器重启后获取 rsyslog 转发消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19683009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com