打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Fluentd部署:多Workers进程模式

本文介绍如何使用Fluentd的多worker模式处理高访问量的日志事件。此模式会运行多个worker进程以最大利用多核CPU。

  1. 原理

    默认情况下,一个Fluentd实例会运行一个监控进程和一个工作进程。工作进程包含了Input/Filter/Output各类插件。

    多worker模式就是一个实例中启动了多个工作进程,这些工作进程负责处理日志事件,接受监控进程的管理和调度。如下图所示:

    Fluentd提供了一些特性以支持多worker模式,我们通过配置就能方便地使用这些特性。

  2. 配置

    1. workers参数

      可在<system>中设置工作进程的数目。

      <system> workers 4</system>
    2. <worker N>指令

      有些插件不支持在多worker上运行,比如tail。

      对这类插件,我们可通过<worker N>指定其在哪个worker上运行。

      N代表worker的索引,起始为0.

      <system> workers 4</system># work on multi process workers. worker0 - worker3 run in_forward<source> @type forward</source># work on only worker 0. worker1 - worker3 don't run in_tail<worker 0> <source> @type tail </source></worker># <worker 1>, <worker 2> or <worker 3> is also ok

      这个例子中,启动了4个工作进程。tail插件被放置在<worker 0>中,表明tail只运行在索引为0的工作进程上。

      这种配置可以混合使用多进程插件和单进程插件。

    3. <worker N-M>指令

      Fluentd v1.4.0开始支持<worker N-M>指令。这个很容易理解。

      N-M代表工作进程索引范围,指定了插件可以运行在哪些工作进程中。、

      <system> workers 6</system>
      <worker 0-1> <source> @type forward </source>
      <filter test> @type record_transformer enable_ruby <record> worker_id ${ENV['SERVERENGINE_WORKER_ID']} </record> </filter>
      <match test> @type stdout </match></worker># work on worker 0 and worker 1.
      <worker 2-3> <source> @type tcp <parse> @type none </parse> tag test </source>
      <filter test> @type record_transformer enable_ruby <record> worker_id ${ENV['SERVERENGINE_WORKER_ID']} </record> </filter>
      <match test> @type stdout </match></worker># work on worker 2 and worker 3.
      <worker 4-5> <source> @type udp <parse> @type none </parse> tag test </source>
      <filter test> @type record_transformer enable_ruby <record> worker_id ${ENV['SERVERENGINE_WORKER_ID']} </record> </filter>
      <match test> @type stdout </match></worker># work on worker 4 and worker 5.
    4. root_dir/@id参数

      使用文件作为buffer时,需要配置这几个参数。

      在多worker模式中,不能指定固定的path作为文件buffer,因为这会

      不同进程中引起冲突。

      <system> workers 2</system>
      <match pattern> @type forward <buffer> @type file path /var/log/fluentd/forward # This is not allowed </buffer></match>

      Fluentd提供了基于root_dir和@id的动态path配置,实际的buffer路径为:

      ${root_dir}/worker${worker index}/${plugin @id}/buffer

      <system> workers 2 root_dir /var/log/fluentd</system>
      <match pattern> @type forward @id out_fwd <buffer> @type file </buffer></match>
  3. 操作

    每个worker使用单独的内存和磁盘空间,因此需要仔细配置缓存空间,并对内存和磁盘使用情况做好监控。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
性能优越的轻量级日志收集工具,微软、亚马逊都在用!
使用Fluentd + MongoDB构建实时日志收集系统
号称下一代日志收集系统!来看看它有多强
你一定需要六款大数据采集平台的架构分析
Java nio入门教程详解(二十八)
Nginx核心配置深入理解及优化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服