logstash 如何在没有类型字段的情况下在单个管道中切换多个jdbc输入?

pgky5nke  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(141)

我知道我可以这样做:

input {
  jdbc {
    type => "a"
  }
  jdbc {
    type => "b"
  }
}
output {
  if [type] == "a" {
    ...
  }
  if [type] == "b" {
    ...
  }
}

但是正如jdbc输入插件的官方文档所说:
如果您尝试在已经有类型的事件上设定类型(例如,当您将事件从传送者传送至索引器时),则新输入将不会覆写现有的类型。在传送者设定的类型会在其生命周期内与该事件一起保留,即使传送至另一个Logstash服务器也是如此。
就我自己的尝试而言,这是正确的。如果数据库中已经有type字段,这里的type不起作用,这样我就无法使用type来区分filter和output中的数据,那么有没有其他方法来分别完成多个jdbc输入和输出的任务呢?我必须在不同的管道中使它们彼此连接吗?
我也尝试过使用tags。不幸的是,我的数据库中也有tags字段!!当我将input.jdbc.tags => ["TAG_NAME"]写入config时,“TAG_NAME”字符串元素被附加到原始标签数组中。所以它也不能使用。

wyyhbhjk

wyyhbhjk1#

您可以尝试在不同的jdbc插件配置中创建具有不同值的新字段吗

input {
  jdbc {
    add_field => { "jdbc_plugin" => "a" }
  }
  jdbc {
    add_field => { "jdbc_plugin" => "b" }
  }
}
output {
  if [jdbc_plugin] == "a" {
    ...
  }
  else if [jdbc_plugin] == "b" {
    ...
  }
}

相关问题