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