论文部分内容阅读
近几年,随着移动互联网的快速发展,海量日志数据的产生变得越来越容易。同时支撑互联网公司的分布式系统复杂性越来越高,各种服务通常都是部署在大规模分布式的集群上。而这些应用服务都是一个个独立的软件模块,这些软件模块可能是由多个不同的团队开发的,使用的编程语言都是不尽相同的,部署分布在几百甚至是几千台服务器,横跨多个数据中心机房。一旦其中一个或多个服务出现问题,在运行环境中进行问题追踪的困难程度可想而知,需要跨部门沟通与协调,甚至还要在多个软件模块服务的各个环节去排查问题。在系统运行中出现问题需要在短时间内定位问题,并解决问题。为了解决上述问题,就需要可以帮助理解与分析系统行为与性能的工具,国内外各大公司都在做APM(Application Performance Monitor)相关的系统,如国外的New Relic、Splunk,国内的淘宝鹰眼、大众点评的CAT等。本文就是基于上面的问题来开发实现一套类似的APM系统。本文采用准实时流框架Spark Streaming进行各维度的日志分析计算,将计算结果通过时间序列存储数据库OpenTSDB写入Hbase,最终将数据以各种图报表形式展现。通过这些数据,应用开发以及运维监控人员可以查看各自关注的数据以及快速定位问题,提高工作效率,将更多经历放在产品业务上。也给管理者的决策提供依据。本文的研究工作主要有以下几个方面:1.日志分析应用系统的架构与设计。本文对应用日志处理系统进行了需求分析,分数据流处理层、数据存储层、API服务层,对涉及的技术方案进行了选择、分析到设计,包括流式处理的计算框架、时间序列化的存储中间件、方便有效读取数据的API以及Redis缓存的使用等;设计的应用日志分析系统能够高效快速的处理数据,更关注系统的可用性、及时性以及扩展性。2.对restful以及gateway类型的url数据的清洗。本文应用日志有些域包含大量的url,这些url中也包括一些无用的、用户不关心的以及恶意访问的,若这些都保存起来,会给后面的查询效率带来一些影响,对这些url的清洗很有必要,所以需要进行一些归类过滤处理。3.日志分析应用系统的实现及验证。本文采用流式技术完成了数据的计算,时间序列化数据库进行存储,友好的Restful API进行数据读取,通过前端展现技术进行图表展示。系统已在互联网公司运行使用半年多。验证了日志处理应用系统在日均处理几十TB的大批量数据流下从计算到展示的流畅性、数据准确性,在大促高峰期经受住了考验。系统在1分钟内显示各个应用的运行实时状态数据,帮忙技术人员及时快速地对运行域进行问题诊断并修复,从而为公司业务正常运作提供强有力地支持。