作者:Masahiro Nakagawa
嗨各位用户!
我们已经发布了v1.8.0。更新日志在这里。这个版本包含了新的服务发现插件和许多增强功能。
https://github.com/fluent/fluentd/blob/master/CHANGELOG.md
添加服务发现插件
服务发现插件以可扩展的方式管理目标列表。下面是out_forward插件的例子:
# out_forward now uses service discovery plugin
<match test>
@type forward
<service_discovery>
@type file
path /path/to/sd_forward.yaml
</service_discovery>
# other parameters...
</match>
# content of sd_forward.yaml
- 'host': 127.0.0.1
'port': 24224
'weight': 1
'name': server1
- 'host': 127.0.0.1
'port': 24225
'weight': 1
'name': server2
使用这个配置,out_forward使用file服务发现插件从sd_forward.yaml文件读取服务器列表。
此外,file服务发现监视path文件。如果sd_forward.yaml文件更新了,out_forward的服务器列表也会更新。不需要为out_forward的服务器列表重新启动fluentd。
支持的内置插件现在是static和file。我们计划支持更多的服务发现插件,例如DNS SRV记录。
https://docs.fluentd.org/service_discovery/static
https://docs.fluentd.org/service_discovery/file
改进了配置参数处理
当前配置解析器存在以下几个问题:
1. 非字符串类型的自动转换
这是容易出错的。例如,如果您设置int_param “foo”,int_param将变为0。这种情况应该引起配置错误。
2. 无法使用默认值
这在使用环境变量时非常重要。我们不能在param "#{ENV['FOO_PARAM']}"的情况下使用nil或plugin的默认值。
对于问题1,我们为strict模式引入了--strict-config-value选项。使用此选项,fluentd将为无效参数引发配置错误。您还可以使用<system>节来代替--strict-config-value。
<system>
strict_config_value true
</system>
Fluentd v2将使用严格(strict)模式。
对于问题2,我们引进了ruby嵌入式参数的帮助程序。你可以如下使用默认值:
param "#{ENV['FOO_PARAM'] || use_default}"
如果FOO_PARAM环境变量不存在,则使用plugin的默认值。这在kubernetes环境中非常有用。
formatter_csv:支持嵌套字段
可以在fields参数中使用记录访问器语法。
<format>
@type csv
fields code,message,$.nest.key
</format>
弃用顶级匹配以捕获fluentd日志
Fluentd现在提供了两种捕获Fluentd日志的方法。
前者是v1风格。后者用于v0.12兼容性。现在,Fluentd对后一种情况显示弃用信息。
Fluentd v2将删除给fluentd日志的顶级<match fluent.**>特性。
主要错误修复
享受日志!