Logstash kv过滤器

时间:2016-11-02 08:58:03

标签: logstash key-value logfile log-files

我有一个格式如下的文件:

10302\t<document>.....</document>   
12303\t<document>.....</document>   
10054\t<document>.....</document>   
10034\t<document>.....</document>   

正如您所看到的,有两个值由制表符char分隔。我需要

  • 将第一个标记(例如10302,12303 ...)标记为ID
  • 从第二个令牌(XML文档)中提取(然后索引)一些信息。换句话说,第二个标记将与xml过滤器一起用于提取某些信息

是否有可能使用kv过滤器分离这两个值?理想情况下,对于每一行,我应该用这样的文档结束:

id:10302       
msg:<document>....</document>

我可以使用grok过滤器,但我想避免使用任何正则表达式,因为字段检测非常简单,并且可以使用简单的键值逻辑来完成。但是,使用普通kv检测我结束以下内容:

"10302": <document>.....</document>   
"12303": <document>.....</document>   
"10054": <document>.....</document>   
"10034": <document>.....</document>  

这不是我想要的。

1 个答案:

答案 0 :(得分:0)

据我所知,不可能将kv用于你想要的工作,因为id没有可能的密钥(10302,10303,10304 ......)。没有可能的密钥,因为id之前没有任何内容。

这个grok配置可行,假设每个id +文档在同一行:

grok {
  match => { "message" => "^%{INT:ID}\t%{GREEDYDATA:msg}"}
}