我正在使用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:”吗?
答案 0 :(得分:0)
您需要拆分您的消息,其中一部分仅包含MESSAGE:
,您可以忽略,而另一部分包含json
,然后将其发送到json
过滤器。
尝试以下操作:
filter {
grok {
match => { "message" => "MESSAGE:%{SPACE}%{GREEDYDATA:json_message}"
}
json {
source => "json_message"
}
}
这将获取您的原始消息,并应用grok
过滤器以仅获取名为json_message
的字段中的json部分,然后json
过滤器将解析此字段并创建字段每个事件的url
和msg
。