【问题标题】:Get client IP for tcp input in Logstash在 Logstash 中获取 tcp 输入的客户端 IP
【发布时间】:2016-03-01 17:46:05
【问题描述】:

我在 Logstash 中配置了一个 tcp 服务器,以便多个服务器可以将日志数据推送到 Logstash。但是,我想将消息来自的服务器的 IP 地址添加为消息中的属性。

在Logstash中使用TCP服务器时,是否有变量或插件可以找到客户端IP?

【问题讨论】:

  • 什么是推数据?
  • @AlainCollins,rsyslog 正在推送数据。
  • 为什么不使用系统日志输入? elastic.co/guide/en/logstash/current/plugins-inputs-syslog.html
  • @7171u,因为我认为这不会解决问题。这是否使连接的客户端的 IP 地址可用?另外,我不确定这是否与 rsyslog 兼容(rsyslog 和 syslog 不是一回事)。
  • 我认为 'rsylog' 以主机名作为一个字段发送日志。我说的对吗?

标签: logstash logstash-configuration


【解决方案1】:

我认为您可以使用ruby 过滤器将主机名解析为IP

ruby {
        code => "
                require 'resolv'
                event['ip'] = Resolv.getaddress event['SYSLOGHOST']
               "
}

其中event['SYSLOGHOST'] 使用来自日志文件的grok 过滤器进行解析。新字段 ip 带有 ruby 过滤器。

【讨论】:

  • 主机名不是 FQDN。由于 rsyslog 与 logstash 不在同一台服务器上,因此无法将主机名解析为 IP 地址,因为主机名不一定在 logstash 服务器上是已知的。
  • 谢谢我还没有找到那个选项。在 Logstash 中使用这个 ruby​​ 代码而不是 DNS 插件有什么特别的原因吗?
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
  • 2016-10-07
  • 2015-06-06
  • 2020-11-10
相关资源
最近更新 更多