APP下载

APM在中国联通IT运营平台应用方案研究

2019-12-10杨洁艳中国联合网络通信集团有限公司北京00033中讯邮电咨询设计院有限公司郑州分公司河南郑州450007

邮电设计技术 2019年11期
关键词:调用分布式运维

李 衡,杨洁艳,莫 穹(.中国联合网络通信集团有限公司,北京 00033;.中讯邮电咨询设计院有限公司郑州分公司,河南 郑州 450007)

0 前言

应用性能管理(APM)是实现对应用程序性能管理和故障管理的系统化解决方案。

随着分布式系统和微服务架构的应用和发展,应用性能管理成为系统运维管理和网络管理的一个重要方向,它能够对整个企业的IT 系统各个层面进行集中的性能监控,并对有可能出现的性能问题进行及时、准确的分析和处理。它能轻松地从一个IT 应用系统中找到故障点,并提供相关解决建议或方法,从而提高整体的系统性能。一个企业的关键业务应用的性能强大,可以保证企业业务应用系统的高效性和稳定性,提升企业的核心竞争力。

本文主要研究中国联通IT 运营平台应用性能管理模块建设模式,从APM 技术模型、核心功能、应用价值入手,提出中国联通IT运营平台APM 模块的建设需求、目标、系统定位、功能需求,并对APM 使用场景作出探讨。

1 研究背景

1.1 APM技术简介

1.1.1 APM模型

随着互联网技术和应用的快速发展,应用程序的管理变得越来越难,因为它们从单体架构转向高度分布的、多层、多元素的分布式应用架构,应用系统在许多情况下依赖于应用程序的开发框架。APM 概念框架旨在帮助企业考虑在IT 系统架构中需要首先关注的方法,以便企业能够快速实施并全面了解五维APM模型。APM 五维模型如图1所示。

图1 APM 五维模型

终端用户体验:图形化或数据化展示最终用户使用应用的可用性、时延、交易执行等用户视角体验。

应用架构映射:实时发现应用相关的硬件、软件组件,并对这些组件之间的交互关系以及实时交易路径进行清晰的图形化展示。

应用事务分析:记录用户的所有访问行为,并根据相应事件追踪用户的访问在架构中的路径,以及交易在路径各个节点上的性能表现。

深度应用诊断:深度代码诊断和分析,跟踪记录每个交易的代码级上下文关联,以及对资源的消耗。

数据分析:根据采集的各项应用系统指标数据,进行应用性能分析。

1.1.2 APM核心功能

APM 主要包含应用程序性能指标检测(存活、资源占用、时延等)、应用程序关键事件检测、服务调用跟踪、监控告警等核心功能。

1.1.3 APM主要应用价值

对于IT 管理层:用户体验可量化,并与同行业的性能体验比较可以发现自身差距并进行优化,提升客户满意度。

对于IT 运维人员:实现了以应用运行情况分析为核心的运维,提高运维价值,对运维数据可视化,更快发现、更准确定位、更精准地做出应急决策。

对于业务:掌握用户体验关键业务的关系,提高业务决策。

1.2 网络IT运营平台建设要求

中国联通网络IT 运营平台通过大数据、云计算技术整合网络IT 运营资源,系统采用微服务架构、容器化部署,针对中国联通总部运营支撑自身系统及运维部OSS2.0 相关业务系统,主要包括智能监控、沃运维、资源管理、客服支撑、统一采集与指令适配、数据共享、沃网络、统一流程平台与省分平台系统等,实现对各业务系统自动化、智能化、可视化的运营,面向各级管理单位与建设商提供统一的IT运营与运维服务能力。

2 建设思路

2.1 IT运营平台对应用性能管理的需求

2.1.1 主动化管理需求

随着IT 技术的不断发展、IT 架构的日趋复杂,影响IT 系统可用性的主要因素不仅仅是基础设施的性能,更多的是上层应用的问题。而中国联通传统的基础资源监测自底向上对网络、服务器、存储、中间件、数据库等基础设备进行监测,这种条块化的监测方式,因为技术原因无法深入到应用系统内部进行监测,无法从应用角度去衡量应用可用性,应用出现异常后无法主动定位异常根源。本文所述项目需要通过字节码技术、网络旁路镜像收集与分析技术、日志分析技术等,收集应用系统运行状态和性能,自动生成应用系统组件调用关系,主动快速定位故障根源,为系统性能分析、优化、故障诊断提供准确依据。

2.1.2 一体化管理需求

中国联通IT 运营平台需构建一体化运维管理体系,通过前期科学的规划和设计,采用各类不同的数据采集和分析技术,改变以往数据孤岛的运维模式,从底层IT 基础设施资源到上层的应用业务,统一纳入到一体化运维管理平台中,做到“统一收集、统一存储、统一分析、统一展示”。协助各级领导、运维主管、运维人员快速、清晰地掌握各类IT 系统的运行状态和可用性,快速分析系统异常根源,降低IT查障、排障周期。

