반응형
Vector는 방향 + 크기, Scalar는 크기 이다.
메트릭에서 '방향'의 개념은 라벨(Label)이다.
Vector는 라벨(방향) + 값(크기), Scalar는 값(크기)이다.
나의 경우, K8s 파드의 메모리 사용률을 확인하기 위해 아래 PromQL을 작성하였는데, 값이 출력되지 않았다.
PromQL ( Vector / Vector )
container_memory_working_set_bytes{namespace="$namespace", container="$container"}
/
(
sum(kube_pod_container_resource_limits{namespace="$namespace", container="$container"}) /
count(kube_pod_container_resource_limits{namespace="$namespace", container="$container"})
) * 100
위 PromQL은 '파드별 메모리 사용량 / 파드에 할당된 메모리 limit 값 ' 이다.
파드별 메모리 사용량은 파드에 따라 달라지므로, 파드레이블과 값이 있어야 하는 Vector 값
파드의 메모리 limit 값은 같은 Deployment의 파드면 동일하므로 고정된 Scalar 값이다.
그런데
분자도 벡터, 분모도 벡터로 계산하여 라벨이 서로 일치하지 않아 결과가 출력되지 않은 것이다.
Vector 간 연산은 라벨이 서로 일치하는 것끼리의 계산이기 때문이다.
PromQL ( Vector / Scalar )
container_memory_working_set_bytes{namespace="$namespace", container="$container"}
/
scalar(
sum(kube_pod_container_resource_limits{namespace="$namespace", container="$container"}) /
count(kube_pod_container_resource_limits{namespace="$namespace", container="$container"})
) * 100
그래서 위처럼 PromQL을 수정하니 정상 출력이 되었다.
반응형
'Ops > Monitoring' 카테고리의 다른 글
| Prometheus Federation 구현하기 (0) | 2025.09.16 |
|---|---|
| [Grafana] 그라파나 연동하기 ( With SpringBoot, Prometheus ) (1) | 2023.05.13 |
| [Prometheus] 프로메테우스 연동하기 ( With SpringBoot ) (0) | 2023.05.12 |