【问题标题】:Pretty-print JSON document in Logstash 5Logstash 5 中的漂亮打印 JSON 文档
【发布时间】:2017-08-13 02:00:29
【问题描述】:

我正在使用 Logstash 5 摄取包含一组 JSON 文档的文件,在每个事件中提取每个文档的一部分,然后将它们写入另一个文件。

我想漂亮地打印输出 JSON。我找到了这个线程:How do I pretty-print JSON for an email body in logstash?,看起来很理想,但是 Logstash 5 现在阻止您直接访问事件属性,将其替换为 event.get 和 event.set 方法(请参阅https://www.elastic.co/guide/en/logstash/current/event-api.html)。

我尝试将上面的转换如下:

ruby  {
    init => "require 'json'"
    code => "@pretty_body = JSON.pretty_generate(event.get('body'))
             event.set('body', @pretty_body)
            "
}

但得到

ERROR logstash.filters.ruby - Ruby exception occurred: only generation of JSON objects or arrays allowed

上面的正确 LS5 等效项是什么?

【问题讨论】:

    标签: json ruby logstash


    【解决方案1】:

    我认为您正在寻找以下内容:

    filter {
      ruby  {
        init => "require 'json'"
        code => "event.set('message', JSON.pretty_generate(JSON.parse(event.get('message'))))"
      }
    }
    

    这是我的测试和结果:

    input: {"make_me_pretty":"test"}
    {
        "@timestamp" => 2017-03-22T04:56:00.118Z,
          "@version" => "1",
           "message" => "{\n  \"make_me_pretty\": \"test\"\n}"
    }
    

    【讨论】:

      【解决方案2】:

      谢谢@fylie!我将其发布为另一个答案,因为我需要稍微调整一下我正在做的事情。

      我的问题是输入文档是包裹在另一个 JSON 文档中的 JSON 文档,因此内部文档是外部文档中的一个字段,其中包含元数据。所以“消息”包含的内容比我想写入文件的要多。

      我一直在尝试将文档缩减为我想要的内容,方法是使用 json 过滤器将内部 doc 字段解析到顶层,删除其他所有内容,然后漂亮地打印剩余的内容。所以我在 Ruby 过滤器中没有任何东西可以使用。

      为了解决这个问题,我保留了所有内容,不使用 json 过滤器解析内部 doc 字段,而是使用 ruby​​ 过滤器漂亮地打印它,并使用 { format => %{fieldname} 输出到该字段的文件} 文件输出插件中的选项,它可以按需要工作。

      【讨论】:

        【解决方案3】:

        问题说您想将 JSON 输出漂亮地打印到 另一个文件。只需将 File Output plugin 与 ruby​​debug 编解码器一起使用:

        output {
            file {
                 path => "./output/outputFile.json"
                 codec => rubydebug
            }
        }
        

        (我使用的是 logstash 7.15.2。)

        【讨论】:

          猜你喜欢
          • 2014-05-19
          • 2017-11-03
          • 2011-05-05
          • 2021-01-31
          • 2014-05-12
          • 1970-01-01
          相关资源
          最近更新 更多