【问题标题】:Filtering JSON/non-JSON entries in Logstash在 Logstash 中过滤 JSON/非 JSON 条目
【发布时间】:2020-09-23 16:30:04
【问题描述】:

我有一个关于在 Logstash 中过滤条目的问题。我有两个不同的日志进入 Logstash。一个日志只是带有时间戳和消息的 std 格式,而另一个则以 JSON 格式出现。

我使用 if 语句来测试某个主机,如果该主机存在,那么我使用 JSON 过滤器将其应用于消息...问题是当它遇到非 JSON 标准输出消息时,它可以'不解析它并抛出异常。

有谁知道如何测试一个条目是否是 JSON 进入应用过滤器,如果不是,则忽略它?

谢谢

  if [agent][hostname] == "some host"
  # if an entry is not in json format how to ignore?
  {
    json {
      source => "message"
      target => "gpfs"
     }
  }

【问题讨论】:

    标签: json elasticsearch logstash


    【解决方案1】:

    您可以先尝试使用 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"
         }
    }
    
    

    可能有比这更清洁的解决方案,但它会完成这项工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      相关资源
      最近更新 更多