syslog ng未筛选远程服务器上的标记



我有一个nginx服务器,它使用syslog-ng向远程syslog-ng服务器发送访问和错误日志。我让它标记消息,这样远程服务器就可以过滤标记,将它们放入文件中。但筛选语句似乎不起作用。在本地客户端上,我做了一个测试,使用过滤器将消息发送到本地文件,它们在那里工作。但当被远程发送时,它们似乎会以某种方式断裂。

客户端上的配置为:

@version: 3.13
@include "scl.conf"
## global options.
options { chain_hostnames(off);
flush_lines(0);
use_dns(no);
use_fqdn(no);
owner("root");
group("adm");
perm(0640);
stats_freq(0);
bad_hostname("^gconfd$");
};
source s_qa_nginx_access {
file("/var/log/nginx/access.log" follow-freq(1)
tags("qa_nginx_access")
flags(no-parse));
};
source s_qa_nginx_error {
file("/var/log/nginx/error.log" follow-freq(1)
tags("qa_nginx_error")
flags(no-parse));
};
destination d_syslog-ng_central { syslog("10.0.0.50" transport("tcp") port(514)); };
log { source(s_qa_nginx_access); destination(d_syslog-ng_central);};
log { source(s_qa_nginx_error); destination(d_syslog-ng_central);};

在远程syslog-ng服务器上,我有

@version: 3.13
@include "scl.conf"
options {
flush_lines(0);
use_dns(no);
use_fqdn(no);
owner("root");
group("adm");
perm(0640);
stats_freq(0);
bad_hostname("^gconfd$");
time-reap(30);
mark-freq(10);
keep-hostname(yes);
};
source s_network { syslog(transport(tcp) port(514)); };
filter f_qa_nginx_access { tags("qa_nginx_access"); }; 
filter f_qa_nginx_error { tags("qa_nginx_error"); }; 
destination d_qa_nginx_access {
file(
"/var/log/remote/qa_nginx_access.log"
owner("root")
group("adm")
perm(0640)
);
};
destination d_qa_nginx_error {
file(
"/var/log/remote/qa_nginx_error.log"
owner("root")
group("adm")
perm(0640)
);
};
log { source(s_network); filter(f_qa_nginx_access); destination(d_qa_nginx_access); };
log { source(s_network); filter(f_qa_nginx_error); destination(d_qa_nginx_error); };

如果我从日志语句中删除过滤器,所有日志消息都会同时进入这两个文件。但有了过滤器,远程服务器上的任何文件都无法访问。它是不是以某种方式没有将标签发送到远程?

您可能需要参考syslog ng管理指南。以下是指南中的一些重要注释。如果您需要远程发送标记,请使用SDATA.meta.tags,或者您也可以使用模板将其作为消息的一部分进行编写。

完整的管理指南可以在以下链接中找到:https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.22/administration-guide/58

  • 标记在本地可用,也就是说,如果您在客户端上向消息添加标记,则这些标记在服务器上将不可用。

  • 若要在消息中包含标记,请在模板中使用${tags}宏。或者,如果使用IETF系统日志消息格式,则可以在消息的.SDATA.meta部分中包含${TAGS}宏。请注意,${TAGS}宏仅在syslog ng OSE 3.1.1及更高版本中可用。

最新更新