产品白皮书
# 前言
# 概要
随着企业IT架构的持续演进升级,云计算、大数据、AI人工智能等IT新技术已广泛应用于各组织的数字化转型中,并作为业务应用的核心基础设施发挥着举足轻重的作用。各业务组织越来越倚重IT信息化系统提供产品与服务,业务应用系统的可用性和用户体验决定着业务的可持续性和客户服务质量,IT运维及开发人员需要高度关注业务系统的持续可用性及应用性能。
IT架构从单体应用架构,逐渐发展到分布式、微服务等架构并在组织的各类应用中长期并存。因此对于如何支撑好不同应用架构的应用性能管理和分析,是一个巨大的挑战。另外一方面,全面信创时代的到来使得国产化的IaaS、PaaS等基础设施和以及业务领域应用得到全面蓬勃发展,同时也带来的大量兼容性及性能低下的问题,使得在中高端核心业务支撑等场景中全面的上下游适配和性能优化提升显得极为重要。
基于上述背景及现状,金蝶天燕云计算股份有限公司推出了金蝶Apusic应用性能管理软件(ApusicApplication Performance Management,简称AAPM)产品用于解决对数据中心、云计算(公有云、私有云和混合云)、以及容器云等环境中各类单体架构应用、分布式应用以及微服务架构应用的实时监控,帮助用户定位和诊断性能问题,并进行深入分析和优化,改善用户体验。
# 范围和读者
本文面向技术决策者和企业架构师、应用开发工程师及应用系统运维开发工程师。
阅读本文第二章和第三章,您可以从宏观上对金蝶Apusic应用性能管理产品有所认识,如果您想全面了解金蝶Apusic应用性能管理产品的全貌,建议您通篇阅读全文。
# 约定与术语
一些约定的缩略词诠释:
- APM
应用性能管理(Application Performance Management)
- CMDB
配置管理数据库(Configuration Management database)
- AIOps
智能运维(Artificial Intelligence for IT Operations)
- Apdex
性能指数,(Application Performance Index)
- DEM
数字化体验监控
# 产品概述
# 应用的可观测性
可观测性的定义,即能够将系统的内在状态,通过采集,分析,处理后,通过合理的聚合,归纳,展示指标数据,让人可以在最短时间内了解到系统发生的一切。
具备可观测性的系统,运维以及研发人员可以直观的观察到系统的整体运行状态是否健康,同时又能轻易的深入到运行的各个细节角落。在正常运行时,观测系统能对系统负载进行评估,对运维操作提供建议。在发生故障时,可协助快速定位和修复问题。在运维自动化和智能化的大趋势中,系统的可观测性是其中最基础的一环。
当前主流可观测性系统主要基于Metrics、Tracing、Logging三类数据构建可观测的分析平台。

图2-1 Metrcis、Trace、Log
图2-1来自PeterBourgon 在2017年分布式追踪大会上的演讲报告,阐述了这三类数据以及之间的关系,参考https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html。
- Metrics
记录一组描述过程或者活动的数据,通常是跟随着时间变化的可聚合的时序类型数据,可压缩、存储、处理和检索。
Metrics 一般是用来计算 Events发生数量的数据集,这些数据通常具有原子性,且可以聚合。从操作系统到应用程序,任何事物都会产生Metrics数据,这些数据可以用来度量操作系统或应用程序是否健康,或者是用以计算一段时间内请求的平均延时。
- Logging
Logging 描述的是一些列离散事件,在缺乏有力的监控系统时,Logging数据通常是工程师在定位生产问题时最直接的手段。如果说 Metrics可以告诉你系统或者应用程序出现问题,那么 Logging就可以告诉你为什么会出现问题。
- Tracing
Tracing 是通过有向无环图的方式记录在分布式系统中发生的 Events之间的因果关系。云原生场景下,多个服务之间或多或少存在着依赖关系,一次Tracing 通常会经过多个服务(Span),甚至在高度复杂的分布式系统中,一次Tracing 包含数以万计的 Span 也是可能存在的。再者,Tracing更多的是关注这种端到端系统之间的联系,基于该需求,分布式追踪系统应运而生。
三类数据产生的过程及使用场景:
在一次用户请求发生时,可以记录这次请求延时、请求发生的次数等 Metrics数据,用以量化展示。
同时也可以记录这次请求发生时经过多个服务的 Tracing数据,这样可以更加直观的了解整个请求在各个服务中处理过程。
可以在发生错误时记录详细的 Logging数据(根据日志输出级别,通常在生产环境推荐只在发生错误时记录日志)。
Metrics数据更倾向于节省资源,Logging倾向于无限增加,会频繁超出预期的容量(当然可以通过告警的方式去预防),而 Tracing 数据则介于两者之间。
AAPM主要采集Tracing数据进行链路及性能分析及数据展示等场景。关于Metrics及Logging数据则分别对应的金蝶Apusic监控平台软件(AMP)和金蝶Apusic智能日志平台软件(AILP)两款产品,具体请参考对应的白皮书和用户手册进一步了解。
# 应用性能管理与分析
# 应用性能管理简介
应用性能管理是指对企业的关键业务应用进行监测、优化,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO),为企业带来更多的商业利益。
应用性能管理能够对整个企业的IT系统各个层面进行集中的性能监控,并对有可能出现的性能问题进行及时、准确的分析和处理。它能轻松地从一个IT应用系统中找到故障点,并提供有相关解决建议或方法,从而提高整体的系统性能。
# 应用性能管理定义
2016年,GartnerResearch (opens new window)将其APM定义更新为三个主要功能维度:
数字体验监控(DEM)
应用程序发现,跟踪和诊断(ADTD)。结合了三个以前独立的维度(应用程序拓扑发现和可视化,用户定义的事务分析和应用程序组件深入研究)
应用程序分析(AA)
# 应用性能管理概念框架
分布式及微服务架构的流行,使得应用程序本身变得越来越难以管理,因为它们转向高度分布的,多层,多元素的构造,在许多情况下依赖于应用程序开发框架。APM概念框架旨在帮助优先考虑首先关注的方法,以便快速实施和全面了解五维APM模型:

图2-2 应用性能管理概念框架
- 终端用户体验
衡量从用户请求到数据再返回的流量传输是捕获最终用户体验(EUE)的一部分。此测量的结果称为实时应用程序监视(又称自顶向下监视),它具有被动和主动两个组件。被动监控 通常是使用网络端口镜像实现的无代理设备。主动监控 由预定义的合成探针和Web机器人组成,用于报告系统可用性和业务事务(即业务方自行埋点)。
- 应用架构映射
应用程序发现和依赖关系映射(ADDM)解决方案用于自动执行将事务和应用程序映射到底层基础架构组件的过程。
- 应用事务的分析
关注用户定义的事务或对业务社区有一定意义的URL页面定义。
- 深度应用诊断
深度应用诊断(DDCM)需要安装代理,通常针对中间件,侧重于Web,应用程序和消息服务器。
- 数据分析
获得一组通用的度量标准以收集和报告每个应用程序非常重要,然后标准化有关数据并呈现应用程序性能数据的常见视图。
# 金蝶Apusic应用性能管理
金蝶Apusic应用性能管理软件实现对数据中心、云计算 (公有云、私有云和混合云)、以及容器云等环境中各类单体架构应用、分布式应用以及微服务架构应用进行非侵入式的实时观测,获取服务端性能数据,并通过对业务应用从代码层和环境层帮助用户定位和诊断性能问题,并进行深入分析和优化,改善用户体验。
金蝶Apusic应用性能管理软件在应用开发和IT运维领域解决如下核心痛点问题:
各种语言编写的业务应用程序的性能管理及分析
多种混合应用开发架构的应用程序性能及故障诊断
多模块服务、多实例、深层次调用的复杂依赖环境下的链路追踪
结合指标和监控日志的一体化观测能力支撑
# 体系结构
# 架构概览

