无法使用 Fluentd @tcp <source> 参数 'source_address_key' 捕获系统日志客户端 IP 地址,警告 <source> 未使用

Unable to capture syslog client IP addresses using Fluentd @tcp <source> parameter 'source_address_key' with warning <source> is not used

需要有关 fluentd 配置的帮助,以允许在记录中捕获系统日志客户端 IP 地址。

我正在使用 docker 容器来启动一个 fluentd 实例来聚合来自远程系统日志客户端的日志,以便发送到 Elasticsearch 进行索引。

设法让设置与下面的@type syslog 一起工作。

<source>
  @type syslog
  tag syslog
  protocol_type tcp
  port 5140
  frame_type octet_count
  <parse>
    @type syslog
    message_format rfc5424
    with_priority true
    rfc5424_time_format %Y-%m-%dT%H:%M:%S+%z
  </parse>
</source>

但是由于要聚合的syslog客户端较多,打算在记录中加入syslog客户端的IP地址来区分日志。

因此尝试使用@type tcp 和文档中列出的 source_address_key 参数来捕获传入的客户端 IP 地址。

"The field name for the client's IP address. If you set this option, Fluentd automatically adds the remote address to each data record."

<source>
  @type tcp
  tag tcp.events
  port 5140
  source_address_key client_addr
   <parse>
     @type regexp
     expression /^[\w :]+\<(?<pri>[0-9]{1,3})\>[1-9]\d{0,2} (?<time>[^ ]+) (?<host>[^ ]+)[- ]+(?<message>[\[\w\:\]\- \;\=\'\,\(\.\)\#]+)$/
   </parse>
</source>

终端输出显示以下警告信息:

[warn]: parameter 'source_address_key' in <source>
  @type tcp
  tag "tcp.events"
  port 5140
  source_address_key client_addr
  <parse>
    @type "regexp"
    expression /^[\w :]+\<(?<pri>[0-9]{1,3})\>[1-9]\d{0,2} (?<time>[^ ]+) (?<host>[^ ]+)[- ]+(?<message>[\[\w\:\]\- \;\=\'\,\(\.\)\#]+)$/
  </parse>
</source> is not used.

并且从输出中,仅设法捕获系统日志消息,但没有将 IP 地址添加到记录中。

发现问题。似乎 source_address_key 不适用于 @type tcp.

发现它只在@type syslog中有效

如果有人遇到同样的问题,请返回此处。

    # get logs from syslog
<source>
  @type syslog
  tag syslog
  protocol_type tcp
  source_address_key client_addr
  port 5140
  frame_type octet_count
  <parse>
    @type syslog
    message_format rfc5424
    with_priority true
    rfc5424_time_format %Y-%m-%dT%H:%M:%S+%z
  </parse>
</source>