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 |