论文部分内容阅读
随着智能便携设备的不断普及以及网络服务质量的不断提升,互联网产品的用户数量以及网络流量与日俱增,应用服务的高可用、高性能越来越被重视。日志作为记录应用程序运行时信息的组件,在应用程序的监控、问题排查、服务优化等工作中发挥着不可替代的作用。美团点评开发了统一日志系统,旨在为公司的分布式应用提供更好的日志服务,系统以磁盘文件收集方式或socket收集方式获取满足格式规范的日志数据,并将数据发送至本机代理,本机代理将原始日志按照日志类别发送到Kafka集群对应的topic中。实时日志解析任务消费Kafka中的原始日志并且对日志进行解析,将原始文本格式的日志解析成JSON格式的数据,提取出错误日志并按照日志类别将错误日志发送到Kafka集群中对应的topic中,供异常监控系统使用。同时,日志传输作业会实时消费Kafka中JSON格式的日志,并将数据发送到ElasticSearch集群中,按照索引分片策略对数据进行分片存储。ElasticSearch中存储的数据可被用于Kibana的可视化展示以及日志中心的日志检索。本论文的主要工作包括统一日志系统中的日志获取(socket收集方式)模块以及日志检索模块的设计与实现。其中,日志获取模块是利用Log4j2的插件化编程方式,实现了格式转换插件MTDPPatternConverter、日志格式化插件LcLayout以及日志输出插件ScribeAppender。同时,为了能将数据发送至本机日志代理的Scribe服务,日志获取模块还实现了 Scribe服务对应的Thrift客户端,用于数据传输。在ScribeAppender进行日志输出时,首先对日志数据进行格式化操作,然后使用Thrift客户端将日志发送至下游Scribe服务器。日志检索模块的主要工作是对存储于ElasticSearch中的日志进行检索,并对日志中心前端提供日志检索的RESTful接口。日志检索模块包括service层与web层,service层调用ElasticSearch提供的数据操作的RESTful接口进行数据检索,并向web层提供服务,web层对日志中心前端提供日志检索服务。