gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:44:55 25 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 条消息记录到 syslog。

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

当我停止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 进入扭曲状态并放弃并继续对消息进行排队,直到达到最高值一万马克。重启下游日志服务器未能恢复。

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

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

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