コンテンツにスキップ

HikariCP

HikariCP 関連のメトリクス情報を収集

設定

DataKit 収集器での収集

  • statsd 収集器を有効化する

DataKit のインストールディレクトリconf.d/samples に入り、statsd.conf.samplestatsd.conf にコピーする

cp prom.conf.sample master.conf

  • ddtrace 収集器を有効化する

DataKit のインストールディレクトリconf.d/ddtrace に入り、ddtrace.conf.sampleddtrace.conf にコピーする

cp ddtrace.conf.sample ddtrace.conf

  • 以下のコマンドを実行し、Datakit を再起動する
datakit service -R

クライアント設定

Java Demo アプリケーションを例に、Druid 接続プールのメトリクスとトレースを収集する

  1. 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
  1. jmx を設定する

  2. dd-java-agent をダウンロードする

SDK

  • 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

フィードバック

このページは役に立ちましたか?