如何将syslog-ng的日志转发至journald?
如何将syslog-ng的日志转发至journald?
当然没问题!你想把UDP端口收到的日志通过syslog-ng转发给journald,这个需求完全能实现,而且syslog-ng本身就自带对journald的支持,比第三方工具靠谱多了,还能用上你想要的TLS加密、过滤规则这些功能。我给你详细说下配置步骤:
1. 编辑syslog-ng配置文件
syslog-ng的主配置文件通常是/etc/syslog-ng/syslog-ng.conf,你也可以在/etc/syslog-ng/conf.d/目录下新建一个自定义配置文件(比如udp-to-journal.conf),这样更方便管理。
定义UDP源(监听514端口)
首先添加监听UDP 514端口的源配置:
source s_udp { udp(ip(0.0.0.0) port(514)); };
这里ip(0.0.0.0)表示监听所有网卡的514端口,如果你只想监听特定网卡,换成对应IP就行。
定义journald目标
syslog-ng有专门的journald()驱动,直接配置目标指向systemd-journald:
destination d_journal { journald(); };
创建日志转发路径
把刚才定义的源和目标关联起来,还可以按需添加过滤规则:
log { source(s_udp); # 可选:添加过滤规则,比如只转发local0设施的日志 # filter(f_local0) { facility(local0); }; # filter(f_local0); destination(d_journal); };
2. 进阶:添加TLS加密支持
如果需要接收加密的syslog流量,你可以把源改成TLS监听的TCP端口(比如6514是标准加密syslog端口):
source s_tls { tcp(ip(0.0.0.0) port(6514) tls( key-file("/etc/syslog-ng/ssl/server.key") # 你的私钥文件路径 cert-file("/etc/syslog-ng/ssl/server.crt") # 你的证书文件路径 ) ); };
然后把日志路径里的source(s_udp)换成source(s_tls)即可。
3. 验证配置并重启服务
- 先验证配置文件是否有语法错误:
syslog-ng -s
如果没有输出,说明配置没问题。
- 重启syslog-ng服务使配置生效:
systemctl restart syslog-ng
4. 测试转发功能
用logger工具发送一条测试日志到UDP 514端口:
logger -n localhost -P 514 "Test message: Forwarded from syslog-ng to journald"
然后用journalctl实时查看journald日志,应该能看到这条测试消息:
journalctl -f
备注:内容来源于stack exchange,提问作者avi9526
相关产品推荐
相关产品推荐

