安装方法:
gem install fluent-plugin-rewrite-tag-filter
详细文档:
https://github.com/fluent/fluent-plugin-rewrite-tag-filter ######具体用法 https://docs.fluentd.org/v1.0/articles/out_rewrite_tag_filter ######官方文档
tag是什么?在fluentd中事件流可以通过tag来控制,filter,parse,match,label都可以筛选tag来处理对应的event
rewrite-tag根据key的值来重写tag,支持正则表达式匹配,invert支持反向匹配,可以放在末尾来匹配所有不符合上面规则的event,如下所示
<match td.apache.access> @type rewrite_tag_filter capitalize_regex_backreference yes <rule> key path pattern /\.(gif|jpe?g|png|pdf|zip)$/ tag clear </rule> <rule> key status pattern /^200$/ tag clear invert true </rule> <rule> key domain pattern /^.+\.com$/ tag clear invert true </rule> <rule> key domain pattern /^maps\.example\.com$/ tag site.ExampleMaps </rule> <rule> key domain pattern /^news\.example\.com$/ tag site.ExampleNews </rule> <rule> key domain pattern /^(mail)\.(example)\.com$/ tag site.$2$1 </rule> <rule> key domain pattern /.+/ tag site.unmatched </rule> </match>
注意:一旦event(叫日志也行)进入 rewrite_tag_filter中过滤,任何没有被规则匹配的记录都将丢掉,实验下来是这种效果,所以可以在最后用invert来匹配所有其他的key值情况
1.0之后,官方比较推荐用label标签,而这个插件可以和relabel结合使用,同时因为在label中可以套filter标签和match标签,可以对event再过滤一次,如果你有这种需求,
<match pattern> @type relabel @label @foo </match> <label @foo> <filter pattern> ... </filter> <match pattern> ... </match> </label>
使用这个插件重写tag的时候一定要注意定义好tag的格式,因为fluentd的routing是从上到下的,意思是每次要路由的时候都从上到下扫描一次,个人感觉有点类似iptables,所以如果是如下情况,会造成一个回路,无法输出
<match app.**> @type rewrite_tag_filter <rule> key level pattern /(.+)/ tag app.$1 </rule> <match> <match app.**> @type forward # ... </match>
改成下面就好了
<match app.**> @type rewrite_tag_filter <rule> key level pattern /(.+)/ tag level.app.$1 </rule> <match> <match level.app.**> @type forward # ... </match>
原文地址:https://www.cnblogs.com/nieqibest/p/9926207.html
时间: 2024-10-31 01:05:16