如何通过Logstash Grok配置提取另一个字段内部包含的字段

时间:2018-10-10 20:39:48

标签: logstash kibana elastic-stack logstash-grok

因此,假设我有以下日志消息,试图通过grok过滤器捕获该消息:

“ 2018-10-02 18:00:00信息THIS_IS_A_TEST_MESSAGE”

我想将“ THIS_IS_A_TEST_MESSAGE”提取为一个字段,但是除此之外,我想仅将单词TEST捕获为另一个字段。我需要它们都创建一些Kibana可视化,但是出于聚合目的,它们需要分开。

我当前的骗子看起来像这样:

match => { "message" => "%{TIME:time} %{LOGLEVEL:logLevel} %{WORD:payload}" }

因此,我创建了三个字段:time,logLevel和payload;但是,我需要它来捕获4个字段,但是第4个字段位于有效负载字段内。我该如何调整我的骗子来做到这一点?

我对ELK堆栈非常陌生,因此仍然习惯于编写这些配置。

1 个答案:

答案 0 :(得分:0)

payload字段上使用另一个grok过滤器。

match => { "payload" => "[^_]*_[^_]*_[^_]*_%{DATA:data}_" }

我不知道您要提取的数据是什么。我只是在第三个_和第四个data: TEST之间获取了数据。

有了您提供的数据,我得到了:{{1}}