2.2 IT运营平台中APM建设目标

2.2.1 多级应用系统监控

覆盖通信协议1~7层,通过事务处理过程的监控、模拟等手段实现OSS各业务系统端到端应用监控。

2.2.2 应用性能故障快速定位

对OSS 各业务系统各组件进行监控,迅速定位系统故障,并进行修复或提出修复建议。

2.2.3 应用性能全面优化

精确分析各业务系统及其组件占用资源情况,并根据各业务系统性能要求提出优化建议措施。

2.3 APM在IT运营平台定位

中国联通IT 运营平台中的应用性能管理模块应能够提供面向应用的性能管理整体解决方案,提供自动应用拓扑图,根据总部运维支撑系统部署应用的现有状况,针对Java 和.net等语言提供代码层事务追踪,整合浏览器与主机层面的功能,能够从应用的宏观视角分析系统运行的整体状态,同时基于端到端细化追踪分析代码及SQL执行性能。应用监控需同时支持应用端、浏览器端和移动端的应用性能监控。

2.4 APM建设功能要求

根据中国联通OSS 各运维应用系统技术架构现状,提出如下IT运营平台APM模块建设功能要求。

2.4.1 多种开发语言与架构支持

可以对多种开发语言、框架及应用中间件的应用代码行执行时间、SQL 语句的执行时间以及应用中调用其他服务的时间等提供监控支持,多种开发语言支持,支持对J2EE,.net,PHP,Python,Ruby,Node.js 等开发语言的应用性能监控,支持的框架包括:

开发框架:CXF、JSF、Spring、Hibernate、HttpClient、Struts、EJB2、EJB3、OSB、Apache Turbine、Dorado、Netty。

应用服务器:Weblogic、Websphere、Tomcat、Jboss、Jetty、Resin、TongWeb。

传输中间件:RabbitMQ、ActiveMQ、IBM MQ、Tonglinkq、RocketMQ。

数据库:Oracle、SqlServer、MySQL、Postgres、DB2、Sybase、Informix、Mongodb、Redis、Memcached。

分布式协议:XMLRPC、hsfRPC、phpRPC、RMI、Dubbo、HTTP、Thrift。

2.4.2 应用拓扑自动发现

系统能够根据应用中间件的部署、URL 请求及参数,自动识别出不同的业务系统,并能跟踪、串联应用系统从前端至后端的整个交互过程,自动识别并生成业务应用端到端交易拓扑;能够在调用链视图上展示节点自身响应时间、调用的响应时间及吞吐量等关键性能指标。能够根据应用代码的调用关系,自动呈现该应用的全局调用拓扑图及单事务调用拓扑图,将性能瓶颈通过不同颜色及数据进行展现,基于应用环境建模,应用拓扑提供调用层、节点、事务、SQL、层间事务调用等性能信息,实现将业务、应用、逻辑的资源关联图展现。

2.4.3 跨应用调用链追踪

针对复杂的应用架构,提供“应用系统→集群→Agent”3层应用监控模型,能够将相同业务功能的节点定义为同一集群,通过3层应用架构视图,能够在一张拓扑中自动发现和展示完整的跨应用调用关系,从业务请求入口的角度,端到端地分析复杂应用系统分布式应用的运行情况。

2.4.4 异常性能剖析

对于异常业务,能够根据监控管理需求进行线追踪。对单个事务进行自定义的性能剖析,可设定剖析名称、采样周期、最大跟踪数、持续时间参数。能够收集到关键事务的CPU消耗、线程和锁等数据。

2.4.5 单用户缓慢调用链追踪

调用链追踪记录单个用户缓慢请求在整个应用链路的调用详情,包括调用路径中每个节点的代码执行情况、数据库性能等。通过自动还原的单个用户请求调用链路,快速定位影响业务性能的故障节点,并可通过钻取故障节点,深入查找代码级原因。

2.4.6 SQL语句性能分析

系统能够监控应用系统中SQL 语句的执行情况,包括执行时间、吞吐量、数据库操作类型等,定位程序代码与SQL 语句的调用关系。同时根据预设阈值,自动捕获慢SQL 语句执行。提供SQL 语句执行时间、执行时长、调用堆栈信息。

2.4.7 后台服务性能分析

系统能够监控非Web事务,如:EJB、JMS等后台服务的平均响应时间、吞吐量、服务器CPU/内存使用情况等指标。

2.4.8 外部服务性能监控

能够记录分析所监控的应用系统中调用其他外部服务的平均响应时间、执行时间比重、吞吐量等指标,并能够在拓扑视图上清晰展示。

2.4.9 监控事务自定义聚合

能够根据http 请求中的信息进行自定义汇聚,包括但不限于URI、请求方法、请求参数、cookie、session、请求主机IP 地址、请求主机端口号、客户端IP 地址;能够根据类或者方法的信息进行自定义汇聚,包括但不限于方法中的参数、类名、包名、方法名、线程ID、线程等。

