최종 프로젝트 인프라 구축 외전② - promQA 심화
돌아온 버그픽스
이번엔 그라파나 UI를 구성하면서 본 promQA 문제를 해결해보게따
podman 환경에서의 container_last_seen
count(container_last_seen{instance=~"(cadvisor 주소:포트)",job=~"containers",image!=""})(현재 유효한 컨테이너 개수를 가져오는 cadvisor 구문)
쿼리의 결과가 21개나 나오는 문제가 생겼다. 분명 당직(当職)은 10개만 올려놨을 텐데
count를 빼고 보니까 이렇게 컨테이너들이 2개씩 겹쳐 표시되었다.(name에 주목!) 특히 cadvisor는 3개씩이나!
겹치는 항목들의 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)에서도 프로세스가 생겨서 그렇다.
따라서 실제 실행되는 컨테이너만 보고 싶으면
이렇게 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 구문이다.
근데 당직이 가져온 대쉬보드 템플릿에는 kube_pod_container_resource_requests_cpu_count 이렇게 나와있어 결과문이 반환되지 않았다.
당연히 kube-state-metrics에 직접 접속해 봐 검색하면 뒤에 _cpu_count가 붙은 건 나오지 않는다.
따라서 위 사진처럼 _cpu_count를 지워 주고, 파라메타에 resource="cpu",unit="core" 이렇게 넣어 주면 동일한 결과~
메모리도 마찬가지로 _memory_bytes 대신 resource="memory",unit="byte" 파라메터로 바꿔 주고, 결과값은 바이트 단위니까 1024^3으로 나눠 줘 기가바이트로 변환해 주면 끝!







