https://zhuanlan.zhihu.com/p/129375187
 

以前在不少场合浅度使用过 Fluentd,将日志汇聚到一个地方。它给我的大体印象是

简单且能解决问题

直到最近遇到一个业务量稍大、逻辑较复杂的场景,Fluentd 的优点和缺点明显地展现了出来。

优点

它的日志采集方式非常丰富,有 tail、http、命令等等。方便地将日志采集起来。特别是 tail,考虑到了文件名包含日期的日志,日志的轮转等方面,让人觉得十分放心。

Fluentd 中 tag,label 两个概念使得可以实现灵活的处理逻辑。比如通过 rewrite_tag_filter 插件实现根据数据内容修改此数据的 tag,这条数据后续进入对应 tag 的处理逻辑,相当于路由功能;通过第三方插件 record_splitter 可用于拆分包含批量操作的日志;通过 copy 与 relabel 插件可将一条数据复制到两条流水线上。

作为一个日志传输工具,Fluentd 考虑到了传输过程中的很多问题,比如接收方跟不上时的可以设置缓存,接收方不可达时的可设置候选接收方(secondary),可设置多个接收方。

Fluentd 有丰富的插件,基本上想要的功能都有插件实现。因为插件都是 Ruby 脚本,编写的门槛很低,所以即使没有现成插件很多人也敢自己编写。

缺点

首先是性能。Fluentd 的宣传里有高性能这一项,可能相对于 logstash 的确好很多,但还是不太够。在实际使用中,解析 -> 转换 -> 入库 整个过程性能并不理想。比如实现上面提及的 rewrite_tagsplitcopy 然后写入数据库,单进程每秒 2000 条日志,CPU 100%,内存占用 2-3GB。而且受限于 Ruby 的 GIL,它并不能真正多线程。多进程也受限于插件是否支持。

总之,Fluentd 的性能既因为 Ruby 消耗过多计算和内存资源,又因为 Ruby 难以受益与多核。对数据吞吐量大的业务来说它是很昂贵的。灵活和性能并不完全冲突,比如 Nginx 足够灵活,性能也足够强。

除了性能,Fluentd 的插件质量也不够好,第三方插件大多是使用者根据自己业务需要编写,只为实现特定需求,没有足够的泛化,也没有足够的测试和性能评估。不少常用的插件也以额外安装的方式添加,带来不必要的麻烦。

另外就是配置文件,一个 filter 里只能做一个转换,比如:

<filter a.tag>
@type parse
...
</filter>
<filter a.tag>
@type transform_record
...
</filter>

总觉得没有下面这样来的干脆

<filter a.tag>
<item>
@type parse
...
</item>
<item>
@type stransform_record
...
</item>
</filter>

最后

我觉得 Fluentd 在数据量不大的场景下还是很不错的,省心省事。

如果转换逻辑简单数据量很大,那可以考虑 Fluentd 的小伙伴 Fluent Bit,性能更高,占用资源少很多,但插件少一点。

如果转换逻辑较复杂,数据量很大,可以在采集端使用 Fluentd/Fluent Bit,数据汇聚处自己写程序。

