프로메테우스로 모니터링 연동

  1. 프로메테우스 소개  

프로메테우스는 모니터링 솔루션으로 가장 많이 언급되는 모니터링 툴로 2016년 CNCF(Cloud Native Computing Foundation) 에 오픈소스로 기부되었고, 지표수집을 통한 모니터링을 주요 기능으로 한다. 애플리케이션, 서버, OS 등 다양한 지표를 수집하여 모니터링 할 수 있으며 다양한 그래픽 모드와 대시보드를 지원한다.

ex_screenshot

[그림-1] 프로메테우스 아키텍처

 

상기의 스크린샷은 프로메테우스의 아키텍처이며 서비스 디스커버리를 통해 클라이언트를 검색하며 시계열(Time Series) 데이터를 수집한다. 프로메테우스는 Pull 방식으로 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식으로 동작한다.

 

 

  1. Helm Chart를 이용한 프로메테우스 설치   

프로메테우스는 OS별로 다운로드 페이지를 통해 다운로드 받을 수도 있고 도커 이미지로 제공도 하고 있다.

 

다운로드 페이지: https://prometheus.io/download/

도커이미지로 설치: https://prometheus.io/docs/prometheus/latest/installation/

 

여기서는 미니큐브(minikube)의 단일 클러스터 환경에서 Helm Chart를 이용해 프로메테우스를 설치해 보도록 한다.

 

   

1. 미니큐브(minikube) 실행  

미니큐브를 실행한다. 미니큐브를 설치하는 방법은 따로 설명하지 않는다.

 

 

  1. Helm 설치방법  

미니큐브 클러스터가 실행되었으므로 Helm을 설치한다. Helm은 서버(Tiller)와 클라이언트 두개의 모듈이 있으며  설치는 다음 링크(https://helm.sh/docs/using_helm/)를 통해 할 수 있다. 미니큐브 환경에서는 다음과 같이 tiller를 자동으로 실행할 수 있다.

$ helm init  

3. Chart를 이용한 프로메테우스 설치  

아래와 같이 git clone 으로 chart를 다운로드 받는다.

$ git clone https://github.com/kubernetes/charts  

chart 설치 후에 /charts/stable/prometheus폴더로 이동

$ cd /charts/stable/prometheus  

다음과 같이 prometheus라는 네임스페이스에 prometheus라는 이름으로 설치를 한다.

$ helm install -f values.yaml stable/prometheus –name prometheus –namespace prometheus  

 

이제 prometheus라는 이름의 네임스페이스로 프로메테우스가 설치된다.

 

ex_screenshot

[그림-2] prometheus 설치 화면

 

 

3. 쿠버네티스 환경에서 프로메테우스 모니터링 연동   

  1. 포트포워딩으로 포트 expose  

프로메테우스를 설치하였으므로 쿠버네티스 환경의 지표를 수집하는지 확인해야 한다. prometheus라는 이름의 네임스페이스를 만들었으므로 해당 네임스페이스의 팟(pod) 목록을 확인한다.

$ kubectl get pod -n prometheus  

 ex_screenshot

[그림-3] prometheus pod 목록

 

여기서 주의깊게 보아야 할것은 prometheus-server-** 팟 이름이다. 통상 프로메테우스는 9090포트로 웹 인터페이스를 제공하며 해당 웹 인터페이스를 보기 위해서는 외부서비스를 expose해야 확인이 가능하다. 그러므로 prometheus-server-5947775fbc-qdpbk의 팟을 9090 포트포워딩으로 노출해 주도록 한다.

 

kubectl port-forward -n   로 노출한다.

$ kubectl port-forward -n prometheus prometheus-server-5947775fbc-qbobk 9090

이제 9090포트가 노출되었으므로 localhost:9090으로 접근해보면 다음과 같이 대시보드를 볼 수 있다.

 

 ex_screenshot

[그림-4] prometheus 대시보드

 

빈 화면이며 지표들을 보기 위해서는 expression을 입력하여 쿼리를 전송 하면 된다.

 

 

2. 각 모니터링 대상 및 지표 확인  

동작을 확인하기 위해 쿼리문 하나를 입력해서 결과를 얻을 수 있다.

ex_screenshot

[그림-5] prometheus 대시보드에서 쿼리문 결과

 

다음으로 모니터링 할 대상들을 살펴본다.  상단의 탭에서 Status를 선택한 후 Service Discovery를 선택한다. kubernetes-apiserviers, kubernetes-node 등 쿠버네티스 관련 대상들에 대한 목록이 표시된다.

 

ex_screenshot

[그림-6] service-discovery 대상 목록

 

그럼 이제 Target 메뉴를 선택하면 각각의 모니터링 대상들에 대한 지표를 어디서 가져오는지 알 수 있다. (정상일때는 up상태이다. 순간적으로 클러스터가 stop되서 스크린샷은 State가 DOWN으로 되어있다)

 

Graph에서 각각의 대상에 대한 모니터링 상태를 다음과 같이 확인할 수 있다. 

ex_screenshot [그림-7] kube_daemonset_status 그래프

 

comments powered by Disqus