![syslog-ng | 如何在不使用不同端口的情况下从一个客户端分离来自不同应用程序的日志???](https://linux22.com/image/730078/syslog-ng%20%7C%20%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%AB%AF%E5%8F%A3%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E4%BB%8E%E4%B8%80%E4%B8%AA%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%88%86%E7%A6%BB%E6%9D%A5%E8%87%AA%E4%B8%8D%E5%90%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%97%A5%E5%BF%97%EF%BC%9F%EF%BC%9F%EF%BC%9F.png)
我有一些Samba 域控制器以及一个中央 Syslog 服务器。它们都运行最新的 syslog-ng 和 SUSE Leap15。来自桑巴,温宾和绑定/命名应该以单独的文件形式发送到中央 Syslog 服务器。到目前为止,我意识到每个日志文件都有一个不同的端口。
log.samba - Port 2000
log.winbind - Port 2001
log.named - Port 2002
通过这种方式,我可以将中央服务器上聚合日志文件中每个应用程序和服务器的日志分离出来。
但是,是否有可能将来自不同应用程序的日志分开,而无需为每个应用程序和服务器使用不同的端口?
问候迈克尔
一个 DC 上的示例:
source s_samba {file("/var/log/samba/log.samba" follow-freq(1));};
source s_winbind {file("/var/log/samba/log.wb-COLD-BEER" follow-freq(1));};
destination d_syslog-srv_samba {syslog("10.1.11.35" port(2000) transport ("tcp"));};
destination d_syslog-srv_winbind {syslog("10.1.11.35" port(2001) transport ("tcp"));};
log {source(s_samba);destination(d_syslog-srv_samba);};
log {source(s_winbind);destination(d_syslog-srv_winbind);};
在中央 Syslog 服务器上:
source s_dc_all_network {syslog(port(2000) transport("tcp"));};
source s_winbind_all_network {syslog(port(2001) transport("tcp"));};
destination d_dc_all_local{file("var/log/syslog-srv/DC_all/log.samba_all"owner("root")group("root")perm(0777));};
destination d_winbind_all_local{file("var/log/syslog-srv/DC_all/log.wb-COLD-BEER_all"owner("root")group("root")perm(0777));};
log {source(s_dc_all_network);destination(d_dc_all_local);};
log {source(s_winbind_all_network);destination(d_winbind_all_local);};
答案1
检查您的日志消息,不同应用程序的名称应该出现在日志消息的 PROGRAM 字段中,因此您可以在日志路径中使用过滤器来分隔消息。