日志采集常见组件优劣势
flume
优势: 单source可支持多sink输出,能输出hdfs或者访问http接口,插件可扩展性较高(比如读个redis什么的)。失败策略保证消息的无丢失发送
劣势:不稳定,内存占用较大,长时间使用产生较多内存碎片。应用场景大多于离线文件搬运,偏大数据生态。
fluent-bit
优势:k8s生态组件,可自恢复,内存占用极少。守护进程,业务无侵入。 母组件fluentd可以做日志代理中心。
劣势:默认配置优化?读取端是单线程(所以cpu占用较高?)。插件只支持C、go语言,有专门的kafka插件,维护难度较高。
filebeat
elastic生态组件,golang组件, 为解决 Logstash "太重" 的问题
优势:资源占用极少,性能非常强。对文件控制很灵活,保证不重复读取。内置多种结构化方案(如json),output支持大部分主流组件(支持redis)。支持容器化。
劣势:默认配置需要优化(常见问题:注册表会很大)close_inactive
和scan_frequency
两个参数很重要。无法保证不重复发送。
logagent:
优势:使用简单。deamon进程。对外提供http拉取服务。记录文件消费位置。接入es很方便。
劣势:不支持大内容(20M)的返回。java编写的agent,gc会对宿主机有卡顿表现。
matomo:
优势:简单搜索和可视化集一身,
劣势:业务侵入,需要埋点。收集能力有局限性。
Logstash: 重,慢。
Logan:
美团开源移动端日志收集组件
资料:https://github.com/Meituan-Dianping/Logan
相关资料:
filebeat: https://blog.csdn.net/qq_30868737/article/details/103389574
fluent-bit: https://blog.csdn.net/luanpeng825485697/article/details/83312662
filebeat: https://www.jianshu.com/p/7c5b1b409e8c
各个对比: https://www.iteye.com/blog/luoshi0801-2252452