我正在从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匹配模式,该模式可以在日志条目上方分解。
答案 0 :(得分:0)
我不知道您如何用Grok做到这一点,但是我们的方法是使用弹性json processor中的ingest node pipeline。像这样:
{
"my-log-pipeline": {
"description": "My log pipeline",
"processors": [{
"json": {
"field": "message",
"target_field": "messageFields"
}
}]
}
}
然后,您只需要告诉您的源(filebeat / logstash)在摄取时使用此管道即可。