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"
答案1
Paul 是对的,客户端目标和服务器源中使用的协议不匹配。因此,服务器无法将传入的消息识别为格式正确的系统日志消息,并在前面添加主机、日期和其他信息。
问候,
罗伯特
答案2
好的,我找到了无法匹配的真正原因。我update-patterndb
在确认github.com/balabit/syslog-ng-patterndb
存储库中存在正确的 Apache 模式后使用该命令。但是,该update-patterndb
命令不包括.xml
文件,只包括.pdb
文件。我看到编译的模式文件发生了/var/lib/syslog-ng/patterndb.xml
变化,但从未检查过它。正如手册页所说update-patterndb
,它只是pdbtool merge
命令的一个薄包装。这对我来说有效:
pdbtool merge -r --glob *.xml -D /etc/syslog-ng/patterndb.d/syslog-ng-patterndb/
该目录是我克隆存储库的位置。通过检查编译的模式文件、运行命令并查看接收下游数据的结构化结果,/etc/syslog-ng/patterndb.d/syslog-ng-patterndb/
我可以确认 Apache 模式现在正在按预期提取内容。pdbtool test