在集中式日志记录设施中,如何防止远程紧急消息淹没用户控制台,同时仍允许默认值
*.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