apm 字节码技术

服务端 APM

假设有这样一个函数,我们需要进行监控

复制代码
public void saveUser() {
    doDbOperation();
    flushCache();
}

我们需要对它的字节码进行改写,自动注入一些代码达到监控的功能,一个最简单的模型如下面的代码所示

复制代码
public void _saveUser() {
    // 获取开始时间
    long start = System.currentTimeMillis();
    // 记录未捕获异常
    Throwable uncaughtException = null;

    try {
        doDbOperation();
        flushCache();
    } catch (Throwable e) {
        uncaughtException = e;
        throw e;
    } finally {
        // 记录结束时间
        long end = System.currentTimeMillis();
        // 上报 spanName、开始时间、结束时间、是否有未捕获的异常
        APMUtil.report("UserService.saveUser", start, end, uncaughtException);
    }
}
相关推荐
_OP_CHEN3 分钟前
C++进阶:(十六)从裸指针到智能指针,C++ 内存管理的 “自动驾驶” 进化之路
开发语言·c++
努力学习的小廉8 分钟前
【QT(二)】—— 初识QT
开发语言·qt
爱学习的小邓同学8 分钟前
C++ --- map/set的使用
开发语言·c++
梓德原9 分钟前
【C语言】C语言如何向系统接要存
java·c语言·算法
weixin_4211334110 分钟前
JShielder
开发语言
WX-bisheyuange12 分钟前
基于Spring Boot的流浪动物管理系统
java·spring boot·后端
阿蔹12 分钟前
Selenium---控制窗口、manage()方法
java·selenium·测试工具·面试
MSTcheng.14 分钟前
【C++进阶】继承(下)——挖掘继承深处的奥秘!
开发语言·c++
RisunJan15 分钟前
【HarmonyOS】鸿蒙开发语言的选择
开发语言·华为·harmonyos
学困昇15 分钟前
Linux基础开发工具(上):从包管理到“进度条”项目实战,掌握 yum/vim/gcc 核心工具
linux·运维·开发语言·数据结构·c++·vim