V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
thetbw
V2EX  ›  分享创造

写了个简单的 Java sql 执行监控

  •  
  •   thetbw · 2021-07-30 12:29:27 +08:00 · 2221 次点击
    这是一个创建于 1198 天前的主题,其中的信息可能已经有所发展或是发生改变。

    平时开发的时候有时候要看一下执行的 sql 是啥,为什么数据不对之类的,看程序的日志太乱了。正好最近在学习 java agent 相关的知识,就写了这个工具。

    使用

    直接 java -jar ***.jar 运行即可,注意要使用 jdk 里面的 java 命令 ,不是单独 jre 里,因为缺少 tools.jar 包

    目前个人测试还是没问题的,不过给一同事试了下,不知道为什么 DriverManager.getDrivers() 返回的驱动为空。

    预览图

    随便修改 java class 的感觉还是蛮有意思的

    地址 https://gitee.com/thetbw/monitor-jdbc

    10 条回复    2021-08-07 12:45:44 +08:00
    mazhimazh
        1
    mazhimazh  
       2021-07-30 17:40:03 +08:00
    可以的,加油
    xinyana
        2
    xinyana  
       2021-07-31 07:35:56 +08:00 via Android
    MySQL 还是 mssql 呢
    thetbw
        3
    thetbw  
    OP
       2021-07-31 09:16:56 +08:00 via Android
    @xinyana 主要是 mysql,通过修改 mysql 驱动实现的
    zgcwkj
        4
    zgcwkj  
       2021-07-31 20:00:49 +08:00
    @xinyana sql server 自带有工具查看啊
    LouisGuo
        5
    LouisGuo  
       2021-08-02 08:52:11 +08:00
    跑偏了,这个时候你应该优化你的日志收集系统吧
    morty0
        6
    morty0  
       2021-08-02 15:09:43 +08:00
    JRebel 有这个功能
    thetbw
        7
    thetbw  
    OP
       2021-08-02 16:31:20 +08:00 via Android
    @morty0 是的,这个当初就是想实现 jrebel 那种效果,不过 jrebel 还是蛮强得,方法调用栈和 redis 都有
    fantastM
        8
    fantastM  
       2021-08-02 21:19:49 +08:00
    「看一下执行的 sql 是啥」这个需求是不是可以通过给 JDBC 接口套个代理来实现,这样就可以对任意 JDBC 实现都生效了(成本是需要入侵业务了......
    camork
        9
    camork  
       2021-08-05 13:59:30 +08:00
    @morty0 请教下 JRebel 怎么实现?
    thetbw
        10
    thetbw  
    OP
       2021-08-07 12:45:44 +08:00
    @camork 具体我也不太清楚,不过应该都是通过埋点的方式,也就是动态修改代码,里面插入一些自己的统计逻辑.可以参考阿里开源的 arthas
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:05 · PVG 12:05 · LAX 20:05 · JFK 23:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.