经常使用的日志收集系统有Syslog-ng,Scribe,Flume,固然还有ELK的LogStash.而目前互联网公司最长用的时Scribe和Flume,Scibe是Facebook开源的,可是如今已经不维护,因此不推荐使用。redis
Scribe是Facebook开源的日志收集系统,在facebook内部已经获得大量的应用。Scribe是基于一个非阻断C++服务的实现。它可以从各类日志源上收集日志,存储到一个中阳存储系统。mongodb
三个角色:json
Logstash是ELK中的一个工具,在ELK中起到的做用是对日志进行收集、分析、过滤。服务器
上图所示,由三个组件组成:框架
Flume是分布式的、可靠的、高性能、可扩展的的日志收集框架。分布式
Flume的Agent工具
Agent由三部分组成:性能
三个角色:搜索引擎
Scribe:C++编写,如今已经再也不维护,不推荐使用插件
Logstash: 针对日志收集,搜索,计算,可视化有一系列的产品,而且可以使用的插件以及社区较为活跃推荐使用
Flume: Java编写,较为灵活,而且吞吐量高。业界已经验证过,建议使用。
从上面能够看出日志收集框架基本都是三个组件:
Agent : 部署在各个应用服务器,来收集应用的日志
Collector: 日志收集中心,把分散在Agent的统一统一收集到日志中心
Storage: 存储层,日志收集以后的存储
注: 这里的日志收集框架只是最简单的,若是数据量过大,以及考虑数据收集的可靠。能够在中间添加kafka或者redis等中间件,保证可靠以及缓冲等做用。