LogStash - 本地 DNS 查找

LogStash - Local DNS lookup

我是 LogStash 的新手,我无法解决一些简单的问题。

我需要添加从本地 DNS 服务器获取的 DNS 信息来管理内部 IP 的锁定。

我的本地 DNS 服务器有一个 IP,例如 10.1.0.20

我需要阅读 source.ip 和 destination.ip 并使用 DNS 数据添加新信息。

官方文档说:

filter {
      dns {
        reverse => [ "source_host", "field_with_address" ]
        resolve => [ "field_with_fqdn" ]
        action => "replace"
      }
    }

但不清楚我必须将数据放在哪里。

我想要这样的输出:

"source" => 
{ 
  ...
  "address" : "192.168.1.29",
  "dns_info" : "Desktop123"
  ...
}
...

不幸的是,DNS 过滤器会尝试 就地 解析地址或名称,而不是添加字段...因此您需要跳过这些步骤。假设您有一个带有 source.ip 字段的文档...

filter {

  mutate {
    copy => { "[source][ip]" => "[source][fqdn]" }
  }

  dns {
    reverse => "[source][fqdn]"
    action => "replace"
    add_field => { "[@metadata][dns_source]" => "success" }
  }

  if ![@metadata][dns_source] {
    mutate { remove_field => "[source][fqdn]" }
  }

}

这很丑陋,但我不知道有什么更好的方法,因为 DNS 过滤器插件没有 target 设置。

我认为这回答了你问题的关键;官方文档中详细介绍了其他内容,例如指定名称服务器或设置缓存时间。