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);
    }
}
相关推荐
AKA__Zas13 分钟前
跨网段主机的文件传输过程
java·网络·网络协议·学习方法
Wang's Blog16 分钟前
Java 接入Redis: Redis简介与NoSQL定位
java·服务器·redis
程序猿乐锅20 分钟前
【黑马点评 | 第四篇】Redis缓存雪崩
java·数据库·spring boot·redis·缓存
小尹哥-程序员22 分钟前
第4集:让AI学会看文档:Spring AI RAG入门实战
java·人工智能·spring
“AI国潮设计-小江”23 分钟前
【SDXL实战】Python自动化生成3D潮汕美食IP,附ComfyUI工作流与商用变现思路
开发语言·人工智能·python·prompt·aigc
可乐配鸡翅32 分钟前
day seven 猜数字小游戏
java
张小凡vip34 分钟前
Java Web 设置 Session 超时时间:如何让 Session 永不失效
java·spring boot
浪里摸鱼35 分钟前
Java 泛型快速学习指南(面向接口扫描场景)
java
此生决int1 小时前
深入理解C++系列(19)——C++11(上)
开发语言·c++
我是大猴子1 小时前
redis执行get等命令时底层操作
java