我正在努力在我的环境中实现 syslog-ng OSE。最终我想设置一个中央日志服务器,但为了入门,我从一个简单的配置开始。我创建了一个包含单个源、单个目标和单个日志的配置。当我执行时syslog-ng -F
(作为通过 cli 的前台进程),我得到了预期的结果(所有系统消息都记录到 /var/log/messages)。但是,如果我将其作为守护进程运行(通过 systemctl),我不会收到所有预期的系统消息。奇怪的是,我仍然从内核工具接收消息。这是我的简单配置:
@version:3.5
@include "scl.conf"
source s_sys { system(); internal(); };
destination d_mesg { file("/var/log/messages"); };
log { source(s_sys); destination(d_mesg); };
如您所见,我没有设置任何过滤器。我已验证该服务正在运行,systemctl status syslog-ng
并且确实如此。我已确认并停止和删除了所有其他日志守护进程。
syslog-ng.service - System Logger Daemon
Loaded: loaded (/usr/lib/systemd/system/syslog-ng.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2016-02-28 17:15:07 EST; 21min ago
Docs: man:syslog-ng(8)
Main PID: 3416 (syslog-ng)
CGroup: /system.slice/syslog-ng.service
└─3416 /usr/sbin/syslog-ng -F -p /var/run/syslogd.pid
我的操作系统是 CentOS 7.2 任何帮助都将不胜感激
答案1
NevDull,感谢您的意见。它帮助我解决了与此主题类似的以下问题:
在 systemctl 管理下运行时,syslog-ng 无法捕获 logger 命令发出的消息。但是当您通过终端执行如下操作时,它的表现符合预期:
systemctl stop syslog-nd
syslog-ng -Fevd
logger -p mail.info "I'm testing..." [need to open a new terminal session]
cat /var/log/maillog
结果,您可以在 /var/log/maillog 文件上看到“我正在测试......”消息。
按照您的建议编辑“/etc/systemd/journald.conf”文件解决了这个问题。
感谢分享
答案2
另一个可能的解决方案是将 syslog-ng 升级到更高版本。从 syslog-ng 3.7 开始,它可以直接读取 systemd 日志。