API性能监控 【ApiHelp】-- 组件Monitor 核心功能实现

news2024/11/24 11:33:12

        上篇文章介绍了组件Monitor主要设计和功能Monitor组件设计,现在来具体看看Monitor组件的实现。

1、Java Agent实现AgentMain

      前面已经介绍了Java Agent相关知识,现在来具体实现下。

     实现AgentMain类:

     AgentMain为agent的入口类,程序attact成功后会执行该类的 agentmain方法,在agentmain方法中主要实现自定义类加载器 加载Enhance组件jar 和核心方法invoke的调用。

 MANIFEST.MF文件内容:

 2、TraceMonitorHandler类

TraceMonitorHandler是具体实现调用链路日志收集的类,其实现了 before、after、methodException、httpClientEnhance方法。

before方法:用于记录请求进入API是日志信息,在记录日志之前,会优先判断当前请求是否为新请求,如果为新请求则先清除缓存,在进行日志记录,同时记录当前方法的入口方法名称,以及请求线程到缓存中。

    after方法:该方法用于记录方法结束时日志信息,为了多请求安全问题,在记录之前同样会做请求线程的校验。同时当方法结束之后判断该请求是否已经结束,判断手段为当前方法名称是否为入口方法名称,如果是则认为是当前请求结束。如果方法未结束,说明存在内部调用,则继续记录。

     当请求结束,则进行日志写处理。

 方法结束:

methodException方法:该方法用于记录方法异常处理,因为方法结束处理正常结束,也有可能是抛出了异常,在Enhance组件中我们已经对入口方法进行了异常捕获操作,当该方法被调用时,旧意味着当前请求抛出了异常,也意味着请求调用结束。所以他的工作和after类似。

 httpClientEnhance方法:该方法用于监控执行链路中外部调用所耗费的时间。在Enhance组件中已经对指定的http方法继续进行了增强,当该方法被调用时,则意味着目标程序中http请求结束。

       该方法会记录当前方法中该http请求时间。需要注意的时该方法入参 uuidKey为请求标识,需要用来识别当前请求是当前调用节点上被调用的。因为当前请求方法可能在程序中被多次调用,如果不记录当前节点,无法定位http请求是当前方法什么时候调用的(因为需要在回显时的节点上显示)。

 sqlEnhance方法:该方法和 httpClientEnhance方法思路一样,但是用来记录sql调用耗时信息。

 日志记录内容展示: 

 链路日志trace.log:

当日志记录完成之后,就可以通过相同方法中  结束时间 -  开始时间 得到方法调用耗时。整个解析工作就在view.jar中实现。

http记录日志http.log:

 sql.log 和http记录格式一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/668474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】项目实战——快速0基础上手五子棋游戏(内附源码)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 如果你是从现在关注的老粉的话,你可能会有点疑惑“how old are you?”(怎么老是你?) 唉,没办法我也不想的,但是月末了参加新星计划和2023年博客之星的评选只能更…

职业生涯规划书600字范文

职业生涯规划书600字范文篇1 记得高中时老师就告诉我们要认识自己,“认识自己”,仅仅四个字,实践起来是何等的艰难,古往今来那么多仁人志士为了能认识自己,不断实践,不断创新,可又有几个能在生命…

软件安全技术复习内容

软件安全技术 边复习边写的,有错误及时指正第一章 软件安全概述零日漏洞安全威胁分类CIA安全基本属性PDRR模型软件安全的主要方法和技术基本方法主要技术 第二章 软件漏洞概述概念软件漏洞成因分析软件漏洞分类基于漏洞成因的分类基于漏洞利用位置的分类基于威胁类型…

FPGA基础知识-编程语言接口

目录 学习目标: 学习内容: 1.PLI的使用 2.PLI任务的连接和调用 3.内部数据的获取 4.PLI库子程序 学习时间: 学习产出: 学习目标: 解释在Verilog仿真中如何使用PLI子程序。 描述PLI的用途。 定义用户自定义系…

DSIN(Deep Session Interest Network)详解

1. 提出动机 这个模型依然是研究如何更好地从用户的历史行为中捕捉到用户的动态兴趣演化规律。DIEN存在一个问题,就是只关注了如何去改进网络,而忽略了用户历史行为序列本身的特点,我们仔细去想,用户过去可能有很多历史点击行为&…

kafka硬件选择以及如何在生产中优化各个组件的参数

