使用Fluentd进行简单流处理

在某些日志采集场景中,我们需要对数据流进行一些转换。比如,我们可能需要从日志记录中提取某些字段以进行错误告警,或向日志记录中插入新的字段用以后续的分析。

本文简单介绍一下使用Fluentd进行数据操作的技术细节。

  1. 根据日志字段取值来过滤事件
    谈到过滤,我们通常会想到正则表达式,在linux中通常使用grep来进行文本查找和过滤。Fluentd内置了filter_grep过滤插件,可对数据流进行正则过滤。
    假设我们正在使用一个web服务,比如Apache,我们需要对其访问日志进行监控。由输入插件产生的事件类似如下结构:
    { "host": "192.168.1.1", "method": "GET", "path": "/index.html", "code": 200, "size": 2344, "referer": null}

    这其中的code字段表示用户请求状态,我们可能对状态为2xx的请求不太关心,这样就可以将这类事件过滤掉,专门处理用户请求可能发生的异常情况。

    我们可以通过在Fluentd中增加如下<filter>配置来实现事件过滤。

    <filter apache.**> @type grep <exclude> key code pattern ^2\d\d$ </exclude></filter>

    使用grep过滤插件,通过key指定code字段为过滤字段,通过pattern匹配code值为2xx的事件,将这些事件排除(exclude)掉。

    filter_grep还可以对多个字段进行过滤。比如,保留状态码为5xx的事件,但过滤掉url中以/test/开头的请求。如下所示:

    <filter apache.**> @type grep <regexp> key code pattern ^5\d\d$ </regexp> <exclude> key path pattern ^/test/ </exclude></filter>
  2. 向事件中插入定制字段
    我们可以在某个处理阶段向日志记录中插入一些字段,供后续使用。这可以通过Fluentd内置的filter_record_transformer过滤器插件来实现。
    假设我们是以集群的方式来部署web服务的,我们可能需要标记用户请求是由哪台服务器来处理的。
    在Fluentd中进行如下配置即可实现此类需求:
    <filter apache.**> @type record_transformer <record> server "${hostname}" </record></filter>

    这里,record_transformer插件向事件record中插入了一个server字段,其值为web服务器的主机名。新的日志record就更新为如下格式:

    { "host": "192.168.1.1", "method": "GET", "path": "/index.html", "code": 200, "size": 2344, "referer": null, "server": "app1"}

    filter_record_transformer除了可以直接插入预定义的一些变量,如${hostname},还可以插入其他变量或者使用ruby表达式来计算字段值。具体可参考此插件的使用说明,我们也会在后续的插件系列中进行介绍。

(0)

相关推荐

  • linux tail 过滤日志文件中的关键字

    linux tail 过滤日志文件中的关键字

  • Fluentd 过滤插件:grep 用法详解

    " filter_grep 是一个常用的过滤日志内容的插件." 熟悉或者使用过 Linux 系统的小伙伴应该知道,Linux 中有三个处理文本内容的利器:grep.awk 和 se ...

  • Fluentd 命令行工具 fluent-cat 介绍

    "一个用于测试插件的命令行工具" fluent-cat 是 Fluentd 提供的一个命令行工具,特别适合于对插件功能的验证性测试. 它主要和 in_forward / in_un ...

  • Fluentd v1.12.0 版本发布了

    2021年1月5日,Fluentd v1.12.0 版本发布. in_tail: path参数中使用 * 通配符时,支持监控轮转的日志文件 Fluentd v1.12.0 解决了使用 * 通配符无法监 ...

  • 在 Windows 系统上安装和使用 Fluentd

    " 简单介绍一下在 Windows 系统上安装和使用 Fluentd 的方法" 我们在最初的文章中介绍了在 Linux 上安装 Fluentd 的方法,有时候为了做些简单测试,并不 ...

  • Fluentd学习使用路线图

    " 刚开始使用Fluentd?可以参考这一篇文章." 作为CNCF的成员项目之一,Fluentd 无疑是一个简单而又强大的日志处理系统. 简单是因为它有着明确的目标和清晰的架构:为 ...

  • Fluentd输出插件:out_elasticsearch用法详解

    " 把日志输出到elasticsearch做业务分析,这大概是最普遍的日志采集用途了" out_elasticsearch 输出插件用于将日志记录写入elasticsearch. ...

  • Fluentd插件:过滤插件概述

    " 过滤插件是用来修改日志记录的" filter字面意思为过滤器,实际上并非简单的把一些东西给"滤掉". 在计算机领域,它有"清洗.修改"的 ...

  • Fluentd插件:解析插件概述

    " 解析插件用于适配各种源数据" 我们知道,Fluentd是一个通用的日志采集框架,一个很重要的原因就在于它可以处理各种各样的源数据. 处理数据的第一步就是要识别这些数据的格式. ...

  • Fluentd Bit 1.6文档

    ‍ Fluent Bit 是一个开源的 日志处理器和转发器. 它支持从不同的数据源采集日志和系统指标, 并使用过滤器修改这些数据,然后将其发送到多个目的地. 相比Fluentd,Fluentd Bit ...