【问题标题】:Add data to dynamic nested hash in logstash将数据添加到 logstash 中的动态嵌套哈希
【发布时间】:2015-08-07 00:20:03
【问题描述】:

我想将一个值放入嵌套哈希的一部分,但根据上游过滤器命名该部分。这是为了重构和减少整体代码大小,因为目前 20 多种传入事件类型中的每一种都有自己的部分,像这样,logstash 文件中有 18 行(但目前 %{detail_part} 位是硬编码的)。

# Working code
filter {
    if [result] == 0 {
        # Success
        mutate {
            add_field => {
                "[Thing][ThingDetail][OtherThing][MoreDetail]" => "true"
            }
        }
    }
    else {
        # Failed
        mutate {
            add_field => {
                "[Thing][ThingDetail][OtherThing][MoreDetail]" => "false"
            }
         }
    }
}

Above 被硬编码为“OtherThing”。下面有一个变量,但不起作用。

# Non-Working code
filter {
    if [result] == 0 {
        # Success
        mutate {
            add_field => {
                "[Thing][ThingDetail][%{detail_part}][MoreDetail]" => "true"
            }
        }
    }
    else {
        # Failed
        mutate {
            add_field => {
                "[Thing][ThingDetail][%{detail_part}][MoreDetail]" => "false"
            }
         }
    }
}

在上面(非工作代码)中,detail_part 在上游过滤器中设置为字符串值,如“OtherThing”。这当前编译并运行,但没有从中输出任何 XML,所以我认为这些语句的结果是没有将任何内容设置到哈希中。

我知道这可以使用嵌入式 Ruby 代码来完成,但我想要一种尽可能简单的方法。这个过程的输出是 XML,所以我只能使用这种嵌套散列。

Logstash 可以做到这一点吗?

【问题讨论】:

    标签: logstash logstash-configuration logstash-file


    【解决方案1】:

    事实证明,是的,Logstash 支持这一点,只是语法错误。所以这里是修复:

    filter {
        # This field could be set conditionally in an if statement ...
        mutate { add_field => { "[detail_part]" => "Result" } }
    
        if [result] == 0 {
            # Success
            mutate {
                add_field => {
                    "[Thing][ThingDetail][%{[detail_part]}][MoreDetail]" => "true"
                }
            }
        }
        else {
            # Failed
            mutate {
                add_field => {
                    "[Thing][ThingDetail][%{[detail_part]}][MoreDetail]" => "false"
                }
            }
        }
    }
    

    我只是找不到任何不平凡的例子来做这样的事情。

    【讨论】:

      猜你喜欢
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2012-08-07
      • 1970-01-01
      • 2014-02-22
      • 2021-04-04
      • 2013-12-17
      相关资源
      最近更新 更多