解析Logstash或filebeat中的日志并将其转换为JSON以提取Elasticsearch

时间:2019-03-21 22:08:12

标签: logstash elastic-stack filebeat

我正在使用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:”吗?

1 个答案:

答案 0 :(得分:0)

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

尝试以下操作:

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

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