【发布时间】: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