跳转至

HikariCP

采集 HikariCP 相关指标信息

配置

DataKit 采集器采集

  • 开启 statsd 采集器

进入 DataKit 安装目录下的 conf.d/statsd ,复制 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. 下载 Guance 版 dd-java-agent.jar

wget -O dd-java-agent.jar 'https://static.guance.com/dd-image/dd-java-agent.jar'
  • 新建 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 连接的最大生命周期 配置项,一个连接从创建到被关闭的总存活时间不能超过这个值 ms
min_idle 连接池中最小空闲连接数 配置项,连接池会保证至少有这么多空闲连接,以便快速响应新的请求 count
pool_size_max 连接池中允许的最大连接数 配置项,这个值限制了连接池的大小,防止过多的连接消耗过多的资源 count
validation_timeout 连接验证超时时间 配置项,在从连接池获取连接时,连接池会验证连接的有效性,如果验证时间超过这个值,则认为验证失败 ms
connections_timeout 连接超时时间 配置项,建立连接最大等待时间 ms

文档评价

文档内容是否对您有帮助? ×