前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fluentd插件:过滤插件概述

Fluentd插件:过滤插件概述

作者头像
Fluentd中文网
发布2020-12-22 10:45:03
2.9K0
发布2020-12-22 10:45:03
举报
文章被收录于专栏:Fluentd学习交流

过滤插件是用来修改日志记录的

filter字面意思为过滤器,实际上并非简单的把一些东西给“滤掉”。

在计算机领域,它有“清洗、修改”的意思。

比如,图形图像领域熟知的“滤镜”一词,实际上也是filter。大名鼎鼎的ffmpeg就是通过很多filter来实现音视频的编解码和转码的。

同样,Fluentd也使用filter插件来实现对日志记录的过滤和修改。


过滤插件通常用于以下场景:

  1. 通过grep匹配一个或多个日志字段,过滤掉不符合条件的日志
  2. 向日志中增加新的字段,以丰富日志内容
  3. 删除或掩盖某些字段,使得日志合乎规格

【使用方法】

在配置文件中通过使用<filter>指令来添加一个过滤器插件。

代码语言:javascript
复制
<filter foo.bar>
  @type grep
  regexp1 message cool
</filter>

这个配置片段用来对tag为foo.bar的日志进行过滤。

只有日志的message字段包含"cool",这条日志才会继续执行后续处理。

和用于输出插件的<match>指令一样,<filter>也是针对具有特定tag标签的日志的。

一旦日志事件被filter处理,该事件的处理过程会遵循配置文件中的顺序,自上而下地进行。

所以,如果有多个filter处理相同的tag,这些filter会依次被调用。

比如:

代码语言:javascript
复制
<filter foo.bar>
  @type grep
  regexp1 message cool
</filter>

<filter foo.bar>
  @type record_transformer
  <record>
    hostname "#{Socket.gethostname}"
  </record>
</filter>

这个配置片段中,只有message字段中包含"cool"的日志记录才会被增加hostname字段。


【过滤链路优化】

我们看到,多个filter可以形成一个过滤链路,依次执行不同的处理逻辑。

如果在处理链路中使用了多个filter,Fluentd会尝试优化对filter的调用,以提升性能。

这个优化的执行有一个前提条件,就是过滤链路中的所有插件必须使用filter方法,而不是filter_stream方法。

这个涉及到插件的开发细节,我们先不用管。

如果你在Fluentd的运行日志中发现以下信息,这表示优化被禁用了。

代码语言:javascript
复制
disable filter chain optimization because [Fluent::Plugin::XXXFilter] uses `#filter_stream` method

这是一个不太重要的信息,可以忽略。


【过滤插件列表】

这里列出几个常用的filter插件。

  • grep
  • record_transformer
  • filter_stdout

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Fluentd学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档