如何设置 rsyslog 将所有日志发送到多个远程服务器?

如何设置 rsyslog 将所有日志发送到多个远程服务器?

我正在尝试让 rsyslog 将所有日志发送到 2 个远程服务器,但是如果第一个服务器出现故障,rsyslog 似乎只会发送到辅助服务器。

*.* @@server1
*.* @@server2

如果我将上述内容放入 /etc/rsyslog.conf,只要 server1 处于启动状态,server2 就不会收到任何日志。我该如何告诉 rsyslog 无论如何都要向两台服务器发送日志?

此外,作为额外的奖励,如果远程服务器出现故障,我想使用 2 个不同的本地“缓冲”文件进行本地存储。

答案1

转发到多个服务器

但重要的是要知道,完整的指令集构成一个操作。因此,您不能简单地添加(仅)第二条转发规则,而需要复制规则配置。请注意,对第二项操作使用不同的队列文件名,否则会弄乱您的系统。

所以,实际上,你使用2个不同的本地队列。

配置工作目录。

$WorkDirectory /var/spool/rsyslog

配置您的转发规则(obsolete legacy格式)。

$ActionQueueType LinkedList
$ActionQueueFileName Forward1
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@server1

$ActionQueueType LinkedList
$ActionQueueFileName Forward2
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@server2

配置您的转发规则(新的 advanced格式)。

action(type="omfwd" target="server1" resumeRetryCount="-1" 
    queue.type="LinkedList" queue.filename="Forward1" queue.saveOnShutdown="on")

action(type="omfwd" target="server2" resumeRetryCount="-1" 
    queue.type="LinkedList" queue.filename="Forward2" queue.saveOnShutdown="on")

相关内容