【问题标题】:Getting multiple fields from message in filebeat and logstash从filebeat和logstash中的消息中获取多个字段
【发布时间】:2019-03-27 11:20:28
【问题描述】:

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

这里是示例日志字段:

2019-03-19 13:39:06 logfile INFO save_data {'field1': None, 'time': '13:39:06', '移动': '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 匹配模式。

【问题讨论】:

  • 日志中的json有固定的结构吗?
  • @NishantSaini 不,json 中可能会出现不同的字段。
  • 这可能会有所帮助:stackoverflow.com/questions/33937936/…
  • @NishantSaini 非常感谢,这很有帮助。

标签: elasticsearch logstash logstash-grok filebeat


【解决方案1】:

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

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

然后你只需要告诉你的源(filebeat/logstash)在摄取时使用这个管道。

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 2017-03-20
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    相关资源
    最近更新 更多