在那件事上,我是新手。日志文件有不同的进程记录数据到它。每个进程以不同的模式写入日志。我想解析这个日志文件。此日志文件中的每个日志以下面的grok模式启动,
%{SYSLOGTIMESTAMP:时间戳} %{SYSLOGHOST:logsource} %{SYSLOGPROG}:+ %{ SRCFILE :srcfile}:%{NUMBER:linenumber},其中SRCFILE定义为-Za-Z0-9._-+
请让我知道如何解析这个文件,以便解析该文件中每个进程日志的不同类型的日志。
发布于 2017-01-27 10:19:57
由于您试图传递日志文件,因此您可能必须使用文件输入插件从给定路径检索文件或x号文件。所以一个基本的input看起来可能是这样的:
input {
file {
path => "/your/path/*"
exclude => "*.gz"
start_position => "beginning"
ignore_older => 0
sincedb_path => "/dev/null"
}
}以上只是一个供你复制的样本。因此,一旦您获得文件并开始逐行处理它们,您可以使用格罗克过滤器来匹配日志文件中的关键字。样例过滤器可能如下所示:
grok {
patterns_dir => ["/pathto/patterns"]
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:logsource} %{SYSLOGPROG}: + %{SRCFILE:srcfile}:%{NUMBER:linenumber} where SRCFILE is defined as [a-zA-Z0-9._-]+" }
}如果在单个文件或中打印了不同类型的日志,则可能需要使用不同的筛选器,您可以在同一行中使用,逗号分隔的值。类似于:
grok {
match => { "message" => [
"TYPE1,%{WORD:a1},%{WORD:a2},%{WORD:a3},%{POSINT:a4}",
"TYPE2,%{WORD:b1},%{WORD:b2},%{WORD:b3},%{WORD:b4}",
"TYPE3,%{POSINT:c1},%{WORD:c2},%{POSINT:c3},%{WORD:c4}" ]
}
}然后,也许您可以使用message,因为您已经得到了它所需要的所有值。希望能帮上忙!
https://stackoverflow.com/questions/41881505
复制相似问题