千家信息网

Fluentd事件的生命周期有哪些

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,本篇文章给大家分享的是有关Fluentd事件的生命周期有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是事件?事件(Event)
千家信息网最后更新 2024年11月19日Fluentd事件的生命周期有哪些

本篇文章给大家分享的是有关Fluentd事件的生命周期有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

什么是事件?

事件(Event)是Fluentd内部处理流程使用的数据结构,日志记录一旦进入Fluentd便被封装成一个event。Event由三部分组成:tag、time、record。

tag标识事件的来源,或者说类型,用于内部消息路由,即后续交由哪个插件处理;

time是事件的发生时间;

record为日志的实际内容,这是一个JSON对象。

Input插件负责将源数据封装为event,比如in_tail插件从文本中生成event。对于下边这行文本:

192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777

将会产生下边的event对象:

tag: apache.access #根据插件的tag参数来设置

time: 1362020400 # 28/Feb/2013:12:00:00 +0900

record: {"user":"-","method":"GET","code":200,"size":777,"host":"192.168.0.1","path":"/"} #根据in_tail插件中的parse项来决定如何解析单行日志记录,并生成相应的JSON对象

下边我们通过一个具体的配置来讲解事件的处理过程。

本例使用一个很基础的配置片段来描述各插件是如何关联到一起的,它包括了如何定义输入源(或者说监听器),以及如何设置通用的匹配规则将event路由到输出端。

我们使用in_http和out_stdout这两个插件来描述event的循环过程。






  @type http  port 8888  bind 0.0.0.0


上边的配置使用in_http插件定义了一个HTTP服务器,监听端口为8888。然后我们再定义一个匹配(Match)规则,event路由引擎会根据这个规则将http请求派发到输出端。这里的输出端是stdout,仅仅将http请求打印到屏幕上。




  @type stdout 

Match的作用是设置一个匹配规则test.cycle,对于每个进入Fluentd的event,如果其tag值和test.cycle相等(或者说匹配,因为match可以使用通配符。这里的tag是由in_http插件生成的。),那么这个event就会进入此match定义的output插件,本例中的output插件就是out_stdout。

至此,我们定义了三个基本项:Input、Match和Output,虽然仅仅使用两个配置段。这就是一个可以使用的采集配置了,可以通过以下命令进行测试:


curl -i -X POST -d 'json={"action":"login","user":2}' http://localhost:8888/test.cycle

    你会看到如下输出:





    HTTP/1.1 200 OKContent-Type: text/plainConnection: Keep-AliveContent-Length: 0

    在/var/log/td-agent.log中会有如下输出:


    2020-03-05 14:06:24.144168913 +0800 test.cycle: {"action":"login","user":2}

    下边我们开始了解一下事件是如何被处理和改变的。
    当你准备好一个采集配置后,Fluentd就生成了用以处理输入数据的各种规则。日志事件会历经一系列的处理流程,从而决定了事件的循环周期。
    • 过滤器(Filters)

    • 过滤器用于对事件进行筛选,决定是否接收或者丢弃事件。我们可以在上边的示例中增加一个过滤器。


















        @type http  port 8888  bind 0.0.0.0
      @type grep key action pattern ^logout$
      @type stdout

      添加过滤器之后,事件在路由到match之前必须经过过滤器的处理。过滤器根据事件的类型和过滤规则来决定是否接受此事件。


      我们示例中使用的是grep过滤器,这个过滤器对test.cycle这类事件进行过滤,会排除http请求中action值为logout的事件。

      所以,如果尝试发送下边的请求,在td-agent.log中是看不到任何输出的。


      curl -i -X POST -d 'json={"action":"logout","user":2}' http://localhost:8888/test.cycle


      从示例中可以看到,事件是根据配置顺序自上而下来被处理的。我们可以根据需要配置任意多个过滤器,这样一来,配置文件会变得很长很复杂。Fluentd提供了标签来解决此问题。


    • 标签(Labels)

      标签的作用是用来定义一组配置项,这组配置项可以被其他配置项引用,从而实现事件路由跳转。类似编程语言中的goto的功能。


      还是上边的示例,我们定义一个标签来看一下效果。

        @type http  bind 0.0.0.0  port 8888  @label @STAGING
      @type grep key action pattern ^login$
      @type grep key action pattern ^logout$
      @type stdout

      这个STARTING标签将之前的filter和match封装到了一起,然后在source中进行了引用。如此一来,事件由input插件生成后将会跳过那个独立的filter,直接进入STARTING定义的处理流程中。


    • 缓存(Buffers)

      我们看到了事件从input产生,经由filter筛选,最后到达output的过程。在上边的示例中,我们使用的是stdout插件直接输出到控制台,并没有经过缓存。

      实际应用中,一般会先把数据进行缓存,达到一定条件后再flush到目标存储中。这样可以提升系统可靠性,对于稳定系统吞吐量也很重要。可在后续文章中共同了解更多关于缓存插件的知识。

总的来说,事件会在各插件之间接续流转,直到到达output,结束整个生命周期。如下图:

以上就是Fluentd事件的生命周期有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

事件 插件 配置 过滤器 处理 输出 规则 标签 示例 路由 周期 上边 数据 日志 缓存 生成 生命 对象 就是 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 打印机节墨模式软件开发 java软件开发亿连信 数据库er模型转换关系模型 如何备份使用数据库文件 网络安全四个字图片大全 怎么加求生之路服务器 怎样用云服务器加装系统 网络连接到服务器无法上网 网络及网络安全 昆明电视台网络安全教育在线直播 开发和数据库管理哪个工作更好 科技国网互联网数据质量管理 湖南网络技术学院哪个专业好 互联网科技公司招聘需求 网络安全法 履行 安全保护义务 网易服务器有自动搭路吗 辽宁网络技术开发概况 郑州软件开发工资待遇 生产管理软件用什么软件开发 中国麒麟软件开发 北京通信软件开发过程标准 软件开发的自媒体 服务器远程通信模块 济南创凡网络技术有限公司 网络安全配置与实践 联想云服务器怎么样 计算机软件开发工资稳定吗 快手换名字为什么显示服务器繁忙 腾讯网络安全巡查员 入库出库数据库表
0