我使用filbeat将日志发送到logstash,然后将它们存储在elasticsearch中。
我的日志文件包含以下字符串:
MESSAGE: { "url": "http://IP:PORT/index.html" , "msg": "aaa" }
MESSAGE: { "url": "http://IP:PORT/index_2.html" , "msg": "bbb" }
我想在Elasticsearch中存储JSON对象。我正在努力使用一些正则表达式来解析数据,然后在JSON中转换它们以发送到Elasticsearch的索引。有帮助吗?我应该把逻辑去掉掉“MESSAGE:”吗?
你需要分割你的信息,一部分只有MESSAGE:
,你可以忽略,另一部分用json
,你将发送到json
过滤器。
请尝试以下方法:
filter {
grok {
match => { "message" => "MESSAGE:%{SPACE}%{GREEDYDATA:json_message}"
}
json {
source => "json_message"
}
}
这将获得您的原始消息并应用grok
过滤器仅在名为json_message
的字段中获取json部分,然后json
过滤器将解析此字段并为每个事件创建字段url
和msg
。