您的位置:首页 > 其它

轻量级日志收集技术方案

2014-11-28 00:00 211 查看
摘要: 为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据处理分析。日志收集的方案有很多,传统的做法有rsync和flume两种方式。这里我们使用消息队列的方式来收集数据,自行研发了一套日志收集服务,实现了日志收集的可扩展性、高容错性、安全性和灵活性。以下是各个技术方案的介绍和对比。

1. 传统架构

1.1. Rsync方式



说明:

在生产环境上部署rsync传输脚本并设置定时,按天或按小时将日志传输到日志收集服务器

1) 优点

对生产服务器和日志收集服务器造成的压力较小

数据较精确,且可以比较方便的重复运行

2) 缺点

不能实时或者方便的得到想要的统计数据

不方便实施分布式

需要对每种日志正价同步脚本和设置定时,维护起来比较麻烦

Flume方式



说明:

Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方。

采用了分层架构:分别为agent,collector和storage。其中,agent和collector均由两部分组成:source和sink,source是数据来源,sink是数据去向。

Flume使用两个组件:Master和Node,Node根据在Master shell或web中动态配置,决定其是作为Agent还是Collector。

1) 优点

Agent和Collector,Collector和Store之间有容错机制,且提供了三种级别的可靠性保证

方便分布式部署

直接支持HDFS

2) 缺点

日志收集前后处理不够灵活,不方便处理成各周期的汇总日志

部署比较重量级,适合于T级别数据量的处理

2. 新轻量级架构

2.1. 消息队列方式



说明:

实线表示日志数据,虚线表示心跳和告警数据。

在生产服务器上增加agent数据监控服务,在日志收集服务器上部署beanstalkd队列服务,agent负责把生产服务器产生的日志实时写入到队列中去。
在日志收集服务器上部署Collector数据代理服务,负责将队列中的数据取出进行处理汇总。

Master和Collector可以部署在同一台服务器。

1) 优点

能够实时得到数据

使用php开发,日志收集前后处理灵活,可以根据需要编写php脚本进行个性化处理

统一使用master进行配置管理,非常方便进行部署,监控和维护

核心的agent,collector服务可以对其中的处理汇总进行分拆,易于分布式部署

2) 缺点

对系统的稳定性要求较高,如果agent异常退出,可能会丢失日志

对collector的性能要求较高,直接影响到日志收集服务器的负载

2.2. 未来方案

1) 引入实时流计算框架storm,更好地对大数据进行实时分析处理;

2) 直接传输至HDFS,进行离线大数据计算,主要对一些日期久远的日志及不需要实时计算的日志进行统计分析。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: