Post

최종 프로젝트 인프라 구축 외전② - promQA 심화

최종 프로젝트 인프라 구축 외전② - promQA 심화

돌아온 버그픽스

이번엔 그라파나 UI를 구성하면서 본 promQA 문제를 해결해보게따

podman 환경에서의 container_last_seen

do13-img1

count(container_last_seen{instance=~"(cadvisor 주소:포트)",job=~"containers",image!=""})(현재 유효한 컨테이너 개수를 가져오는 cadvisor 구문)
쿼리의 결과가 21개나 나오는 문제가 생겼다. 분명 당직(当職)은 10개만 올려놨을 텐데

do13-img2

count를 빼고 보니까 이렇게 컨테이너들이 2개씩 겹쳐 표시되었다.(name에 주목!) 특히 cadvisor는 3개씩이나!

do13-img3

겹치는 항목들의 id에 주목해보면 /machine.slice/libpod-(컨테이너id)/machine.slice/libpod-conmon-(컨테이너id) 이렇게 conmon이 있는 거와 없는 거 2개씩 생기는데,

이는 podman(cri-o 포함) 특성상 컨테이너를 하나 띄우면 실제 컨테이너 프로세스(libpod-컨테이너id)와 컨테이너를 감시하는 conmon 컨테이너 프로세스(libpod-conmon-…) 이렇게 2개가 생성되어 그렇다고 한다.

또한 cadvisor는 /system.slice/도 있는데, 이는 cadvisor가 시스템 정보를 수집하니까 시스템 서비스 단위(systemd)에서도 프로세스가 생겨서 그렇다.

따라서 실제 실행되는 컨테이너만 보고 싶으면

do13-img4

이렇게 container_last_seen{} 뒤에 unless (container_last_seen{id=~".*-conmon-.*"} or container_last_seen{id=~".*system.slice.*"})를 붙여 제외시켜주면 된다.
(unless (구문) = 구문 결과는 제외)

unless 문을 넣어 주니 실제 컨테이너인 10개만 보인다!

kube_pod_container_resource_requests_cpu_count(?)

kube_pod_container_resource_requests 구문은 쿠버에서 포드별 cpu/mem 등 시스템 자원 요청량을 가져오는 kube-system-metrics 구문이다.

do13-img5

근데 당직이 가져온 대쉬보드 템플릿에는 kube_pod_container_resource_requests_cpu_count 이렇게 나와있어 결과문이 반환되지 않았다.

do13-img6

당연히 kube-state-metrics에 직접 접속해 봐 검색하면 뒤에 _cpu_count가 붙은 건 나오지 않는다.

do13-img7

따라서 위 사진처럼 _cpu_count를 지워 주고, 파라메타에 resource="cpu",unit="core" 이렇게 넣어 주면 동일한 결과~

do13-img8

메모리도 마찬가지로 _memory_bytes 대신 resource="memory",unit="byte" 파라메터로 바꿔 주고, 결과값은 바이트 단위니까 1024^3으로 나눠 줘 기가바이트로 변환해 주면 끝!

This post is licensed under CC BY 4.0 by the author.