apm系统(deeptracing-apm基础)

天龙生活圈 68418次浏览

最佳答案

随着公司业务的与日俱增,各个系统也越来越复杂,服务间的调用,服务的依赖,以及分

析服务的性能问题也越棘手,因此引入服务追踪系统尤为重要。通过跟踪请求的处理过

随着公司业务的与日俱增,各个系统也越来越复杂,服务间的调用,服务的依赖,以及分 析服务的性能问题也越棘手,因此引入服务追踪系统尤为重要。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪(每个请求的完整调用链路,收集调用链路上每个服务的性能数据),方便工程师能够快速定位问题。


APM 工具与传统的性能监控工具的区别在于,不仅仅提供一些零散的资源监控点和指标,其主要关注在系统内部执行、系统间调用的性能瓶颈分析,这样更有利于定位到问题的具体原因。APM 致力于检测和诊断应用性能问题,从而能提供应用预期的服务水平。

系统架构

在逻辑上分为四部分: 探针, 平台后端, 存储和用户界面(UI)

· 探针

基于不同的来源可能是不一样的, 包括,应用进程的调用链、关键日志以及应用进程所在操作系统主机的资源情况,包括CPU、MEM、IO、Disk、Sysfile等。Agent 将数据格式化为 DeepTracing-APM 适用的格式,推送给DeepTracing-APM系统,推送方式包括网络同步推送和kafka异步推送。

· 平台后端 包括两大功能:

第一、对于Tracing数据,支持数据聚合, 数据分析以及驱动数据流从探针到用户界面的流程。高效数据建模,保障数据访问的高时效性;

第二、对于植入agent的应用进程,可以通过反向字节码增强的方式,反向调试应用进程,做到在不修改代码、不重启应用进程的情况,即可实现系统bug的定位和快速修复。

· 存储

目前对于日志的存储,采用ELK组件,对于tracing信息使用MySQL来存储。

· 用户界面(UI)

一个基于接口高度定制化的Web系统,用户可以可视化查看和管理 DeepTracing-APM 数据。


关键技术——JVMTI-Native Agent

业内APM的产品大多数采用的技术是 java agent作为探针抓手,比如具有代表性的开源产品SkyWalking,受到JavaAgent技术栈局限性,例如Jva Agent是在JVM 启动后期才被加载,该Agent是运行在JVM运行时的容器里,它会受到JVM 挂起或 Java 运行时问题的影响,并且不能报告某些类型的错误信息。如果不能正常发送监控数据就要堆积在JVM操作里,影响应用系统性能。此外,还有某些需求也无法兼顾,如,零感知入侵、探针的稳定性等方面。

因此本次采用更低层(JPAD层)技术栈,Native Agent技术,调用JVMIT方式,对JP(Java process)进行监控、控制。