Metric?
수집하는 시계열 데이터를 일컫는 말
Prometheus 는 근본적으로 모든 데이터를 시계열로 저장하며, 모든 데이터는 고유한 메트릭명과 key-value 쌍의 라벨로 구분됨 (메트릭명{라벨명=값, 라벨명=값} 샘플링 데이터)
타입
4가지 타입으로 메트릭을 정의하여 저장한다.
1. Counter
- 값 증가, 리셋만 가능한 누적 메트릭 (감소할 수 있는 값은 gauge 를 사용해야함.)
- 용도
- 카운터에 누적된 값으로 구간별로 변화율을 파악해 해당 값이 어느 정도 추세로 증가하는지 알 수 있음
- 이벤트나 오류 등이 급증하는 구간을 파악하는 데 적합
- 예시
- 요청 수
# TYPE go_gc_heap_allocs_objects_total counter
go_gc_heap_allocs_objects_total 6.05804324e+08
2. Gauge
- 증, 감소가 모두 가능한 메트릭
- 용도
- 특정 시점의 값을 표현하는 데 사용하는 메트릭 타입
- 예시
- 대기열 수
- 클러스터 파드 수
- CPU 온도
- 버전
# TYPE go_info gauge
go_info{version=“go1.17.6”} 1
3. Histogram
- 사전에 미리 정의한 구간(Bucket) 안에 있는 메트릭 값의 빈도를 측정
- 예
- 요청에 걸린 대기 시간
# TYPE go_gc_pauses_seconds_total histogram
go_gc_pauses_seconds_total_bucket{le=“-5e-324"} 0
go_gc_pauses_seconds_total_bucket{le=“9.999999999999999e-10”} 0
go_gc_pauses_seconds_total_bucket{le=“9.999999999999999e-09"} 0
go_gc_pauses_seconds_total_bucket{le=“1.2799999999999998e-07”} 0
go_gc_pauses_seconds_total_bucket{le=“1.2799999999999998e-06"} 6
go_gc_pauses_seconds_total_bucket{le=“1.6383999999999998e-05”} 3931
go_gc_pauses_seconds_total_bucket{le=“0.00016383999999999998"} 10349
go_gc_pauses_seconds_total_bucket{le=“0.0020971519999999997”} 10442
go_gc_pauses_seconds_total_bucket{le=“0.020971519999999997"} 10466
go_gc_pauses_seconds_total_bucket{le=“0.26843545599999996”} 10466
go_gc_pauses_seconds_total_bucket{le=“+Inf”} 10466
go_gc_pauses_seconds_total_sum NaN
go_gc_pauses_seconds_total_count 10466
4. Summary
- Histogram 과 유사하지만 사분위수를 나타내는 메트릭, 버킷을 미리 알 수 없을 때 사용함.
- 프로메테우스 자체적으로 0~1 사이로 구간을 미리 정해 놓음
- 가능하면 요약보다 히스토그램을 사용하는 것이 좋음.
- 예
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile=“0”} 2.955e-05
go_gc_duration_seconds{quantile=“0.25"} 4.385e-05
go_gc_duration_seconds{quantile=“0.5”} 4.8801e-05
go_gc_duration_seconds{quantile=“0.75"} 7.0271e-05
go_gc_duration_seconds{quantile=“1”} 0.004812141
go_gc_duration_seconds_sum 0.439441807
go_gc_duration_seconds_count 5233
References
https://prometheus.io/docs/concepts/metric_types/
https://prometheus.io/docs/tutorials/understanding_metric_types/
댓글