监视JDBC调用

时间:2016-01-25 10:41:56

标签: java postgresql jdbc monitoring

我有一个Java应用程序连接到Postgres数据库并发出一些SQL语句。我想监视连接以获取有关每个查询执行速度的统计信息。我已经尝试过使用JAMon(http://jamonapi.sourceforge.net/),但是并没有真正理解它并发现文档非常缺乏。

这就是我打开连接的方式:

Class.forName("com.jamonapi.proxy.JAMonDriver");
con = DriverManager.getConnection("jdbc:jamon:postgresql://localhost:5432/myDB?jamonrealdriver=org.postgresql.Driver", "user", "pw");

虽然我没有注意到任何差异。一切仍然正常,所以我猜这至少没有错误配置,但我没有得到任何记录或任何地方。还有其他我需要设置的吗?

我也试过添加这一行,但它也没有做任何事情:

con = MonProxyFactory.monitor(con);

所以基本上,我正在寻找的是一个完整且易于理解的初学者指南,用于使用JAMon(甚至任何其他监控工具,只要它易于设置)监控JDBC调用。

注意:完成的程序应该在我没有无限制访问权限的远程数据库上运行,这意味着我无法编辑postgresql.conf或访问数据库的日志文件。这意味着我无法使用Can I log query execution time in PostgresSQL 8.4?

的解决方案

我也尝试过使用JDbMonitor(http://www.jdbmonitor.com/),我设法将其设置为监视器成功连接的位置(它从Java应用程序中找到了我的开放数据库连接),但是没有任何查询显示/记录它。因此对该监视器的一点帮助也很棒:D。

编辑:log4jdbc(https://github.com/arthurblake/log4jdbc)是否可行?最新版本说它只适用于Java 1.7,所以我不确定它是否会起作用,但会在等待答案的时候尝试一下......

2 个答案:

答案 0 :(得分:2)

可以使用P6Spy

<德尔> https://p6spy.github.io/p6spy/2.0/install.html

https://p6spy.readthedocs.io/en/latest/install.html

一旦与应用程序正确集成,它就会生成一个综合日志。

答案 1 :(得分:0)

我已经广泛使用了Log4jdbc,它运行得很好。您只需要替换jdbc连接字符串并在类路径中包含原始的.jar驱动程序文件,它就像一个魅力。如果您使用SL4FJ作为日志门面是必须的。