More Related Content
Similar to 分布式系统日志处理调研 (20)
分布式系统日志处理调研
- 4. 背景
• 随着分布式系统规模扩大以及模块化程度
越来越高,各组件关联性越来越强,使得
调试变得很复杂
• 服务器上存放多样化的日志数据(访问日
志,错误日志,程序跟踪日志,中间件平
台日志等),需要集中汇总分析
• 日志的数据量越来越大
• 日志的管理困难
- 6. 日志系统模块划分
• 日志收集
– 多样化的日志收集方式,一般采用适配器或依赖于操作系统的流处理,通过传输模块将
数据传输到日志服务。
– 对应用的性能影响最小
– 允许一定范围的异常
• 日志处理
– 接收数据,并进行存储
– 性能高,吞吐量大
– 方便扩展
– 存储量大
– 可用性高
• 日志分析
– 离线、在线日志分析
– 模式匹配
– 并行计算,提升性能
– 关联分析
• 日志监控及报警
– 异常监控
– 提示
- 7. 日志处理流程
• 应用请求本地的日志代理服务,进行日志本地
记录
• 日志传输服务,将本地日志向远端日志服务请
求存储
• 日志存储服务根据配置,将日志文件存储到文
件或数据库
• 日志监控服务根据规则配置,进行报警及处理
• 日志管理平台,对各个代理进行配置,对日志
进行查询,查看
- 8. 技术点
• 多样化的前端适配器
• 日志格式的处理
• 分布式日志传输,缓冲
• 日志存储方式
• 日志查询,模式匹配,并行任务
• 日志关联
• 时钟同步
- 10. Scribe
• Scribe是facebook开源的日志收集系统,在
facebook内部已经得到大量的应用。 Scribe
是基于一个使用非阻断C++服务器的thrift服
务的实现。它能够从各种日志源上收集日
志,存储到一个中央存储系统 (可以是NFS,
分布式文件系统等)上,以便于进行集中
统计分析处理。它为日志的“分布式收集,
统一处理”提供了一个可扩展的,高容错的
方案。
- 12. ChukWa
• Chukwa是Yahoo开发的Hadoop之上的数据采
集/分析框架,主要用于日志采集/分析。该
框架提供了采集数据的Agent,由Agent采集
数 据通过HTTP发送数据给Cluster的Collector,
collector把数据sink进Hadoop,然后通过定
期运行Map reducer来分析数据,将结果呈
现给用户。
- 16. 其他
• Kafka
– http://incubator.apache.org/kafka/index.html
– 是Linkedin于2010年12月份开源的消息系统,它主要用
于处理活跃的流式数据。活跃的流式数据在web网站应
用中非常常见,这 些数据包括网站的pv、用户访问了
什么内容,搜索了什么内容等。 这些数据通常以日志
的形式记录下来,然后每隔一段时间进行一次统计处
理。
• Rsyslog
– http://www.rsyslog.com/
• Splunk
– http://www.splunk.com/product
- 19. 方案一结构
NFS
APP
APP LAS
APP
APP
NOSQL
- 20. LAS模块
• 离线文件分析
• 日志格式转换
• 日志查询
• 日志关联
- 21. 方案二(分布式系统日志收集)
• 应用系统通过消息代理存储日志
• 建立消息服务转换及存储日志消息
• 建立NOSQL数据库存储日志
• 建立基于NOSQL的日志分析系统,分析日志,
建立关联,提供日志查询
- 22. 方案二结构
APP
Agent
APP
MBR NOSQL
APP
Agent
APP
LAS
- 24. 方案三分析
Scribe ChukWa Flume
贡献公司 Facebook Apache/yahoo Cloudera
开源时间 2008 2009 2009
实现语言 c/c++ Java Java
Agent Thrift Client 自带 自带
存储 支持HDFS 支持HDFS 支持HDFS
负载均衡 无 无 Zookeeper
容错性 Collector和store间 Agent记录偏移量, Agent到Collector,
有容错机制,但 一旦发生故障,可 Collector到存储均
Agent和Collector间 以根据偏移量继续 有容错机制
需自己实现 发送
- 25. 三种方案比对
日志集中方案 分布式系统日志 开源日志系统
开发工作量 小 大 中
维护工作量 高 低 低
扩展 低 高 高
性能 低 高 高
对现有系统的影响 小 小 大
对将来的积累 低 高 中
可管理性 低 高 中
建议 低 高 中
- 26. 总结
• 需要解决两个问题
– 是否需要分布式应用日志收集
– 是否需要处理海量数据
• 当前工作建议分三个部分开展
– 日志分析(Logging Analysis System)
– 消息系统(Message Queue)
– HDFS存储(NOSQL)
• 不同实现方式,代价差异很大,可以做一天,
可以做一个月,也可以做一年,建议先明确预
算及阶段目标