智能运维DeepTracing之APM监控系统

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

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

系统架构

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

· 探针

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

· 平台后端

包括两大功能:

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

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

· 存储

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

· 用户界面(UI)

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

关键技术——JVMTI-NativeAgent

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

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

利用JVMTI接口,将探针植入JP(JavaProcess,java服务进程)中,采集JP的行为。通过内网链路与数据传输协议建立网络链接,将采集的信息归并到采集模块中,方便后续处理。

最后

产品目前处于研发期间,开发过程中将会遇到的技术问题,发帖子与大家共享。有关于APM研发、JVMTI方面的开发的小伙伴,欢迎交流讨论。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值