工作原理

Java探针原理

Java Agent基于JDK 提供的Instrumentation机制,在class文件被加载的时候,通过字节码技术,动态对Framework、数据库、NoSQL、Web Service、组件等特定方法实施监控,从而获得方法执行时间、数据库调用时间、NoSQL响应时间以及外部服务响应时间;并在这些时间超过一定阈值时,抓取调用堆栈。

UniAgent原理

Linux系统:UniAgent在Linux系统中安装Preload模块,Preload技术是Linux系统自身支持的模块预加载技术,进程加载器在应用进程启动时加载指定的预加载模块,预加载模块识别进程类型(Java、.Net、PHP、Nginx等)后加载特定的应用探针,应用探针实现采集性能数据的功能。如果应用部署在docker等容器中,UniAgent检测到容器启动后,会把应用探针自动挂载到容器内部,并在容器内部安装Preload模块,然后通过预加载模块加载应用探针。

Windows系统:UniAgent在Windows系统中安装一个驱动,此驱动在系统中监听进程启动事件,应用进程启动时回调驱动加载指定的预加载模块,预加载模块识别进程类型(Java、.Net等)后加载特定的应用探针,应用探针实现采集性能数据的功能。

Java Agent基于JDK 提供的Instrumentation机制,在class文件被加载的时候,通过字节码技术,动态对Framework、数据库、NoSQL、Web Service、组件等特定方法实施监控,从而获得请求调用次数、方法执行时间、数据库调用时间、NoSQL响应时间、外部服务响应时间、异常、堆栈以及方法参数。

img

Kubernetes UniAgent原理

  • APM探针:采用Adminisisson Webhook+InitContainer自动注入。

  • Infra探针:采用daemonset自动扩展Node节点。

  • Collector:采用Statefulset自动扩展。

  • Kubernetes 集群监控:对接Prometheus。

img

产品监测原理

探针采用两级架构,包括运行在被监控应用上的Agent部分和运行在独立服务器上的Collector部分。其中 Agent部分的工作原理如上图所示,负责对应用进行嵌码和原始的数据采集,采集后的信息全部通过局域网直接传输到Collector上,由Collector进行数据的统计和关联,并最终上报到平台的数据中心上。

由于Agent会采集全量的业务和性能数据并实时传输到Collector上,因此Agent与Collector之间必须保证通畅的本地千兆网络连接。Collector支持Failover的高可用,对一组Agent可以部署多台Collector服务器,当其中个别服务器出现故障无法正常工作时,探针可通过Failover机制将数据实时传输到其他Collector上,以实现数据采集的高可用。Collector的高可用机制如下图所示:

results matching ""

    No results matching ""