HikariCP を使っていると,connection の状態をモニタリングしておきたくなると思います.例えば active な connection と idle 中の connection の状態を見たかったり,あるいは connection がリーク (アプリケーションが connection を borrow するだけして返却してない状態) していないかをモニタリングしたい,みたいなケースが挙げられるでしょう.
こうしたものはモニタリングしたくなるのが心情というものですし,モニタリングすべきだとも思っています.
開発中の環境だと HikariCP のデバッグログを出すことでそこから connection の情報を取得することが出来ますが,本番の環境だとそんなのは出さないし (HikariCP のデバッグログは結構量が多い) ,出したとしてもいちいちログを見てやっていくのはダルいので,やはり JMX で見たいという事になります.
そのやり方は至って簡単で,
final HikariDataSource dataSource = new HikariDataSource(); ... dataSource.setPoolName("pool-name"); dataSource.setRegisterMbeans(true);
という風に,dataSource.setRegisterMbeans(true);
としてやることで HikariCP のメトリクスが JMX で取れるようになります *1.
あとは jolokia なんかを使っている場合だと,
http://server.example.com/jolokia/read/com.zaxxer.hikari:type=Pool%20(pool-name)
という風にアクセスしてやると HikariCP の connection のステータスを取得することができるようになります.
あとは数値を取ってこういうグラフを描画することが可能.
Total の connection の個数を見つつ,その上に active,idle,awaiting な connection の状態を描画することで,connection のステータスが一目瞭然となります (ちなみに18:00 を超えた辺りで total の connection がガクッと落ちているのは再起動したからです).
便利ですね.
See Also: MBean (JMX) Monitoring and Management · brettwooldridge/HikariCP Wiki · GitHub
*1:registerMbeans: This property controls whether or not JMX Management Beans ("MBeans") are registered or not. Default: false https://github.com/brettwooldridge/HikariCP