[转帖]Fluentd 的优缺点的更多相关文章

  1. [转帖]LCD与LED的区别之背光原理与优缺点对比介绍

    LCD与LED的区别之背光原理与优缺点对比介绍 http://m.elecfans.com/article/620376.html 时下液晶面板与液晶电视技术已经达到炉火纯青的境界,并已经成为大屏幕平 ...

  2. [转帖]KMS 是什么 以及 优缺点

    产品激活 比如Windows激活 , office激活 等激活的原理是什么? KMS等激活工具安全吗? http://www.cnblogs.com/flowerslip/p/8370832.html ...

  3. 【转载】IE6 PNG透明终极解决方案(打造W3Cfuns-IE6PNG最强帖)

    原文地址:http://www.w3cfuns.com/thread-297-1-1.html 本文版权归W3Cfuns.com所有,转载需在文章页面明显位置以链接的方式给出原文链接,否则W3Cfun ...

  4. [转帖]批处理-For详解

    批处理-For详解 https://www.cnblogs.com/DswCnblog/p/5435300.html for 循环的写法 感觉非常好. 今天下午的时候简单测试了下. 多学习提高 非常重 ...

  5. DDD CQRS架构和传统架构的优缺点比较

    明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析.先提前祝大家猴年新春快乐.万事如意.身体健康! 最近几年,在DDD的领域,我们经常会看到CQRS架构的概 ...

  6. [NodeJS] 优缺点及适用场景讨论

    概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...

  7. emmet,jade,haml, slim,less,sass,coffeescript等的实战优缺点

    摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...

  8. kubernetes部署Fluentd+Elasticsearch+kibana 日志收集系统

    一.介绍 1. Fluentd 是一个开源收集事件和日志系统,用与各node节点日志数据的收集.处理等等.详细介绍移步-->官方地址:http://fluentd.org/ 2. Elastic ...

  9. sql server的优缺点

    sql server的优点众多,让其在数据库领域独占鳌头,成为最受欢迎的数据库系统,其优缺点也自然是喜爱者们所关注的,首先了解一下它的历史: sql server是一个关系型数据库管理系统,最初是由M ...

  10. 单页Web应用优缺点

    一.定义单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用.它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HT ...

随机推荐

  1. Python——第五章:处理异常try、except、else、finally

    处理异常try 和 except 在 Python 中,try 和 except 语句用于处理异常(错误).通过使用这两个关键字,你可以编写代码来捕获和处理可能发生的异常,以保持程序的稳定性. try ...

  2. .NET周刊 【12月第3期 2023-12-24】

    国内文章 CAP 8.0 版本发布通告 - CAP 7岁生日快乐! https://www.cnblogs.com/savorboard/p/cap-8-0.html 今天宣布CAP 8.0版本正式发 ...

  3. C语言使用dlfcn动态载入.so动态库

    转载:https://mp.weixin.qq.com/s?__biz=Mzk0NDYzNTI1Ng==&mid=2247483722&idx=1&sn=09a9458b012 ...

  4. Android学习--ListView和Tab

    产生一个ListView 其中包含很多items,第一个item启动另一个实现了Tab的Activity. 关于tab的使用方式,参见下面blog http://oldshark.blog.163.c ...

  5. libGDX游戏开发之弹窗(五)

    libGDX游戏开发之弹窗(五) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和google找 ...

  6. git blame 用法小记

    1.概述 git管理的代码仓库,在协作开发中不可避免地会出现代码冲突,或者有新手错误地提交代码.出现问题不可怕,可怕的是找不到问题出在哪里.有时候找到出问题的代码,却不知道是谁提交的.git提供了一个 ...

  7. 知道Python中的字符串是什么吗?

    摘要:本文将告诉您Python中的字符串是什么,并向您简要介绍有关该概念的所有知识. 本文将介绍以下内容: 如何创建一个字符串? 如何从字符串访问字符? 格式化字符串 因此,让我们开始吧. 什么是Py ...

  8. Java 日志框架学习笔记

    日志概念 1. 日志文件 日志文件是用于记录系统操作事件的文件集合 1.1 调试日志 1.2 系统日志 系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以监视系统中发生的事件.用户可以通过它来 ...

  9. Codeforces Round #731 (Div. 3) A~G 解题记录

    比赛链接:Here 1547A. Shortest Path with Obstacle 3个点 \(A,B,F\) ,前提 \(F\) 点为不可经过点,问 \(A\to B\) 最短路径长度 A题没 ...

  10. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)(AB水题,C思维,D搜索,E DP)

    补题链接:Here A - Century 整除 \(200\) 并且判断能否整除完全 B - 200th ABC-200 按题意即可 C - Ringo's Favorite Numbers 2 求 ...