prometheus 에서 다른 메트릭과 계산하기

마가·2022년 8월 10일
0

의문

목록 보기
2/2

할 줄 아시는 분 덧글 부탁드려요.

난 그저.. 코어를 여러개 먹은 파드의 cpu 부하를 그래프로 그리고 싶었을 뿐인데....

sum by (container)(rate(container_cpu_usage_seconds_total{image!="",container!="POD",pod=~"$pod"}[2m]))

이렇게 하면 컨테이너 단위로 cpu를 얼마나 먹는지 알 수 있다.

근데 이렇게 코어를 여러개를 준 경우 진짜 몇%를 쓰는 건지 알 수 없다.
우리는 influxdb에다가 8코어를 줬기 때문에, 아직 2배 더 높은 부하를 감당할 수 있다.

즉 위의 코드는 컨테이너가 cpu를 1개 온전히 차지했을 때에만 정상이고, cpu를 50%만 준 경우에는 풀 부하더라도 50%에서 더 상승하지 않는 문제가 있는걸 발견했다.

sum by (namespace) (kube_pod_container_resource_requests_cpu_cores{namespace="$namespace"})
(requestes 말고 limits 도 같음)

그래서 이와 같이 namespace에 cpu를 얼마나 할당시켰는지를 구할 수 있다.
그러면..

sum by (container)(rate(container_cpu_usage_seconds_total{image!="",container!="POD",pod=~"$pod"}[2m])) /
 sum by (namespace) (kube_pod_container_resource_requests_cpu_cores{namespace="$namespace"})

이렇게 하면 구할 수 있지 않을까?

안된다!

/과 같은 2항 연산자 쓰기 위해서는 두 메트릭이 같은 라벨을 가지고 있어야 하는데
sum을 하면서 /를 할 수 없게 된다.

그래서 join_left를 하건 뭘 하건 노력해봤는데, 컨테이너마다 cpu 사용률을 구할 수 있고,namespace에 할당된 cpu를 구할 수 있어서.... 안된다.

그래서 알람을 어떻게 줘야 하는 걸까.

profile
마음 가는 길은 죽 곧은 길

0개의 댓글