2.4.10 自定义参数管理

平台能够对Web 请求过程中的参数进行收集和分析,包括URL、session id、cookie 中的参数、session 的属性、http请求参数、http header中的参数。

2.4.11 系统错误分析

应用系统错误率,是指应用程序返回异常数据的比率。异常数据指的是底层应用代码所抛出的异常信息、http 无法响应、Web 无响应等错误信息,提供异常发送时间、请求事务、主机名、请求参数、自定义参数、错误信息、调用栈信息等数据,与应用程序运行日志中的错误信息等无关。系统会根据错误类别进行归类展示。

2.4.12 应用告警分析与通知

提供了完善的预警和告警机制,将提供邮件、webhook 等告警方式,用户可以根据管理需要,对应用系统性能管理中涉及的关键指标以及相关人员进行定义,包括警报条件设置、应用系统设置、通知方式设置、人员设置等。异常性能指标告警指标包括JVM 内存、事务最大响应时间、平均响应时间、最小响应时间、错误次数错误率、无数据告警等。

2.4.13 JVM性能分析

系统支持对JVM 运行状态进行数据获取,包含JVM 中堆内存、非堆内存的使用情况、垃圾回收情况、会话和线程情况、异常散点捕获和展示。可以帮助分析系统是否有内存溢出或应用运行异常。

2.4.14 IT运营分析

系统实时跟踪应用性能并将应用性能信息存储到管理服务器的性能数据库中。用户可以通过管理界面实时查看应用系统过去一天、一周的历史性能记录,及时了解应用系统的各种异常波动。

2.5 APM应用场景及技术实现简析

以下以分布式链路监控追踪分析为例,阐述APM在IT运营平台的应用。

随着中国联通网络IT 应用架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。

一个典型的分布式应用如图2所示。

图2 典型分布式应用场景

中国联通急需一种能追踪其调用链的APM 应用方案,以快速完成问题的定位。

2.5.1 应用场景

分布式调用链就是将一次分布式请求还原成调用链路,运维人员可通过客户端或Web 浏览器查看一次分布式请求的调用情况,比如各个节点上的耗时、请求具体打到了哪台机器上、每个服务节点的请求状态等。具体应用场景要求如下:

a)故障快速定位。通过调用链跟踪,一次请求的逻辑轨迹可以完整清晰地展示出来。开发中可以在业务日志中添加调用链ID,通过调用链结合业务日志快速定位错误信息。

b)各个调用环节的性能分析。在调用链的各个环节分别添加调用时延,可以分析系统的性能瓶颈,进行针对性的优化。通过分析各个环节的平均时延、QPS等信息,可以找到系统的薄弱环节,对一些模块做调整,如数据冗余等。

c)数据分析。调用链绑定业务后查看具体每条业务数据对应的链路问题,可以得到用户的行为路径,经过了哪些服务器上的哪个服务,可汇总分析应用在不同业务场景的性能表现。

d)生成服务调用拓扑图。通过可视化分布式系统的模块和它们之间的相互联系来理解系统拓扑。点击某个节点会展示这个模块的详情,比如它当前的状态和请求数量。

2.5.2 技术实现

服务追踪体系,可参照Google 的Dapper 的体系,通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪(包括每个请求的完整调用链路和每个服务的性能数据),方便工程师快速定位问题。分布式链路监控追踪分析可选择如下技术。

Zipkin:参考Dapper 的体系实现,为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪的目的。Zipkin 通过Brave 的组件来实现对应用内部的性能分析数据采集,通过实现一系列的Java 拦截器,来做到对http/servlet 请求、数据库访问的调用过程跟踪。然后通过在spring 类的配置文件里加入这些拦截器,完成对Java应用的性能数据采集。

Pinpoint:Pinpoint 是开源在github 上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的。pinpoint通过JavaAgent的机制来做字节码代码植入,实现加入traceid 和抓取性能数据的目的。

技术对比如表1所示。

系统可根据现有应用系统的技术架构灵活地采用分布式链路监控追踪技术。

表1 技术对比

3 结束语

中国联通IT运营平台合理采用APM 技术,可有效增强IT 应用性能管理水平,应对虚拟化技术、云化技术、容器技术、集群化技术发展下IT 系统带来的管理挑战,能够对中国联通网络IT 的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO)。

猜你喜欢

调用分布式运维
核电项目物项调用管理的应用研究
运维技术研发决策中ITSS运维成熟度模型应用初探
风电运维困局
分布式光伏热钱汹涌
杂乱无章的光伏运维 百亿市场如何成长
分布式光伏:爆发还是徘徊
基于系统调用的恶意软件检测技术研究
配电线路的运维管理探讨
基于DDS的分布式三维协同仿真研究
西门子 分布式I/O Simatic ET 200AL