【问题标题】:logstash mutate filter always stringifies hash and arraylogstash mutate 过滤器总是对哈希和数组进行字符串化
【发布时间】:2015-07-20 13:41:28
【问题描述】:

我有一个 json 日志文件,我将其作为此配置的输入

input {
   file { filename }
   codec { json_lines }
}

每一行都是一个深度嵌套的 JSON。

在过滤器中,

当我说

mutate { add_field => { "new_field_name" => "%{old_field_name}"}
  • 如果 old_field 是嵌套的散列/数组,则将其转换为字符串然后添加。无论如何我可以保留类型而不是对其进行字符串化吗?

【问题讨论】:

    标签: logstash logstash-configuration


    【解决方案1】:

    您可以考虑使用 ruby​​ 过滤器来复制数组:

    filter  {
        ruby { code => "event['newhash'] = event['myhash']" }
    }
    

    我认为没有更清洁的解决方案。

    除此之外,您真的将 json_lines 编解码器与文件输入一起使用吗?来自 logstash 文档:

    如果您的源输入是面向行的 JSON,请不要使用此编解码器,因为 例如,redis 或文件输入。而是使用 json 编解码器。

    【讨论】:

    • json_lines 是一个错误。 json 是我们使用的实际代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多