我正在配置 3.5.6-2 版的 /etc/syslog-ng/syslog-ng.conf,通过如下配置监听 514 端口上的远程主机
#source s_src {
# system();
# internal();
#};
# If you wish to get logs from remote machine you should uncomment
# this and comment the above source line.
source s_net { tcp(ip(127.0.0.1) port(514)); udp(); };
但是当我注释掉 s_src 时,我认为它表明:
#source s_src {
# system();
# internal();
#};
由于配置错误,syslog-ng 无法启动。如果我只注释掉这些:
source s_src {
# system();
# internal();
};
它启动了,但不会记录来自本地主机的标准系统日志消息。我是否需要添加其他指令source s_src
来让它在端口 514 上监听远程主机?
(配置中其他可能相关的行)
log { source(s_src); filter(f_syslog3); destination(d_syslog); };
filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };
destination d_syslog { file("/var/log/remotelogs/$HOST/syslog"); };
答案1
好的,在我的 syslog-ng 3.5.6-2 版本中(来自标准 Debian Jessie vanilla 软件包),您必须做几件事。首先,取消注释:
source s_src {
system();
internal();
};
然后将 s_net 行更改为:
source s_net { tcp(ip(0.0.0.0) port(514) max-connections (5000)); udp(); };
现在您必须修改一行以将远程主机 syslog 日志放在由主机名划定的某个位置,以便您可以确定哪个主机 syslog 是哪个,例如:
destination d_syslog { file("/var/log/remotelogs/$HOST/syslog"); };
或者,如果您希望将它们全部放在同一个文件中来分析单个文件,只需执行以下操作:
destination d_syslog { file("/var/log/remotelogs/syslog"); };
然后把它们放在一起,像这样:
#log { source(s_src); filter(f_syslog3); destination(d_syslog); };
log { source(s_net); filter(f_syslog3); destination(d_syslog); };
请注意,syslog 的日志条目现在引用了 S_NET 作为源,而不是 S_SRC。现在您可以重新启动 syslog-ng 并查看它是否正在监听:
/etc/init.d/syslog-ng restart
netstat -plunt | grep syslog-ng
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 26853/syslog-ng
udp 0 0 0.0.0.0:514 0.0.0.0:* 26853/syslog-n
答案2
来源/目的地/等等是类对象结构在 syslog-ng 中。
如果您想接收远程消息,您只需创建一个使用 tcp()、udp() 插件的源对象,就像您所做的那样:
source s_net { tcp(ip(127.0.0.1) port(514)); udp(); };
s_net
是源的名称。s_net
除非您将其添加到日志路径,否则将不起作用。“将其添加到日志路径”意味着您将源链接到其他对象(例如目标);因此来自源的消息将通过您在日志路径中创建的管道。
您可以使用块将源链接到目标log
,例如:
destination d_syslog { file("/var/log/$HOST/syslog"); };
log {
source(s_net);
destination(d_syslog);
};
s_src
在配置中的某个log
路径中使用,这就是为什么您不能将其注释掉的原因。如果您想同时接收远程和本地消息,请不要注释掉s_src
。另一个例子:
log {
source(s_src);
source(s_net);
destination(d_syslog);
};
您的配置中的指令具有误导性。
请注意,syslog-ng v3.5 相当旧。请考虑升级到当前版本,即 v3.20。