Fluentd v1.19.0 现已发布,包含许多新功能和修复,重点是降低运维和运行成本,提升整体稳定性。
关于依赖冲突说明:
本次版本对依赖做了部分限制,执行如 bundle update 时可能出现冲突。遇到这种情况,请手动调整依赖或重新生成 Gemfile.lock,例如:
$ rm Gemfile.lock $ bundle
更多详情请参考 fluentd#5048。
主要新功能和改进:
添加重试超限时转移 chunk 文件功能
本次版本为 buf_file 和 buf_file_single 插件新增了缓冲区转移功能,简化故障恢复。之前版本中,当输出插件因网络问题无法发送数据,且重试次数超限且未配置二级输出时,数据会被丢弃。
现在,重试超限时缓冲文件会被自动转移。问题解决后,可将转移的文件恢复到原缓冲目录,重启 Fluentd 继续发送数据。配合零停机重启功能,甚至可以无中断重启输入插件(如 in_udp)。
转移文件存放路径为:
${root_dir}/buffer/${plugin_id}/
注意:启用二级输出或 retry_forever 时此功能默认关闭。要启用缓冲转移,请移除这些设置。
改进缓冲区损坏检测
缓冲文件可能因系统崩溃或断电导致损坏。之前版本启动时会因损坏文件报错,需手动定位删除。
本版本改进了损坏检测,发现损坏文件后自动移至备份目录,启动错误将被抑制。
增强指标功能
提升了 Fluentd 的可观测性:
-
输入插件指标默认开启
之前需显式设置 enable_input_metrics=true。现在默认开启,关闭请设为 false。 -
新增 in_tail 指标:tracked_file_count(当前跟踪的文件数)
-
新增输出插件指标:
-
write_secondary_count:写入二级输出的累计记录数
-
drop_oldest_chunk_count:overflow_action 使用 drop_oldest_chunk 时丢弃的 chunk 数
-
性能提升:改用 json gem 替代 yajl-ruby
之前使用 yajl-ruby 处理 JSON(如写缓冲和 parser_json 解析)以提升性能。
现在 Ruby 标准 json 库性能大幅提升,改用 json gem 作为默认 JSON 处理器。
支持 Zstandard (zstd) 压缩
新增对 Zstandard (zstd) 压缩格式的支持,比 gzip 压缩率高且处理速度更快。
以下插件支持 compress zstd:
- buffer
- out_file
- out_forward
注意:out_forward 使用 zstd 时,目标服务器需支持;Fluent Bit 或早于 v1.19.0 的 Fluentd 不支持此功能。
支持 TLS 1.3
out_http 插件支持 TLS 1.3,增强安全性。默认使用 TLS 1.2,启用方法:
<match tag> @type http ... tls_version TLSv1_3 ... </match>
其他实用改进
-
in_forward 插件:
skip_invalid_event 默认开启,跳过损坏记录。 -
out_stdout 插件:
新增 use_logger 参数,设置为 false 时强制输出到 STDOUT,忽略 Fluentd 的日志配置,适合 Kubernetes 等容器环境。 -
out_file 插件:
新增 symlink_path_use_relative,支持 symlink_path 使用相对路径。 -
系统配置:
新增 forced_stacktrace_level,用于控制堆栈跟踪的日志级别。
还没有评论,来说两句吧...