1、鹰眼平台的架构
首先在每个应用集群的运行环境中,每当应用中进行了远程服务调用、缓存、数据库访问等操作时,都会生成相关的访问日志并保存到应用所在的服务器上。
因为这些本地日志信息仅仅是一次业务请求处理中的部分日志信息,必须要将这些日志信息汇聚到一个地方才能进行全局的统计和查看,所以在每个运行应用所在的服务器上均有一个代理程序,专门负责实时地将生成的日志文件(增量)发送到鹰眼的处理集群上。
鹰眼平台是阿里巴巴中间件团队自主研发的 JStorm流式计算引擎,对应用集群接收到的日志 进行内容的解析拆分,按照不同业务场景的需求 将拆分后的数据保存到不同的存储系统中。对于需要对日志信息进行实时业务统计的需求,会将日志信息保存到HBase中,对接收到的日志信息 进行实时的汇总计算,最后给鹰眼服务器提供实时业务统计数据,比如某一服务实时的QPS值、 交易金额的实时变化等场景。如果对于日志信息要进行批量的统计和分析,则会利用Hadoop分布式文件系统 (HDFS)提供这类业务场景下对日志数据的计算和分析。
2、埋点和输出日志
在每一个URL请求都会生成一个 全局唯一的ID,鹰眼平台中称为TraceID,这个ID 会出现在该请求中所有服务调用、数据库、缓 存、消息服务访问时生成的所有日志中。阿里巴巴采用了方式,将实现服务调用、各种资源的访问所需要生成服 务链路日志,以及TraceID传递等功能的代码(称 为埋点)植入到了服务框架层和各资源的访问驱 动层,也就是在中间件层面上统一实现了鹰眼的 上下文创建以及日志埋点功能,让调用上下文在 中间件的网络请求中传递,同时将调用上下文信 息保存在了本地ThreadLocal中,从而实现了鹰眼 平台所需的调用上下文和日志信息对于应用开发 人员完全透明。
关于TraceID的生成规则,可以 根据业务的需要在TraceID中包含一定的业务信 息,比如前端应用的IP地址,这样可以通过该信 息快速定位到生成此次请求的前端应用;比如创 建时间,方便后期将修改日志信息按照时间维度 进行分区存储。在淘宝的环境中,TraceID一般会 包含以下信息:
·IP地址:在淘宝环境可直接映射到前端应 用。
·创建时间:在存储时用于分区。·顺序数:用于链路采样。
除了TraceID负责将URL请求中所有的服务调 用和资源访问关系串联在了一起,还有另外一个 ID在分布式服务调用过程中也起到非常重要的作 用,这个ID就是RCPID,用于标识日志埋点顺序 和服务调用间的嵌套关系。
3、海量日志分布式处理平台
利用了阿里 巴巴中间件团队开发的海量日志分布式处理平台 TLog。
TLog可以根据用户定制的处理流程,持续不 断地对目标机器生成的日志数据进行解析、计 算、入库等操作,对日志的处理流程提供了“所 见即所得”的可视化配置界面,具备零业务侵 入、高性能、实时性强等特点。
要接入TLog平台,只需完成三步操作配置: 日志采集设置、日志数据处理流程自定义、API 方式数据获取,就能通过分布式日志处理的方式 实现所需要监控的技术或业务指标信息。用户只需设置好日志收集的目标应用、机器 IP、日志路径等信息并保存后,就完成了采集点的配置工作。
***********************************************************************
【如果文字看累了,可b站搜索“沙皮狗2021”,用听的方式领略知识的魅力】
传送门 :https://space.bilibili.com/407643589
【微信公众号】:沙皮狗2021
***********************************************************************