Prometheus와 Grafana로 구현하는 Kubernetes 모니터링

2024. 1. 4. 21:58·Kubernetes
목차
  1. 1. 로컬 환경에서 Docker Desktop을 이용한 Kubernetes 클러스터 구축
  2. 2. Kubernetes에 Prometheus와 Grafana 설치
  3. 3. Node Exporter를 설치 및 로그 확인
  4. 4. Grafana를 통한 대시보드 구성
  5. 5. 마무리

Kubernetes는 대규모 서비스 운영에서 사실상 표준으로 자리 잡았다. 그러나 효율적이고 안정적인 운영을 위해선 견고한 모니터링 시스템을 구축이 필수적이다. 이 글에서 Prometheus와 Grafana를 사용하여 효과적인 Kubernetes 모니터링 시스템을 구축하는 방법을 소개한다.

1. 로컬 환경에서 Docker Desktop을 이용한 Kubernetes 클러스터 구축

로컬 환경에서도 Kubernetes를 설치할 수 있는 방법이 여러 가지가 있다. 그중 Docker Desktop 이용해 Kubernetes 환경을 구축해 보자.

  1. Docker Desktop 설치
    https://www.docker.com/products/docker-desktop/ 여기에 들어가면 OS별 설치 파일이 제공된다.
  2. Enable Kubernetes

2. Kubernetes에 Prometheus와 Grafana 설치

Kubernetes 모니터링을 위해선 당연히 데이터를 수집할 수 있는 주체가 있어야 하고 그 데이터를 보여줄 수 있는 주체가 있어야 한다.

  • Promethues: 데이터 수집 및 저장을 담당
  • Grafana: 데이터를 시각화 및 사용자 친화적인 인터페이스 제공

각각 설치는 Helm을 통해 수행할 수 있다. (Helm 설치)
Promethues 설치

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

Grafana 설치

helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana grafana/grafana

3. Node Exporter를 설치 및 로그 확인

우리가 원하는 바는 Kubernetes의 상태를 모니터링하는 것이다 .Promethues는 데이터를 수집해 주고 Grafana는 수집된 데이터를 보여주는데, 현재 수집된 데이터가 없다.

Kubernetes는 하나 이상의 노드로 구성되고 이 노드를 모니터링하는 게 Kubernetes의 상태를 모니터링하는 것이다.
노드(Node)의 상태를 조회하는 수집기 역할을 하는 것이 설치하고자 하는 Node Exporter가 하는 일이다.

2024.01.04 기준 prometheus를 helm으로 설치하니 node-exporter가 자동으로 설치되었다.


node exporter는 노드의 상태를 조회하기에 노드마다 하나씩 필요하다. 이러한 성격의 Pod를 배포하기 위해 대부분의 경우 데몬 셋 사용한다. 위 스크린샷을 통해 잘 배포된 것을 확인했다.

따라서 별도의 설치는 필요 없다.

4. Grafana를 통한 대시보드 구성

Grafana는 "사용자 친화적인 인터페이스 제공" 한다고 했다. UI를 제공하니 port-forward를 통해 접근해 보자.

kubectl port-forward svc/grafana 3000:80

이제 http://localhost:3000에 접근하면 된다.

  • username: admin
  • password: 명령어의 결과 -> kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

이제 Grafana에서 해줘야 할 일은 두 가지이다.

  1. Prometheus 연결하기
  2. 대시보드 구성하기

위 스크린샷에서 Data Source를 클릭해서 Prometheus를 등록하자.
Connection 정보에 prometheus server URL을 입력해야 하는데 같은 클러스터에 배포되어 있기에 해당 서비스 DNS를 입력해 주면 된다.
http://prometheus-server.default.svc.cluster.local

나머지는 추가로 입력할 부분 없이 제일 아래로 이동해서 Save & test로 등록을 마치자.

이제 남은 건 대시보드 구성하기이다.
Grafana의 큰 장점이라 생각하는데, 공통 애플리케이션을 위한 다양한 미리 정의된 대시보드를 제공한다.
Dash Board를 클릭하면 Import dashboard 버튼을 확인할 수 있을 것이다.
이제 아래와 같은 스크린샷을 확인할 수 있다.

우리한테 필요한 Node Exporter Full을 가져오기 위해 1860을 입력한 뒤 Load를 클릭하자.

이제 다음과 같은 대시보드를 볼 수 있다.

5. 마무리

Prometheus는 Pull 기반으로 메시지를 수집한다. 이 포스팅에선 아래와 같이 Prometheus가 메시지를 수집한다.

  1. node exporter가 노드의 메트릭을 수집한다.
  2. HTTP 서버를 통해 노출한다.
  3. 일정 주기로 node exporter의 HTTP 엔드포인트에 요청을 보낸다.

node expoter는 노드의 메트릭을 수집하는 역할을 했지만 당연히 Application에서 발생하는 Custom Metric을 Prometheus를 통해 수집하고 Grafana를 통해 시각화할 수 있다. 다음 포스팅에선 이를 다뤄보자.

  1. 1. 로컬 환경에서 Docker Desktop을 이용한 Kubernetes 클러스터 구축
  2. 2. Kubernetes에 Prometheus와 Grafana 설치
  3. 3. Node Exporter를 설치 및 로그 확인
  4. 4. Grafana를 통한 대시보드 구성
  5. 5. 마무리
'Kubernetes' 카테고리의 다른 글
  • [Tip] 로컬 환경의 Kubernetes에서 로컬에 있는 도커 이미지 사용하기
  • Helm 빠르게 시작하기
  • 쿠버네티스 설치 in local
  • kubectl과 kubectx 그리고 OpenLens
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    태그2
    Confluent Cloud
    fluentbit
    LangChain
    FastAPI
    datadrift
    Docker
    producer
    Schema Registry
    auto tagging
    gcp
    Spark
    MLOps
    태그1
    topic
    Kubernetes
    BentoML
    Kafka
    Python
    asyncronous
    Airflow
    consumer
    RDD
    Kubeflow
    LLM
    Prometheus
    Github Actions
    evidently ai
    mlflow
    redis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
Prometheus와 Grafana로 구현하는 Kubernetes 모니터링

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.