13. Fluentd输出插件:in_forward用法详解
in_forward插件通常用于从其他节点接收日志事件,这些节点包括其他Fluentd实例、fluent-cat命令行或者Fluentd客户端程序。这是目前效率最高的日志事件接收方法。
in_forward插件会在本地打开一个tcp监听socket,用于接收日志事件。同时,它也会开启一个udp端口用于接收和对端的心跳保活消息。
in_forward可接收json或MessagePack格式的数据,它会自动探测源数据是哪种格式。MessagePack是Fluentd内部使用的数据封装格式,因其效率高于json。
in_forward插件内置于Fluentd,无须安装。
1.示例配置
<source>
@type forward
port 24224
bind 0.0.0.0
</source>
2.参数说明
- 通用参数适用于in_forward插件
@type
插件类型,取值为forward- port(0.14.0(最低要求版本,下同))监听端口,默认为24224
- bind(0.14.0)绑定的ip地址,默认为0.0.0.0
- tag(1.5.0)设置事件的tag,默认使用源事件的tag
- add_tag_prefix(1.5.0)向源事件tag前添加前缀
<source>
@type forward
add_tag_prefix prod
</source>
如此配置,in_forward产生的事件tag为prod.INCOMING_TAG,比如prod.app.log。
- linger_timeout(0.14.0)设置socket的close等待时长。
- resolve_hostname(0.14.10)是否由ip解析主机名,默认false
- deny_keepalive(0.14.5)是否禁用长连接,默认false
- send_keepalive_packet(1.4.2)是否启动tcp保活,默认false
- chunk_size_limit(0.14.0)指定接收数据的最大chunk大小,超出最大值的chunk会被丢弃。默认无限制。
- chunk_size_warn_limit(0.14.0):指定接收数据的预警chunk大小,超出预警值会发送告警信息。默认不告警。
- skip_invalid_event(0.14.0)是否跳过非法事件。
- source_address_key(0.14.11)指定生成事件中来源ip的字段名,默认不添加来源ip字段。
- source_hostname_key(0.14.4)指定生成事件中来源主机名称的字段名,默认不添加主机名字段。
<transport>
配置项in_forward默认使用tcp传输数据。不加密。可开启ssl加密传输
<transport tls>
cert_path /path/to/fluentd.crt
# 这里还需要其他参数,请参见Fluentd官网说明
</transport>
- 其他事项
- Fluentd工作在多worker进程模式时,in_forward插件会共用监听端口。
<system>
workers 3
</system>
<source>
@type forward
port 24224
</source>
这里,24224端口接收的事件会被自动路由到3个worker进程中。
- in_forward主要是为了高效传输日志,并不像in_tail一样可以通过
<parse>
来配置对数据的解析方法。
如果想解析收到的数据,可在事件路由链中添加合适的过滤器。