硬件选择: 1.求出一天kafka会产出大概多少的消息,然后平均到每一秒,要多少的消息,然后一条消息大概就是0.5-2k的大小,求出,每秒占用多少内存 2.求购买服务器数量(上边求出的效率 * 副本数/100)1 如果除不…

2022 开源社年度报告:打开新世界

2022 年被认为是充满挑战的一年,对于开源社而言也不例外。开源社同样面临着外部环境的不断变化,然而,正是开源的力量和开放协作的模式,让我们能够在这个极端情况下做出卓越的回应。 大家对于开源社的组织架构充满好奇,…

下载插件-4K Video Downloader

这款插件小编自己还是蛮喜欢的,有兴趣的小伙伴可以体验学习下。 一、简单介绍 提供视频下载服务,让您以高质量的方式获取所需内容。无论是视频、播放列表、频道还是字幕,您都可以轻松下载并保存为多种格式,如MP4、MKV、M4A、MP3、…

C++基础(8)——类和对象(多态)

前言 本文主要介绍了C中多态的基本知识 4.7.1:多态的基本概念和原理剖析 1:基本概念 静态多态:函数重载、运算符重载 动态多态:派生类和虚函数实现运行时多态 静态多态在编译阶段确定函数地址;动态多态在运行阶段…

RN 学习小记之使用 Expo 创建项目

本文Hexo博客链接🔗 https://ysx.cosine.ren/react-native-note-1 xLog链接🔗 https://x.cosine.ren/react-native-note-1 RSS订阅 📢 https://x.cosine.ren/feed/xml 由于业务需要,开始学习RN以备后面的需求,而虽然之…

《后端存储实战课》课程学习笔记(二)

创建和更新订单时,如何保证数据准确无误? 订单系统是整个电商系统中最重要的一个子系统,订单数据也就是电商企业最重要的数据资产。一个合格的订单系统,最基本的要求是什么?数据不能错。 首先,你的代码必须…

2023年度编程排行重磅发布,JS连续11年霸占榜一

编程语言千千万,你最喜欢用哪一个? 最近,在调研了全球超过9万名开发者之后,程序员社区 Stack overflow 重磅发布了《2023 Developer Survey》,从这份报告中,我们可以了解到当前最热门的工具、最主流的技术…

每日学术速递6.5

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Humans in 4D: Reconstructing and Tracking Humans with Transformers 标题:4D 中的人类:用变形金刚重建和跟踪人类 作者:Shubham Goel, Geor…

深入理解Linux虚拟内存管理(九)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理(一) 深入理解Linux虚拟内存管理(二) 深入理解Linux虚拟内存管理(三) 深入理…

STL容器——map的用法

0、概述 map翻译为映射,map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)。下面是map、multimap和unordered_map之间的差别。 注意这三种映射的底层实现,他决定了算法的时间复杂度。特…

Java+Demo对接中国移动 云MAS短信发送(http协议详解,新测成功!)

一.登录官网,下载http接入文档(随着官网不断更新,可参考官网的文档) 官网地址为:云mas业务平台 进入云MAS管理平台,找到 管理-接口管理 的列表页。 (必读:本文对接方式是 java引用jar包&#…

【MYSQL篇】一文弄懂mysql中redo log、binlog

前言 今天想跟大家聊聊关于 mysql 中的两个小的知识点:redo log 和 binlog 。 redo log :InnoDB 存储引擎层方面的日志,所以如果你使用的存储引擎不是 InnoDB 的话,那就根本谈不上 redo log。 binlog : MySQL Serve…

SpringBoot整合模板引擎Thymeleaf(2)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 概述 Thymeleaf十分类似于JSP中使用的EL表达式。整体而言,Thymeleaf简洁、优雅、高效;非常适合小型项目的快速开发。 Thymeleaf常用标签简述 在此…

多商户商城开发功能清单

电商时代下,传统企业商家急需拓展业务规模,向线上拓展,而多商户小程序造价低,效应高,自然就成为了很多企业商家拓展线上营销渠道的首要选择,那么多商户小程序商城涵盖哪些功能呢?下面小编就来详细为大家解答&#xff…

每日学术速递6.8

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.BundleSDF: Neural 6-DoF Tracking and 3D Reconstruction of Unknown Objects(CVPR 2023) 标题:BundleSDF:未知对象的神经 6-DoF 跟踪和 3D 重建 作者&am…