-
쿠버네티스 모니터링 : 힙스터(kubernetes monitoring : heapster)Kubernetes 2018. 9. 3. 09:00클러스터에서 애플리케이션을 운영하다가 보면 현재 클러스터의 상태는 어떤지 앱의 상태는 어떤지 모니터링하는 것이 중요합니다. 기본적인 시스템 메트릭인 CPU, 메모리부터 시작해서 애플리케이션의 특수한 메트릭 정보까지 많은 것들을 모니터링해야 합니다. 쿠버네티스에서는 기본적으로 사용할 수 있는 모니터링 도구로 힙스터(heapster)를 제공해 왔었습니다. 하지만 힙스터는 쿠버네티스 1.11버전에서 deprecated되었고, 1.13버전에서 완전히 제거될 예정입니다. 그리고 앞으로는 메트릭서버(metrics-server)를 힙스터 대체로 사용하길 권장하고 있습니다. 그외에 추가적으로 더 세세한 모니터링이 필요하면 프로메테우스(Prometheus) 같은 전문 모니터링 도구를 이용할 것을 권장하고 있습니다.힙스터가 지원 종료될 예정이지만 아직까지(2018년 8월)는 가장 편하고 많이 사용할 수 있는 쿠버네티스 모니터링 도구 이기 때문에 힙스터 사용 방법을 알아보도록 하겠습니다. 힙스터의 기본적인 구조는 아래 그림에 잘 나타나 있습니다.힙스터 자체도 쿠버네티스 클러스터 상에서 포드로 실행이 됩니다. 그리고 apiserver와 통신해서 전체 클러스터의 노드와 포드 현황에 대한 목록을 가져온 다음에 거기서 모니터링에 필요한 데이터들을 수집합니다. 이때 힙스터는 각 노드의 kubelet에 접근해서 데이터를 가지고 오는데 kubelet는 컨테이너의 메트릭들을 수집하는 도구인 cadvisor를 내장하고 있습니다. 결국 cadvisor에서 수집한 개별 컨테이너들의 데이터를 kubelet을 통해서 힙스터가 수집한 다음에 별도의 스토리지 벡엔드에 저장하도록 하는 구조입니다. 이 때 많이사용하는 벡엔드 스토리지로는 influxDB가 있습니다. 그리고 influxDB에 저장된 데이터를 조회할때는 대시보드 도구인 grafana를 많이 사용합니다.이 세트를 실행하는건 heapster 소스에 포함되어 있습니다.다음처럼 heapster소스를 받아서 deploy 디렉토리로 들어가면 관련 파일들이 보입니다.heapster/deploy/이중에서 kube.sh를 이용하면 힙스터를 실행할 수 있습니다.kube.sh start로 실행이 가능하고 kube.sh stop으로 멈출 수 있습니다.kube.sh 파일 내용을 살펴보면 deploy 디렉토리 밑에 있는 kube-config/influxdb 디렉토리에 있는 yaml파일들을 실행한다는걸 알 수 있습니다. 이 yaml파일들을에 grafana에 쉽게 접근할 수 있게 하기위해서 kube-config/influxdb/grafana.yaml 파일을 조금 수정해 보겠습니다. 파일의 마지막에 있는 서비스 부분을 기본 ClusterIP를 사용하는 것에서 다음처럼 NodePort를 사용하도록 변경합니다.ports:- port: 80targetPort: 3000nodePort: 30081selector:k8s-app: grafanatype: NodePort그런다음 kube.sh start로 heapster, influxdb, grafana를 실행합니다. 실행 후 데이터가 처음으로 수집되기 까지는 몇분정도 걸릴 수 있습니다. 잠시 후 브라우저에서 http://localhost:30081/ 로 접근해 보면 grafana가 실행된걸 확인할 수 있습니다. grafana에서 다음처럼 대시보드와 패널을 세팅해서 메모리 사용량에 대한 그래프를 볼 수 있습니다. 추가로 수집되고 있는 메트릭에 대한 그래프를 원하는대로 grafna에 설정해서 볼 수 있습니다.
힙스터가 실행되면 대시보드에서도 관련 데이터를 가져와서 보여줄 수 있게 됩니다. 아래 그림처럼 CPU, 메모리 전체 사용량을 보여주고 하단의 포드에 대해서는 포드별 cpu, 메모리 사용량도 보여줍니다.
참고'Kubernetes' 카테고리의 다른 글
쿠버네티스 모니터링 : metrics-server (kubernetes monitoring : metrics-server) (1) 2018.09.07 쿠버네티스 모니터링 아키텍처(kubernetes monitoring architecture) (0) 2018.09.03 쿠버네티스 대시보드(kubernetes dashboard) (3) 2018.08.31 쿠버네티스 로깅(kubernetes logging) (13) 2018.08.29 쿠버네티스 네트워킹 : 서비스 네트워킹(kubernetes service networking) (2) 2018.08.27 댓글