我正在尝试让 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")