全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
业务实时监控服务 ARMS

Java 应用监控和诊断方案

更新时间:2018-03-27 11:31:14

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

业务痛点

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

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

  • 定位问题难

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

  • 发现瓶颈难

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

  • 架构梳理难

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

基于 ARMS 的应用监控方案

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

调用拓扑图

您可以在 ARMS 中看到应用的调用关系拓扑图,例如应用被哪些服务依赖、依赖了哪些下游服务等。如图所示,我们可以清楚地看到图中被 ARMS 监控的应用依赖了 Redis、MySQL 数据库和外部的一些 HTTP 服务,而对 MySQL 数据库的依赖是瓶颈所在(平均耗时超过 1700 ms)。

topology

慢服务/SQL 报表

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

sqlreport

分布式调用链查询

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

stacktrace

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

本文导读目录