长假过完,相信无缘支付宝中国锦鲤的你必定已经回来工做了。虽然轻轻松松与全球免单大礼包失之交臂,但不要丧气,小编悄悄为你准备了一份秘籍,助你在2018年最后不到三个月的时间里成功逆袭,斩获年终奖的大锦鲤! 本月小编将带你们一块儿了解UAVStack的调用链技术,讲述调用链技术的源起、实现、应用以及关键技术。好好研习本月的每篇推送,说不定年终奖的锦鲤就是你哦~~~赶快进入正文吧html
近年来,Observability一词开始在监控社区流行。笔者将Observability视为一种理念,一种监控的超集,涵盖监控、日志聚合和分布式跟踪,可以更加深刻地实时观察系统。本文将就日志聚合、分布式跟踪及两者的关联运用展开说明。前端
微服务、云和容器化架构的出现,改变了咱们构建系统的方式。应用程序是分布式的,并且瞬息万变;底层基础设施和网络服务越发健壮。平常系统运维的大部分工做将集中于应用程序层或不一样应用程序之间的复杂交互调用。git
对于复杂的跨系统调用,一次请求可能须要后台几台或上百台节点的支持。此时,单纯依靠人力已经很难追踪到一次请求的完整调用流程,而最能反映每次请求处理过程的应该是分布式追踪调用链(下文简称“调用链”)。github
调用链着眼于一次请求的完整调用流程,当细粒到具体节点时,应用系统自身打印的日志最能说明当前节点的处理逻辑。服务器
下图呈现了调用链和日志聚合的关联方式:网络
调用链的做用是记录并汇总展现一次请求所通过的全部节点和关键操做,如图中绿色箭头,从全局的层面展现一次请求的完整调用流程。架构
日志聚合的做用是汇总整理全部节点和系统产生的日志,并为用户提供友好有效的查询能力。框架
传统的处理方式每每须要在调用链和日志聚合之间反复切换,即在调用链上发现问题后,须要切换到日志聚合,根据特定属性查询对应的日志信息,排查日志信息后再次返回调用链,查询与日志信息关联的调用链信息……如此往返屡次。运维
对于这种经典场景,日志与调用链的关联式跟踪查询提供了一种全新的闭环处理模式:分布式
在应用集群中的机器上部署代理程序(Agent),用于数据收集和上送;将探针内嵌在容器(Tomcat等)中,用于应用画像和应用信息收集。
Agent经过MQ将处理过的日志上送到监控服务器。
监控服务器对采集的数据进行处理,并将其存入ES,方便用户经过特定特征快速定位。
将数据进行可视化展现,并提供方便的可视化自定义查询服务。
在介绍调用链和日志聚合的具体实现以前须要先明确几个概念:
在中间件启动时动态地将本身的代码行为植入中间件的各类行为中的技术。例如,在Tomcat启动时,在Tomcat处理请求的开始位置动态地添加代码劫持,从而在Tomcat执行处理请求逻辑以前实现服务调用画像等功能。更多能力及实现方式请参考JAVA服务治理实践之无侵入的应用服务监控。
经过中间件劫持技术在服务调用的最前端产生可以惟一肯定一条调用链的ID。
调用链部分:模型设计、服务端信息收集(轻/重)、方法级信息收集(轻/重)、客户端信息收集(轻/重)、调用链协议设计(轻/重)、调用链上下文传递、调用信息记录及传递、调用数据统计处理几个关键过程。
关键技术:中间件劫持加强框架、调用模型设计和调用链上下文传递。
详情参见:架构文档
应用日志部分:日志归集,日志内容处理传输,服务端日志处理及存储等几个关键步骤。
关键技术:服务画像技术、日志归集。
详情参见:架构文档
欢迎下载UAVStack的源码或AllInOne开发演示版体验。
调用链入口:
以上就是对调用链概念、功能及实现策略的介绍,下期文章咱们将继续介绍调用链的模型设计与模型时序图,欢迎继续关注~
UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档,欢迎访问-给星-拉取~~~
扫一扫下方二维码,关注一个不会让你失望的公众号
你们好,我是李崇,宜信架构师,宜信集团级监控项目monitor、apm及ServiceGovern领域负责人。我。同时也是开源项目UAVStack核心开发人员,本周六(10月20日)我会作客掘金技术沙龙为你们作一场《多技术栈下的APM系统-UAVStack》的分享,欢迎你们能够现场交流。
点击图片了解详情: