본문 바로가기
Infra, Cloud/Kubernetes

Kubernetes 모니터링 구축: Helm으로 kube-prometheus-stack 설치하기 (Docker Desktop)

by J4J 2025. 9. 2.
300x250
반응형

안녕하세요. J4J입니다.

 

이번 포스팅은 kubernetes 모니터링을 위한 helm으로 kube-prometheus-stack을 설치하는 방법에 대해 적어보는 시간을 가져보려고 합니다.

 

 

 

관련 글

 

Helm 이란? Helm 입문을 위한 기본 개념 설명

 

Helm 이란? Helm 입문을 위한 기본 개념 설명

안녕하세요. J4J입니다. 이번 포스팅은 helm 입문을 위한 기본 개념 설명하는 시간을 가져보려고 합니다. Helm 이란? helm이라고 하는 것은 kubernetes를 사용하는 환경에서 kubernetes cluster가 관리하는 영

jforj.tistory.com

 

Window에서 Chocolately로 Helm 설치하기 & Helm 명령어 정리

 

Window에서 Chocolately로 Helm 설치하기 & Helm 명령어 정리

안녕하세요. J4J입니다. 이번 포스팅은 window에서 chocolately로 helm 설치하는 방법과 사용할 수 있는 명령어에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 Helm 이란? Helm 입문을 위한 기본 개

jforj.tistory.com

 

Kubernetes 모니터링을 위한 Prometheus, Grafana 개념 정리

 

Kubernetes 모니터링을 위한 Prometheus, Grafana 개념 정리

안녕하세요. J4J입니다. 이번 포스팅은 kubernetes 모니터링을 위한 prometheus, grafana 개념에 대해 적어보는 시간을 가져보려고 합니다. Kubernetes 모니터링이 필요한 이유 kubernetes 환경에서 여러 개의 po

jforj.tistory.com

 

Helm으로 설치하는 Kubernetes 모니터링: Prometheus와 Grafana 실습 (Docker Desktop)

 

Helm으로 설치하는 Kubernetes 모니터링: Prometheus와 Grafana 실습 (Docker Desktop)

안녕하세요. J4J입니다. 이번 포스팅은 helm으로 kubernetes 모니터링을 위한 prometheus, grafana 설치하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 관련 글 Helm 이란? Helm 입문을 위한 기본 개념

jforj.tistory.com

 

 

반응형

 

 

Kube Prometheus Stack 설치

 

앞선 글에서 설명드린 것처럼 kubernetes에서 prometheus와 grafana를 설치하려고 할 때 개별적으로 필요한 서비스들을 각각 설치하는 것보다 kube-prometheus-stack을 이용하는 것을 권장합니다.

 

왜냐하면 모니터링에 필요한 기본적인 서비스들이 모두 자동 구성되기 때문에 편리하게 설치가 가능하며, 다양한 CRD를 통한 서비스 관리와 운영 자동화 등과 같은 다양한 환경을 제공하기 때문입니다.

 

kube-prometheus-stack은 helm을 이용하여 설치하면 정말 편리하게 설치할 수 있습니다.

 

그래서 helm을 이용한다면 어디서든 쉽게 kubernetes를 위한 모니터링 환경을 빠르게 구축할 수 있습니다.

 

 

 

추가적인 안내(?) 사항으로 이번 글에서는 테스트를 위해 docker desktop에 kube-prometheus-stack을 설치합니다.

 

여러 가지 테스트를 해본 결과 기존에 prometheus와 grafana를 별도로 설치한 적이 있는 경우 올바른 설치가 이루어지지 않을 수 있습니다.

 

만약 설치가 정상적으로 이루어지지 않는다면 docker desktop cluster를 초기화 한 뒤 설치하는 것을 권장합니다.

 

또한 서버 내부에서 설치하면은 상관없지만 docker desktop을 이용하여 하다 보니 다른 환경보다 제약사항이 있어 추가적인 설정들이 다소 들어가 있습니다.

 

 

 

 

[ 1. 테스트를 위한 namespace 구성 ]

 

논리적인 환경 구분을 목적으로 namespace를 생성하려고 합니다.

 

필수적인 사항은 아니기에 필요하지 않으신 분들은 구성하지 않으셔도 상관 없습니다.

 

$ kubectl create namespace monitoring

 

 

 

[ 2. prometheus-community repo 추가 ]

 

helm을 이용하여 kube-prometheus-stack을 설치할 repository를 추가합니다.

 

$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update

 

 

 

[ 3. kube-prometheus-stack values 구성 ]

 

kube-prometheus-stack 설치를 위한 설정 정보에 사용하기 위해 values를 다음과 같이 구성합니다.

 

위에서 얘기한 것처럼 docker desktop 환경 때문에 불필요한 설정들이 일부 들어가 있습니다.

 

// kube-prometheus-stack-values.yaml

prometheus:
  prometheusSpec:
    storageSpec:
      emptyDir: {} # prometheus 저장소를 emptyDir로 설정, pod 삭제되는 경우 데이터 함께 삭제 (docker desktop에서 pvc 사용 불가능하여 설정)
    image: # prometheus image 설정 (docker desktop에서 기본 이미지 사용 불가능하여 설정)
      registry: docker.io
      repository: bitnami/prometheus
      tag: 3.4.1
      pullPolicy: IfNotPresent
    maximumStartupDurationSeconds: 60 # prometheus container 시작 최대 허용 시간 (초 단위)

prometheus-node-exporter:
  hostRootFsMount:
    enabled: false # node exporter container가 호스트 파일 시스템 직접 마운트 여부 설정 (docker desktop에서 마운트 불가능하여 설정)
  
prometheusOperator:
  image: # prometheus operator image 설정 (docker desktop에서 기본 이미지 사용 불가능하여 설정)
    registry: docker.io
    repository: bitnami/prometheus-operator
    tag: 0.82.1
    pullPolicy: IfNotPresent
  prometheusConfigReloader:
    image: # prometheus config reloader image 설정 (docker desktop에서 기본 이미지 사용 불가능하여 설정)
      registry: docker.io
      repository: giantswarm/prometheus-config-reloader
      tag: v0.82.1
      pullPolicy: IfNotPresent

 

 

 

[ 4. kube-prometheus-stack 설치 ]

 

위에서 설정한 values 파일을 이용하여 설치를 해보겠습니다.

 

또한 grafana를 설치할 때 web ui의 admin 계정 비밀번호 설정이 필요한 경우 다음과 같이 옵션을 추가하거나 values 파일에서도 설정할 수 있습니다.

 

만약 비밀번호를 따로 설정하지 않는다면 비밀번호는 "prom-operator"로 자동 설정됩니다.

 

$ helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring -f kube-prometheus-stack-values.yaml --set grafana.adminPassword="admin"

 

 

 

 

Kube Prometheus Stack 설치 확인

 

kube-prometheus-stack 설치가 완료되었다면 다음 명령어를 이용하여 관련 서비스들이 설치되어 있는지 확인해 줍니다.

 

$ kubectl get svc -n monitoring

 

kube-prometheus-server svc 확인

 

 

 

[ prometheus 설치 확인 ] 

 

promethues 설치가 올바르게 되었는지 확인하기 위해 prometheus의 web ui에 접속해 보겠습니다.

 

docker desktop 기준으로 다음과 같이 port forward 설정을 해볼 수 있습니다.

 

만약 서버에 설치된 prometheus를 접속하는 경우라면 ingress 또는 네트워크 설정 등을 추가로 확인해 주시면 됩니다.

 

$ kubectl port-forward svc/kube-prometheus-stack-prometheus 9090 -n monitoring

 

 

 

설정이 올바르게 되어 있는 경우라면 http://localhost:9090/에 접속하면 다음과 같은 web ui를 확인할 수 있습니다.

 

prometheus web ui 초기 페이지

 

 

 

 

[ grafana 설치 확인 ]

 

prometheus와 마찬가지로 grafana도 web ui에 접속하여 올바르게 설치되었는지 확인해 보겠습니다.

 

docker desktop 기준으로 다음과 같이 port forward 설정을 해볼 수 있습니다.

 

이 또한 만약 서버에 설치된 grafana를 접속하는 경우라면 ingress 또는 네트워크 설정 등을 추가로 확인해 주시면 됩니다.

 

$ kubectl port-forward svc/kube-prometheus-stack-grafana 3000:80 -n monitoring

 

 

 

설정이 올바르게 되어 있는 경우라면 http://localhost:3000/에 접속하면 로그인 창이 하나 나옵니다.

 

저와 동일하게 비밀번호 설정을 하신 분이라면 admin/admin을 입력하여 로그인을 할 수 있고, 로그인을 하면 다음과 같은 web ui를 확인할 수 있습니다.

 

grafana web ui 초기 페이지

 

 

 

kube-prometheus-stack을 사용하면 정말 편리한 것 중 하나가 kubernetes 모니터링을 위한 여러 가지 설정들이 기본적으로 담겨 있습니다.

 

대표적으로 어떠한 설정도 없었지만 내비게이션 바에서 Data sources 메뉴를 클릭하면 함께 설치된 prometheus와 alertmanager가 자동으로 설정되어 있는 것을 볼 수 있습니다.

 

grafana web ui data source 페이지

 

 

 

또한 네비게이션 바에서 Dashboards 메뉴를 클릭하면 kube-prometheus-stack에서 기본적으로 제공하는 대시보드들을 확인할 수 있습니다.

 

설정되어 있는 대시보드들 중 필요한 대시보드들을 선별하여 편리하게 사용할 수 있고, 각 프로젝트 별 상황에 맞는 별도의 설정을 추가적으로 적용하여 활용할 수 있습니다.

 

이전 글에서도 계속 얘기하고 있던 사항이지만 만약 오픈되어 있는 대시보드들을 추가적으로 구성해보고 싶다면 Grafana 공식 문서 대시보드를 이용해서도 편리하게 관리할 수 있습니다.

 

Grafana dashboards | Grafana Labs

No results found. Please clear one or more filters.

grafana.com

 

grafana web ui dashboard 페이지

 

 

 

[ service monitor 확인 ]

 

prometheus와 grafana 설치가 올바르게 되었다면 마지막으로 service monitor에 대해서 가볍게 언급해 보겠습니다.

 

먼저 service monitor는 다음 명령어를 이용하여 확인할 수 있습니다.

 

$ kubectl get servicemonitor -n monitoring

 

kube-prometheus-stack service monitor 확인

 

 

 

service monitor는 kube-prometheus-stack을 설치하면 prometheus operator를 이용하여 metric 정보를 수집할 수 있도록 도와주는 CRD입니다.

 

즉, promethues에 수집하고 싶은 metric 정보를 별도의 scrape 설정 없이 수집될 수 있도록 도와줍니다.

 

특히 svc를 타깃으로 잡고 있으며 대상이 될 svc selector, endpoint 설정 만으로 svc에 연결되어 있는 metric 정보를 수집해 옵니다.

 

 

 

이와 같은 방식은 우리만의 애플리케이션에서 생성된 metric 정보를 prometheus가 손쉽게 수집해 가는 것을 도와줍니다.

 

그리고 이렇게 수집된 metric 정보는 grafana에서 대시보드로 활용될 수도 있고, alertmanager를 이용하여 임계치 설정을 기반으로 한 알림도 제공할 수 있습니다.

 

다음 글에서 spring 애플리케이션을 배포하여 service monitor를 활용한 metric 정보 수집하는 방법을 가볍게 보여드리겠습니다.

 

 

 

 

 

 

이상으로 kubernetes 모니터링을 위한 helm으로 kube-prometheus-stack을 설치하는 방법에 대해 간단하게 알아보는 시간이었습니다.

 

읽어주셔서 감사합니다.

 

 

 

728x90
반응형

댓글