[Application Monitoring] Application Metric 대시보드 만들기

Hyunjun Kim·2025년 6월 29일
0

Data_Engineering

목록 보기
88/153

2 Application Metric 대시보드 만들기

2.1 Memory 지표

2.1.1 JVM heap usage

jvm_memory_bytes_used{area="heap"} / jvm_memory_bytes_max

2.1.2 App memory usage (amount)

사용량(heap + offheap)

sum by (instance) (jvm_memory_bytes_used{job="spring"})

2.1.3 App memory usage (%)

사용량 % (node의 memory 대비)

node_memory_MemTotal_bytes{job="node", instance="$your_instance"}

2.1.2 의 쿼리를 A, 2.1.3 의 쿼리를 B라고 했을때,
expression 을 추가하고 Math로 표현식

$A/$B
  • unit: percentile(0~1)

2.1.4 GC time

sum by (job, instance) (rate(jvm_gc_collection_seconds_sum[$__rate_interval]))


## 2.2 CPU 지표 현재 prometheus simple client java 에서는 자기 자신의 `process_cpu_seconds_total` 만 구할 수 있다. 이 값만으로는 cpu usage % 를 구할 수 없다.

2.2.1 node exporter 의 값으로 기간의 cpu seconds total 구하기

아래 공식으로 node_cpu_seconds_total 을 type과 관련없이, instance 별로 구할 수 있다.

sum by (job, instance) (rate(node_cpu_seconds_total{job="node" [$__rate_interval])))
  • CPU는 지난 시간이므로 rate + range 를 활용해야 한다.

spring instance 만 구분하기 위해

sum by (job, instance) (rate(node_cpu_seconds_total{job="node", instance="$your_instance"}[$__rate_interval])))
  • $your_instance 를 자신의 instance로 넣어준다.

2.2.2 rate 로 단위 구간당 cpu seconds total

rate(process_cpu_seconds_total{job="spring", instance="$your_instance"}[$__rate_interval]) >= 0
  • $your_instance 를 자신의 instance로 넣어준다.

2.2.3 별도의 두개의 query 결과를 이용하는 Math 수식 활용하기

2.2.1의 쿼리를 A
2.2.2의 쿼리를 B 로 했을때,
C query 를 만들고, operation을 Math 로 한다.
다음 수식으로 비율%를 구할 수 있다.

$B / $A

2.2.4 확인

CPU사용율이 낮다면, 예제에 있는 /cpurun API를 호출하면 무한루프를 돌면서 cpu 사용율이 치솟는다.

2.2.5 대안

가장 좋은 것은, app에서 node(system)의 cpu_seconds_total 을 제공해서 한 번에 계산하거나, 아예 usage % 를 제공하는 것이다.

  • Spring Framework 자체 메트릭 시스템은 이것을 제공한다.


2.3 Filesystem

2.3.1 FD count

process_open_fds / process_max_fds
  • percentile
profile
Data Analytics Engineer 가 되

0개의 댓글