HikariCP
HikariCP 関連のメトリクス情報を収集
設定¶
DataKit 収集器での収集¶
statsd収集器を有効化する
DataKit のインストールディレクトリ の conf.d/samples に入り、statsd.conf.sample を statsd.conf にコピーする
cp prom.conf.sample master.conf
ddtrace収集器を有効化する
DataKit のインストールディレクトリ の conf.d/ddtrace に入り、ddtrace.conf.sample を ddtrace.conf にコピーする
cp ddtrace.conf.sample ddtrace.conf
- 以下のコマンドを実行し、Datakit を再起動する
クライアント設定¶
Java Demo アプリケーションを例に、Druid 接続プールのメトリクスとトレースを収集する
- Demo プロジェクトの接続プール設定は次のとおりです。
spring.datasource.url=jdbc:mysql://xx.xxx.xx.xxx:3306/test?useSSL=false&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
spring.datasource.username=***
spring.datasource.password=*****
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.register-mbeans=true
-
jmx を設定する
-
dd-java-agentをダウンロードする
hikaricp.yamlファイルを新規作成し、内容は以下のとおりです。
init_config:
instances:
- jvm_direct: true
name: hikari-slick-monitoring
collect_default_jvm_metrics: false
collect_default_metrics: false
refresh_beans: 60
conf:
- include:
bean_regex: "com.zaxxer.hikari:type=Pool \\((.*)\\)"
tags:
pool: $1
attribute:
ActiveConnections:
metric_type: gauge
alias: hikaricp.connections.active
IdleConnections:
metric_type: gauge
alias: hikaricp.connections.idle
TotalConnections:
metric_type: gauge
alias: hikaricp.connections.total
ThreadsAwaitingConnection:
metric_type: gauge
alias: hikaricp.connections.pending
- include:
bean_regex: "com.zaxxer.hikari:type=PoolConfig \\((.*)\\)"
tags:
pool: $1
attribute:
MaximumPoolSize:
metric_type: gauge
alias: hikaricp.pool.size.max
IdleTimeout:
metric_type: gauge
alias: hikaricp.idle.timeout
MaxLifetime:
metric_type: gauge
alias: hikaricp.max.lifetime
MinimumIdle:
metric_type: gauge
alias: hikaricp.min.idle
ConnectionTimeout:
metric_type: gauge
alias: hikaricp.connections.timeout
ValidationTimeout:
metric_type: gauge
alias: hikaricp.validation.timeout
LeakDetectionThreshold:
metric_type: gauge
alias: hikaricp.leak.detection.threshold
- 起動コマンドを調整する
java \
-javaagent:/xxx/dd-java-agent.jar \
-Ddd.agent.port=9529 \
-Ddd.service=demo \
-Ddd.jmxfetch.check-period=1000 \
-Ddd.jmxfetch.enabled=true \
-Ddd.jmxfetch.config.dir=/xxx/ \
-Ddd.jmxfetch.config=hikaricp.yaml \
-jar xxxx.jar
ここで、-Ddd.jmxfetch.config.dir=/xxx/ は hikaricp.yaml 設定ファイルの配置ディレクトリです
メトリクス¶
hikaricp メトリクスセット¶
HikariCP のメトリクスは hikaricp メトリクスセットにあります。ここでは主に HikariCP 関連メトリクスの説明を紹介します。
| Metrics | 説明 | 用途 | 単位 |
|---|---|---|---|
connections_active |
現在アクティブなデータベース接続数 |
アプリケーションで使用中の接続数を示します | count |
connections_idle |
現在アイドル状態のデータベース接続数 |
未使用でアイドル状態にある接続数を示します | count |
connections_pending |
現在接続取得を待機しているリクエスト数 |
この値が高い場合、現在の同時実行要求に対して接続プールのサイズが不足している可能性があります | count |
connections_total |
接続プール内のデータベース接続総数 |
アクティブ接続とアイドル接続を含みます | count |
idle_timeout |
アイドル接続の最大存続時間 |
設定項目で、接続がアイドル状態でこの値を超えると、接続プールはそれを切断します | ms |
leak_detection_threshold |
接続リーク検出しきい値 |
設定項目で、接続の占有時間がこのしきい値を超えると、接続プールは接続リークの可能性があると判断し、警告を出します。 | ms |
max_lifetime |
接続の最大ライフサイクル |
設定項目で、1 つの接続の作成から切断までの総存続時間はこの値を超えてはいけません | ms |
min_idle |
接続プール内の最小アイドル接続数 |
設定項目で、接続プールは新しいリクエストにすばやく応答できるよう、少なくともこれだけのアイドル接続を維持します | count |
pool_size_max |
接続プールで許可される最大接続数 |
設定項目で、この値が接続プールのサイズを制限し、過剰な接続によるリソース消費を防ぎます | count |
validation_timeout |
接続検証タイムアウト時間 |
設定項目で、接続プールから接続を取得する際に接続の有効性を検証し、検証時間がこの値を超えると検証失敗と見なします | ms |
connections_timeout |
接続タイムアウト時間 |
設定項目で、接続確立の最大待機時間 | ms |