首页 > 解决方案 > 在 Logstash 或 filebeat 中解析日志并将其转换为 JSON 以拉取 Elasticsearch

问题描述

我正在使用 filbeat 将日志发送到 logstash,然后将它们存储在 elasticsearch 中。

我的日志文件包含如下字符串:

MESSAGE: { "url": "http://IP:PORT/index.html" , "msg": "aaa" }
MESSAGE: { "url": "http://IP:PORT/index_2.html" , "msg": "bbb" }

我想将 JSON 对象存储在 Elasticsearch 中。我正在努力使用一些正则表达式来解析数据,然后将它们转换为 JSON 以发送到 Elasticsearch 的索引。有什么帮助吗?我应该把逻辑去掉“MESSAGE:”吗?

标签: logstashelastic-stackfilebeat

解决方案


您需要拆分您的消息,一部分用 just MESSAGE:,您可以忽略,另一部分用json,然后您将其发送到json过滤器。

尝试以下操作:

filter {
    grok {
        match => { "message" => "MESSAGE:%{SPACE}%{GREEDYDATA:json_message}"
    }
    json {
        source => "json_message"
    } 
}

这将获取您的原始消息并应用grok过滤器以仅在名为 的字段中获取 json 部分json_message,然后json过滤器将解析此字段urlmsg为每个事件创建字段和。


推荐阅读