2015-07-20 106 views
0

我使用Logstash处理我的日志并将它们存储到Elastic Search。 我使用http作为我的logstash的输入插件。使用HTTP POST请求作为输入的Logstash的Grok模式

我的HTTP POST请求是:

$http.post(url, {type: 'reference error', message: 'y is not defined'}); 

我想存储的类型和消息密钥,以弹性搜索不同的领域。

目前所有的POST数据被存储为像单个字段:

“消息”: “{\” 类型\ “:\” 的ReferenceError \ “\ ”消息\“:\” y不 定义\“}”

,我认为这可以使用神交过滤器来完成,但我一直没能找到一种方法来做到这一点。

任何帮助,高度赞赏。 谢谢。

回答

3

如果您使用json codec,则应自动将信息拆分为字段。

+0

谢谢@Alain,我使用JSON编解码器,它像一个魅力跑。 – JSNinja

2

编辑: 正如Alain所说,它是使用json编解码器的最佳方式,它可以直接在http输入插件中设置。如果由于某种原因无法实现,您可以使用grok过滤器。

如果我理解你正确的输入事件是这样的:

{"type": "reference error", "message": "y is not defined"} 

然后相应神交模式是这样的:

{"type": %{QUOTEDSTRING:http_type}, "message": %{QUOTEDSTRING:http_message}} 

在你logstash配置:

grok { 
    match => [ "message", "{\"type\": %{QUOTEDSTRING:http_type}, \"message\": %{QUOTEDSTRING:http_message}}" ] 
} 

然后结果将h两个字段http_type和​​。