在这个应用场景案例中,我们采用基于ARMS的应用监控方案来解决分布式Java应用监控中的业务痛点。

互联网业务的高速发展带来了日益增长的流量压力,业务逻辑也日趋复杂,传统的单机应用已经无法满足需求。越来越多的网站逐渐采用了分布式部署架构。同时,随着Spring Cloud/Dubbo等基础开发框架的不断成熟,越来越多的企业开始对网站架构按照业务模块进行垂直拆分,形成了更适合团队协同开发、快速迭代的微服务架构(Microservice Architecture)。

分布式的微服务架构在开发效率上具备先进性,但给传统的监控、运维、诊断技术带来了巨大挑战。以淘宝网(www.taobao.com)践行分布式架构与微服务实践的过程为例,遇到的主要挑战有:

  • 定位问题难

    客服人员接到用户反馈商品购买出现问题后,会交由技术人员排查解决。而微服务分布式架构中的一个网站请求通常要经过多个服务/节点后返回结果。一旦请求出现错误,往往要在多台机器上反复翻看日志才能初步定位问题,对简单问题的排查也常常涉及多个团队。

  • 发现瓶颈难

    当用户反馈网站出现卡顿现象,很难快速发现瓶颈在哪里:是用户终端到服务端的网络问题,是服务端负载过高导致响应变慢,还是数据库压力过大?即使定位到了导致卡顿的环节,也很难快速定位到代码层面的根本原因。

  • 架构梳理难

    在业务逻辑变得逐渐复杂以后,很难从代码层面去梳理某个应用依赖了哪些下游服务(数据库、HTTP API、缓存),以及被哪些外部调用所依赖。业务逻辑的梳理、架构的治理和容量的规划(例如“双十一”促销活动的准备过程中,需要为每个应用准备多少台机器)也变得更加困难。

基于ARMS的应用监控方案

ARMS提供的应用监控功能,脱胎于阿里巴巴内部的分布式跟踪与监控系统(内部称为“鹰眼系统”),可以在不修改任何现有代码的情况下帮助网站开发人员和运维人员解决上述问题。

调用拓扑图

您可以在ARMS中看到应用的调用关系拓扑图,例如应用被哪些服务依赖、依赖了哪些下游服务等。如图所示,我们可以清楚地看到未知应用对被监控应用的调用是瓶颈所在,其平均耗时超过3000 ms。
调用拓扑图

慢服务/SQL报表

进入该应用的SQL分析报表,可以清楚地定位到具体的慢SQL、慢服务。
慢服务/SQL报表

分布式调用链查询

点击慢SQL的接口快照,可以找到一条包含该SQL调用的请求,并能看到该方法的调用堆栈,进而定位到代码级别的问题。
分布式调用链查询

无论从全局视角还是单个调用视角,ARMS能够全方位解决您在分布式Java应用监控领域的痛点。ARMS的应用监控可搭配前端监控使用,从业务关键指标到用户体验,再到应用性能,为您的站点全方位保驾护航。