syslog-ng 作为前台进程工作,而不是守护进程

syslog-ng 作为前台进程工作,而不是守护进程

我正在努力在我的环境中实现 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 日志。

https://www.syslog-ng.com/community/b/blog/posts/installing-latest-syslog-ng-on-rhel-and-other-rpm-distributions

相关内容