syslog-ng
我正在使用+为我们的服务器设置中央日志记录patterndb
,但是日志记录服务器从客户端接收的日志前面带有日期、主机和其他数据。这当然会破坏所有模式,patterndb
因此没有任何匹配项。
有没有办法在尝试对其进行分类之前对源日志文件进行一些预处理,或者通过其他方式来克服这个问题?
干杯。
相关客户配置:
source s_src {
system();
internal();
};
destination d_central_logging {
syslog(192.168.1.1 transport("tcp") port("12345"));
};
log {
source(s_src);
destination(d_central_logging);
};
相关服务器配置:
parser p_patterndb {
db-parser(file("/var/lib/syslog-ng/patterndb.xml"));
};
source s_network {
tcp(port(12345) flags(syslog-protocol));
};
filter f_class_unknown {
match("unknown"
value(".classifier.class")
type("string")
);
};
destination d_all {
file("/tmp/all");
};
destination d_unknown {
file("/tmp/unknown");
};
log {
source(s_network);
parser(p_patterndb);
log {
filter(f_class_unknown);
destination(d_unknown);
};
log {
destination(d_all);
};
};
编辑:
原始日志行:
10.0.2.2 - - [23/Dec/2014:13:42:49 +0000] "GET /assets/favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
修改后的日志行:
Dec 23 13:59:08 192.168.33.44 264 <13>1 2014-12-23T13:42:50+00:00 devhost 10.0.2.2 - - [meta sequenceId="8"] - - [23/Dec/2014:13:42:49 +0000] "GET /assets/favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
Paul 是对的,客户端目标和服务器源中使用的协议不匹配。因此,服务器无法将传入消息识别为格式正确的 syslog 消息,并预先添加主机、日期和其他信息。
问候,
罗伯特
好的,我找到了没有进行匹配的真正原因。在确认repo
update-patterndb
中存在正确的 Apache 模式后,我正在使用该命令。github.com/balabit/syslog-ng-patterndb
但是,该update-patterndb
命令不包括.xml
文件,仅包括.pdb
文件。我在更改时看到了编译的模式文件,/var/lib/syslog-ng/patterndb.xml
但从未检查过它。正如手册页update-patterndb
所说,它只是pdbtool merge
命令的一个薄包装。这对我有用:该目录
/etc/syslog-ng/patterndb.d/syslog-ng-patterndb/
是我克隆 repo 的地方。pdbtool test
我可以通过检查编译的模式文件、运行命令并查看下游接收数据的结构化结果来确认 Apache 模式现在正在按预期提取内容。