Logstash,如何根据输出添加字段?

时间:2016-11-10 17:48:27

标签: input filter output logstash

我有一个jdbc输入,我需要发送到两个不同的输出(http和Influxdb)。 我需要根据输出添加字段。 我希望我可以在输出阶段使用add_field,但它仅在输入和过滤阶段可用。 有人可以提出解决方案吗? Logstash 2.4

例如

input {
  jdbc {
    statement => "select col1, col2..."  
    ...
    }
}
filter {

}
output {

    http {
    #need to add/remove field here for http output
    }

    influxdb {
    #need to add/remove field here for influxdb output
    }
}

2 个答案:

答案 0 :(得分:1)

在过滤器链的末尾附近,添加clone类型为clones的过滤器。 clone过滤器会复制事件并在克隆上设置type。之后添加if / else块,添加您想要的字段。最后使用if块围绕您的输出。

这样的事情:

filter {
  clone { clones => [ "http", "influx"] }
  if ([type] == "http") {
     mutate {}
  } else if ([type] = "influx") {
     mutate {}
  } else {
     drop {}
  }
}
output {
  if ([type] == "http") {
    http {}
  }
  if ([type] == "influx") {
    influxdb {}
  }
}

答案 1 :(得分:0)

多个输出会将相同的事件发送到这些输出。您可以在输入{}或过滤器{}部分添加字段,但会将其发送到两者。

如果输出是有条件的,则可以在过滤器部分中使用相同的条件来添加唯一字段。