• 17. Fluentd输出插件:out_copy用法详解


    copy即复制,out_copy的作用就是将日志事件复制到多个输出,这样就可以对同一份日志做不同类型的分析处理。
    out_copy内置于Fluentd,无需单独安装。

    1. 示例配置
    <match pattern>
      @type copy
    
      <store>
        @type file
        path /var/log/fluent/myapp1
        ...
      </store>
    
      <store>
        ...
      </store>
    
      <store>
        ...
      </store>
    
    </match>
    

    这个示例将日志输出到本地文件和其他n个目的地。这些目的地由进行指定。

    1. 参数说明

    2.1 @type 插件类型,取值为copy
    2.2 copy_mode

    指定日志事件在插件间的传递方式。
    包含以下几种传递方式:

    • no_copy:不产生日志拷贝,各<store>共享一份日志事件。这是默认的传递方式。这意味着,如果某个<store>对日志进行了修改,其他<store>也会继承这个修改。
    • shallow:采用浅拷贝的方式在<store>之间传递日志事件。

    复制是为了避免某个<store>对日志的修改会影响到其他<store>
    浅拷贝和深拷贝是对象复制的两种方式,主要是针对对象中是否存在嵌套引用对象的情况。
    如果对象嵌套引用了其他对象,浅拷贝不会对引用对象进行复制,而深拷贝则会复制引用对象指向的内容。
    如果<store>中的插件要修改日志事件,但不对嵌套的引用对象进行修改,则可以使用shallow拷贝;
    如果<store>需要修改嵌套的引用对象,则需要使用下边两种深拷贝方式。

    • deep:采用深拷贝的方式在<store>插件中传递日志事件。其内部使用msgpack-ruby进行数据拷贝。
    • marshal:如果msgpack-ruby无法进行数据深拷贝,则可以尝试使用marshal这种方式。需要注意的是,marshal速度很慢。

    2.3 <store>
    指定存储目的地。其使用方法和相似,可以在其中使用各种输出插件。
    out_copy插件至少要配置一个<store>
    <store>支持一个可选的参数:ignore_error。
    在使用多个<store>的场景下,若某个<store>抛出了错误,会影响到其他<store>
    比如:

    <match app.**>
      @type copy
      <store>
        @type plugin1
      </store>
      <store>
        @type plugin2
      </store>
    </match>
    

    如果plugin1发生错误,plugin2便不会被执行。
    可在<store>中启用ignore_error,以避免此种情况的发生。

    <match app.**>
      @type copy
      <store ignore_error>
        @type plugin1
      </store>
      <store>
        @type plugin2
      </store>
    </match>
    
  • 相关阅读:
    使用zabbix监控sql server的发布订阅
    MySQL执行计划
    3.MongoDB恢复探究:为什么oplogReplay参数只设置了日志应用结束时间oplogLimit,而没有设置开始时间?
    面试官看完我手写的单例直接惊呆了!
    故事:坐在我隔壁的小王问我什么是HyperLogLog
    JDK15就要来了,你却还不知道JDK8的新特性!
    不要再问我 in,exists 走不走索引了
    JVM性能调优(4) —— 性能调优工具
    JVM性能调优(3) —— 内存分配和垃圾回收调优
    JVM性能调优(2) —— 垃圾回收器和回收策略
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13925705.html
Copyright © 2020-2023  润新知