摘要: 微服务架构下,各类服务之间存在着错综复杂的依赖关系。一旦业务出现问题,追查问题源头就好比大海捞针,没有头绪。但业务不等人,此时,在最短的时间内定位问题根源是开发和运维人员对微服务监控产品的核心诉求。 传统的监控产品提供了表格(table)、表单(form)和仪表盘(dashboard)三种展现形式,因其局限性,并无法完整和直观的提供监控详情,以快速定位问题。
微服务架构下,各类服务之间存在着错综复杂的依赖关系。一旦业务出现问题,追查问题源头就好比大海捞针,没有头绪。但业务不等人,此时,在最短的时间内定位问题根源是开发和运维人员对微服务监控产品的核心诉求。
传统的监控产品提供了表格(table)、表单(form)和仪表盘(dashboard)三种展现形式,因其局限性,并无法完整和直观的提供监控详情,以快速定位问题。阿里云性能监控 ARMS 新推出的全真3D拓扑功能给这个问题带来了完美的解决方案。ARMS 3D拓扑功能,创新地采用三维立体的方式展示系统中真实的架构层级和关系,利用ThreeJS的前端框架建立一个立体的监控空间,让用户一目了然地看到系统的结构与状态。
传统监控方式的不足
在传统的监控产品中,我们最常见的界面就是表格、表单和仪表盘这三种,但这三种界面皆有其局限性。
表格:通常用于展示大量数据,信息密集,频繁翻页,大部分内容为数值和文字,不够直观。
表单:用于展示某个实例的详细内容,涉及大量文字和图表的阅读。缺点是一次只能聚焦一个实例,如有下层信息,需要跳转到更深层级。
仪表盘:以图表形式对信息的聚合展示,更直观和生动。但一个版面展示信息有限,一般下层信息阅读量就很少。
因为这种界面形式上的限制,我们常常不得不面对让人头昏眼花的大量表格,为了定位一个问题反复跳转,一不留神就迷失在茫茫数据中,想要理解数据之间的关系只能靠经验和记忆。
ARMS的监控创新
ARMS 通过使用全真3D的方式(简称 ARMS 3D拓扑)去展示系统的立体性,帮助用户快速理解和追踪系统节点中的关系。
首先,我们将系统从底到上抽象为 主机-应用-服务 这三个层级,这也是我们在传统监控方式中关注最多的三层信息。在这三个层级上的模块分别代表系统中真实存在的主机(ECS/物理机)- 应用 - 服务。纵向的连线代表主机对应用的支持,以及服务在应用上的归属。
用户除了可以从全局视角看到自己的整个系统,也可以单独缩放和旋转某一层级,详细查看主机的集群和负载情况,应用之间的调用关系,以及服务的调用量、错误率等。下面我们来一一介绍各层级展示的内容。
应用层
应用层展现内容有四个部分:
中心应用
中心应用依赖的应用
使用中心应用服务的应用
中心应用依赖的中间件
总的来说,就是展示服务自身、服务被谁调用以及服务间的依赖关系。点击应用,会弹出右侧面板,应用的QPS、RT、ERROR的信息都在上面展示。同时,动态的连线关系让我们更清楚地看到应用之间的调用关系,以及中间件组件对系统的支持,甚至底层、主机层每个主机的健康情况。
服务层
服务层就是展示各个应用提供的服务详情信息,鼠标滑过就有服务名展示,颜色表示这个服务的响应时长超过阈值(可配置),需要关注。
主机层
主机层展现的是各个应用的主机详情,点击每个主机可以看到主机的CPU、MEM、Load信息,超过阈值的指标会标记颜色。另外还会展现主机的静态信息,比如主机所隶属的机房、单元、主机名称、JVM、Tomcat版本信息等。
以往我们从出错的服务到应用,再定位到具体的机器,可能需要十几次页面跳转,而在 ARMS 3D拓扑 的三维世界中,我们在一个页面中就可以完成这些动作。三维世界的交互方式—拉近、拉远、转换视角和折叠展开,代替了页面的跳转。用户无论拉近到哪个机器或应用,都可以快速的理解自己在系统中所处的位置以及和其他层级的关系,不会因为操作链路过长而迷失自己。
接入方式
当前,ARMS 3D拓扑功能已经上线,用户只要成功接入ARMS的探针,就能以3D的方式去查看自己的系统状态,不需要额外的操作与费用。
总结
ARMS 3D拓扑功能提供了一种全新的交互方式,扩充了和应用沟通的维度,实现了360度全方位诊断性能瓶颈和故障节点,以甄别故障出现时,哪些应用和哪些关联的主机出现了问题等,从此,应用离我们如此之近。
原文地址:http://blog.51cto.com/14031893/2318908