从Filebeat和Logstash中的消息中获取多个字段

时间:2019-03-27 11:20:28

标签: elasticsearch logstash logstash-grok filebeat

我正在从Django应用程序将日志写入日志文件,然后从那里将这些日志传送到elasticsearch。因为我也想拆分字段,所以我在filebeat和elasticsearch之间使用logstash。

这是示例日志字段:

  

2019-03-19 13:39:06日志文件INFO save_data {'field1':无,'time':   '13:39:06','mobile':'9876543210','list_item':“ [{'item1':10,   'item2':'path / to / file'}]“,'response':'{some_complicated_json}}',   'field2':'一些数据','date':'19 -03-2019','field3':'其他   数据”}

我尝试编写GROK匹配模式,但是所有字段都进入message字段:

%{TIMESTAMP_ISO8601:temp_date}%{SPACE} %{WORD:logfile} %{LOGLEVEL:level} %{WORD:save_data} %{GREEDYDATA:message}  

如何编写GROK匹配模式,该模式可以在日志条目上方分解。

1 个答案:

答案 0 :(得分:0)

我不知道您如何用Grok做到这一点,但是我们的方法是使用弹性json processor中的ingest node pipeline。像这样:

{
    "my-log-pipeline": {
        "description": "My log pipeline",
        "processors": [{
            "json": {
                "field": "message",
                "target_field": "messageFields"
            }
        }]
    }
}

然后,您只需要告诉您的源(filebeat / logstash)在摄取时使用此管道即可。