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);
    }
}
相关推荐
花阴偷移9 分钟前
kotlin语法(上)
android·java·开发语言·kotlin
XuanRanDev12 分钟前
【编程语言】Kotlin快速入门 - 泛型
开发语言·kotlin
普通网友13 分钟前
Android kotlin Jetpack mvvm 项目
android·开发语言·kotlin
木易 士心14 分钟前
Go、Rust、Kotlin、Python 与 Java 从性能到生态,全面解读五大主流编程语言
java·golang·rust
Crogin15 分钟前
快速简单入门Kotlin——基础语法(第一天)
android·开发语言·kotlin
qq_3363139318 分钟前
java基础-set系列集合
java·开发语言·python
U***l83224 分钟前
【Spring】IDEA中创建Spring项目
java·spring·intellij-idea
好好沉淀26 分钟前
IDEA 报错:You aren‘t using a compiler supported by lombok (1分钟解决方案)
java·spring·intellij-idea
lzhdim26 分钟前
C#开发的应用启动菜单应用(普通版) - 开源研究系列文章 - 个人小作品
开发语言·c#
Kyln.Wu35 分钟前
【python实用小脚本-309】HR×Python改造面试路线规划|从手工排程到智能调度的化学反应,轻松实现路径优化
开发语言·python·面试