如何禁用远程紧急事件淹没 rsyslog 接收器上的控制台?

如何禁用远程紧急事件淹没 rsyslog 接收器上的控制台?

在集中式日志记录设施中,如何防止远程紧急消息淹没用户控制台,同时仍允许默认值

*.emerg    :omusrmsg:*

对于任何当地的紧急事件?

特别是,我想将远程紧急消息记录到日志文件中,并可能发送电子邮件,但远程计算机不应中断主服务器上的工作。

主服务器是RHEL 7.4 x86_64
rsyslog版本:8.24.0

服务器端配置(片段):
/etc/rsyslog.conf:

$ModLoad imuxsock
$ModLoad imjournal
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
*.emerg    :omusrmsg:*
$OmitLocalLogging on

/etc/rsyslog.d/listen.conf:

$systemLogSocketName /run/systemd/journal/syslog

答案1

创建了一个新的 /etc/rsyslog.d/remote-emerg.conf 文件:

$template myFormat0,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg:::drop-last-lf\n"
if $fromhost-ip != '127.0.0.1' and $syslogseverity-text == 'emerg' then {
*.emerg /var/log/remote/PANIC;myFormat0
stop
}

笔记:我尝试使用 %HOSTNAME% 而不是 %FROMHOST-IP%,但即使远程主机名配置正确,它也始终打印 localhost。

去测试在本地和远程主机上运行:

logger -p daemon.emerg "TEST from $HOSTNAME"

本地运行打印到控制台,远程仅记录到文件 PANIC

相关内容