使用Logstash grok过滤Kafka JSON消息

时间:2017-11-10 17:08:20

标签: json apache-kafka logstash logstash-grok

我尝试仅为德国(DE)过滤kafka json消息。要做到这一点,我必须写一个grok表达式。谁能帮助我为这个json写一个grok模式?

{"table":"ORDERS","type":"I","payload":{"ID":"28112","COUNTRY":"DE","AMT":15.36}}
{"table":"ORDERS","type":"I","payload":{"ID":"28114","COUNTRY":"US","AMT":25.75}}

对不起,我是这些技术的新手。这是我的logstash.conf的样子:

input { 
  kafka {topics => [ "test" ] auto_offset_reset => "earliest" } 
} 

filter { 
  grok {
    match => { "message" => "?????????" }

  if [message] =~ "*COUNTRY*DE*" { 
    drop{}
  }
}      
}

output { file { path => "./test.txt"  } }

最后我只想提交德国订单。希望得到一些帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

您需要使用Logstash吗? 如果没有,我会建议一个简单的KSQL语句

CREATE STREAM GERMAN_ORDERS AS SELECT * FROM ORDERS WHERE COUNTRY='DE';

这会创建一个从第一个流式传输的Kafka主题,并且只包含您想要的数据。从Kafka主题中,如果您希望将其作为处理流程的一部分,可以使用Kafka Connect将其置于文件中。

阅读使用KSQL here的示例,并尝试here