图3-1 金蝶Apusic应用性能管理产品架构图
金蝶Apusic应用性能管理软件支持Java、.NetCore、PHP、Golang、Python等语言开发的业务应用的性能实施监控和分析诊断。通过无侵入式的Agent探针以及代码埋点等多种方式采集应用性能指标数据并基于HTTP和gRPC等标准协议上报至服务端进行统一存储和分析展示,供应用开发人员和系统运维人员及时诊断分析应用性能问题。
金蝶Apusic应用性能管理软件支持ElaticSearch、TiDB分布式数据库、关系数据库等多种存储方式,用户可以根据运行环境和对数据存储的需要选择合适的存储解决方案。
# 规范的全面支持
金蝶Apusic应用性能管理软件全面支持OpenTracing标准规范(https://opentracing.io)。
OpenTracing旨在标准化Trace数据结构和格式,其目的是:
不同语言开发的Trace客户端的互操作性,Java/.Net/PHP/Python/NodeJs等语言开发的客户端,只要遵循OpenTracing标准,就都可以对接OpenTracing兼容的监控后端。
Tracing监控后端的互操作性,只要遵循OpenTracing标准,企业可以根据需要替换具体的链路追踪监控后端产品。
OpenTracing通过提供平台无关、厂商无关的API,正在为全球的分布式追踪系统标准。
# 系统技术原理

图3-2 Apusic应用性能管理技术原理示意图
- Agent探针及实现技术
Java探针无需侵入Java业务应用程序代码即可实现应用链路及性能指标数据的采集,且对业务应用的损耗极低。非Java应用可以采用服务器的插件及借助 AAPM SDK程序代码埋点方式实现应用的性能数据采集与上报到服务端。
- 应用服务实例注册
部署Agent探针将随业务应用服务一起启动,并根据配置好的AAPM Server服务端地址注册应用服务实例信息,并待有请求响应后上报链路数据。AAPM支持HTTP、gRPC等协议传输数据。
- Trace数据的采集与上报
应用程序有请求和响应后,Agent探针即可捕获请求调用链的完整数据,进行适当的优化处理后发送到服务器端。
- Trace数据分析与处理
服务端对Trace等数据进行存储和必要的分析处理之后,支持GrahQL+HTTP的方供客户端及Web管控端应用做数据查询及可视化展示。
# 高可用集群

图3-3 金蝶Apusic应用型管理软件高可用集群架构
- Agent探针
收集数据并根据APM需求重新格式化它们(不同的探测支持不同的数据源)。
- APM Server
支持数据聚合、分析和驱动从探测到UI的进程流。分析包括APM本地的轨迹和指标,包括Istio和Envoy遥测、Zipkin轨迹格式等。甚至可以使用可观察性分析语言(Observability analysis Language)来定制本地指标和Meter System来定制扩展指标的聚合和分析,通过Zookeeper集群管理实现高可用。
- 数据储存
通过一个开放、可插拔的接口存储APM数据。可以选择如ElasticSerch、H2或ShardingSphere管理的MySQL集群的关系数据库存储方案,用户也可以实现实现自己的存储方案。
- Web UI
Web管控端应用,实现APM终端用户数据可视化和管理APM数据。通过epalived+Nginx实现web管控端应用的集群高可用。
# 微服务架构支持
金蝶Apusic应用性能管理软件支持主流的微服务开发及治理框架技术构建的微服务应用,包括采用Dubbo、SpringCloud等微服务框架,以及云原生环境下Istio服务网格技术栈开发的微服务应用。
以下是一个基于SpringCloud微服务框架开发的应用。

图3-4微服务架构应用在AAPM中的链路拓扑
在图3-4中user代表客户端,projectA、B、C为3个微服务,localhost:8761为注册中心,H2为内存数据库,localhost:9092为Kafka,www.baidu.com:80为三方站点。其调用关系分别是A->B->C,其中B服务还与内存数据库H2产生了调用关系;C服务与消息中间件Kafka及站点wwww.baidu.com产生调用关系。实际上链路追踪所作的事情就是详细记录A->B(B->H2),A->C(C->Kafka&www.baidu.com)这两条完整链路上的详细调用信息,例如接口响应结果,耗时等。
我们以上面的调用链为例分析下链路追踪信息的具体组成和传递形式,以便进一步理解在微服务架构下分布式链路追踪系统的原理和概念。具体逻辑示意图如下:

图3-5 调用链追踪技术实现原理
如上所示,分布式链路追踪所监控的对象就是一次次调用所产生的链路,图中所示的就是一条完整的链路(Trace),系统会通过唯一的标识(TraceId)对此进行记录。而链路中的每一个依赖调用都会生成一个调用踪迹信息(Span),最开始生成的Span叫做根Span(Root Span),后续生成的Span都会将前一个Span 的标示(Sid)作为本Span信息的父ID(Pid)。
这样以此类推,Span信息就会随着链路的执行被进程内或跨进程进行上下文传递,通过Span数据链就能将一次次链路调用所产生的踪迹信息串联起来。
# 灵活的部署方式
金蝶Apusic应用性能管理软件支持多种灵活的部署方式,以满足用户复杂的基础架构环境。
- 二进制文件部署
支持在物理机和虚拟机上以二进制文件部署方式进行部署和运行,提供便捷的部署工具支持快速拉起生产环境高可用的集群。具体软硬件环境参考3.8运行环境。
- Docker容器环境部署
提供标准Docker镜像,用户可以使用容器化方式部署运行。
- Kubernetes容器云部署
针对大规模容器编排环境,提供Yaml部署描述文字间,支持在Kubernetes容器云平台部署运行。
# 可扩展的开发
金蝶Apusic应用性能管理软件基本设计模式就是基于微内核+插件:通过建立标准的插件规范,通过微内核控制各个插件的生命周期,为APM提供了强大的扩展性。

图3-6 金蝶Apusic应用性能管理插件体系
- 代理探针
支持目前多大数主流的框架和中间件探针,也可以根据需要开发自己的的探针插件。
- 存储插件
支持Elasticsearch、InfluxDB、JDBC、TiDB等,也可以根据自己的需要进行扩展,譬如对接Clickhouse。
- 集群管理
支持Zookeeper、Nacos、Consul、ETCD、K8s等,也可以根据自己的需要进行扩展。
- 配置插件
支持Zookeeper、Nacos、Apollo,Consul、K8s configmap等,,也可以根据自己的需要进行扩展。
# 运行环境
金蝶Apusic应用性能管理软件的部署运行实现对各种软硬件环境的支持,包括但不限于:
| 分类 | 项目 | 适应配置 |
|---|---|---|
| 硬件与操作系统 | IBM i系列 | OS/400 |
| 硬件与操作系统 | IBM p系列,Open Power系列 | AIX,Linux |
| 硬件与操作系统 | HP IA-64 | HP-UX |
| 硬件与操作系统 | HP PA-RISC | HP-UX |
| 硬件与操作系统 | Sun SPARC | Solaris |
| 硬件与操作系统 | IA架构工业标准服务器(联想、浪潮、长城等) | Windows Server,Linux |
| 硬件与操作系统 | 国产芯片(鲲鹏、龙芯、申威、飞腾) | 中标Linux等 |
| JDK | Sun JDK | 1.5,6.0 |
| JDK | Open JDK | 1.5,6.0 |
| 数据库系统 | Oracle | Oracle数据库各版本 |
| 数据库系统 | Oracle | MySQL各版本 |
| 数据库系统 | IBM | DB2各版本 |
| 数据库系统 | Microsoft | SQL Server各版本 |
| 数据库系统 | 达梦 | 达梦DM 5,DM 6 |
| 数据库系统 | 人大金仓 | 人大金仓 KingBaseES各版本 |
| 数据库系统 | 东软 | OpenBase数据库 |
| 数据库系统 | 神舟通用 | 数据库标准版、企业版、安全版 |
| 存储服务 | ElaticSearch | V6.0及以上版本 |
表3-1 Apusic应用性能管理软件支持的环境
# 功能与特性
# 应用实时拓扑
通过AAPM的应用实时拓扑功能,用户可以真实还原分布式系统中各服务的依赖调用关系形成实时、真实的应用拓扑图,实时掌握各微服务实例的健康状态和运行性能指标。
用户可以通过点击拓扑实例,了解该节点的具体APM相关数据。

图4-1 AAPM应用实时拓扑图
主要特性:
支持服务拓扑图和关系图;支持拓扑分组,可将相关服务分在一组,便于拓扑图查看;
支持单击弹出环形菜单查看服务调用链、服务实例概览、服务端点性能及对比、服务告警事件等。
针对异常的服务节点,通过高亮异常状态显示,性能较差的节点连线突出显示,方便快捷定位性能几故障瓶颈节点。
# 分布式调用链追踪

图4-2 分布式链路追踪
金蝶Apusic应用性能管理软件支持分布式调用链追踪能力。支持服务端点列表,包括端点入口(点链接可直接进入服务端点性能及对比)、所属服务、状态、开始时间、总耗时、追踪ID等;支持查看链路追踪,包括追踪ID、起始时间点、持续时间、跨度等。
# 慢链路诊断分析
针对单位时间段的一次完整请求响应链路,金蝶Apusic应用性能管理软件支持按照响应时间、吞吐量、Apdex等维度将性能低下的慢链路进行排序,用户可以针对较慢的历史请求进行进一步诊断分析。
AAPM支持查看慢链路追踪,包括追踪ID、起始时间点、持续时间、跨度等,支持对同一个端点的性能指标数据进行历史性能指标对比,帮助了解性能波动和下降等变化情况。
# 慢SQL分析
大多数的业务系统都需要采用数据库存储业务数据并进行分析和展示,通常这部分的应用性能瓶颈可能存在于SQL语句以及相关存储过程实现中。金蝶Apusic应用性能管理软件支持各种关系数据库和绝大部分的NoSQL数据库系统的性能诊断分析。
支持数据库的平均响应时间、数据库访问成功率、数据库流量、访问延迟等性能指标。可以将用户程序中的底层SQL语句进行提取收集,发现执行耗时的 SQL 语句,辅助用户进行程序代码改进。

图4-3 数据库SQL性能分析
# 性能实时剖析

支持满足一定条件的调用链性能剖析,包括Span链和线程堆栈;线程堆栈包括线程堆栈树、持续耗时、每阶段持续续耗时、线程Dump数。
# 监控与告警
针对服务、端点、数据库等关键对象设置告警规则条件,超过预设阈值即可生成告警事件并通知给用户。支持服务响应时间百分比、成功率、SLA告警事件查看;支持服务实例响应时间告警事件查看。
支持和Apusic智能告警平台集成,通过更多告警策略及通知方式(邮件、短信、微信、钉钉、云之家、Webhook)投递告警事件。
# 与应用服务器AAS的集成
支持和Apusic应用服务器的快速集成,部署web应用时可同时将Java探针集成到应用服务器启动脚本中一并部署。支持通过AAS的管控台对指定的应用实例进行性能监控,并进行相关性能指标的可视化分析及展示。
# 多种语言应用支持
支持JAVA、.NET Core、PHP等语言开发的应用的性能管理及诊断分析, 支持JAVA、.NET Core、PHP等语言的探针统一下载及版本管理。
# 信创环境适配
金蝶Apusic应用性能管理软件全面适配信创环境,保障各业务应用稳定运行,提升业务服务终端用户体验,积极参与产业链生态建设。
- 芯片
鲲鹏、飞腾、申威、海光、兆芯 等CPU架构的国产服务器
- 操作系统
麒麟操作系统、UOS操作系统、普华操作系统等
- 中间件
金蝶天燕、东方通、宝兰德、普元、中创等应用服务器中间件
- 数据库
人大金仓、达梦、南大通用、openGauss、神舟通用等数据库
# 应用场景
- 全链路业务可用性感知
通过服务调用链路,形成多节点实例的服务网络拓扑图。针对一次请求响应过程,获取并反馈参与请求的各服务节点性能指标,多维度展示性能情况。
- 关键业务服务可用性监测
将端点和业务定义相关联,从业务视角了解相关的端点链路数据,对用户所关注的关键业务的端到端的性能指标进行全面监测。
- 应用架构升级及性能优化
挖掘分析应用架构中各服务实例节点的性能状况,发现瓶颈的服务实例,并进行分析和代码优化改进,提升优化整个分布式架构的性能。
- IT全栈融合监控与管理
通过与AMP基础设施监控、AILP日志平台以及AAalrm智能告警平台的监控融合,用户真正可以实现metrics、tracing、loggin、alert等观测数据的一体化分析,可以深层次分析业务故障现象,精准定位问题原因,为进一步实现AIOps智能化运维的提供基础支撑。
# 结论
一方面,金蝶Apusic应用性能管理软件遵循国际标准规范、并通过良好的兼容性和扩展性,成为用户企业应用基础架构和监控运维体系的核心组成部分,帮助用户全面监控企业级应用的运行健康状况,提升终端用户体验。
另一方面,金蝶Apusic应用性能管理软件全面适应国内信息化的需求及发展趋势,全面适配信创生态上下游环境。通过和金蝶Apusic应用服务器的无缝集成、以及可扩展的内核插件体系、高可用集群技术,为企业级应用提供基础IT架构支撑和精细化的业务应用运维管理能力。