如何解决在Logstash中过滤JSON /非JSON条目
我有一个关于在Logstash中过滤条目的问题。我有两个不同的日志进入Logstash。一个日志只是带有时间戳和消息的std格式,而另一个则以JSON格式出现。
我使用if语句测试某个主机,并且该主机是否存在,然后使用JSON过滤器将其应用于消息...问题是,当它遇到非JSON stdout消息时,它可以不会解析它并引发异常。
有没有人知道如何测试以查看条目是否为JSON,请应用该过滤器;否则,请忽略它?
谢谢
if [agent][hostname] == "some host"
# if an entry is not in json format how to ignore?
{
json {
source => "message"
target => "gpfs"
}
}
解决方法
第一步,您可以尝试使用grok过滤器。
grok {
match => {
"message" => [
"{%{GREEDYDATA:json_message}}","%{GREEDYDATA:std_out}"
]
}
}
if [json_message]
{
mutate {
replace => { "json_message" => "{%{json_message}}"}
}
json {
source => "json_message"
target => "gpfs"
}
}
也许有比这更清洁的解决方案,但这可以完成工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。