Prometheus & Grafana로 Kubernetes 모니터링하기

김철기·2022년 7월 7일
2

Kubernetes

목록 보기
5/5

안녕하세요. Gameeye에서 deeplol.gg 서비스를 개발 중인 김철기입니다.
클라우드 서버 인프라 구축, 백엔드 개발, 딥러닝 모델 연구를 담당하고 있습니다.

목차

모니터링 도구 소개

  • 프로메테우스(Prometheus)
  • 그라파나(Grafana)

모니터링 도구 설치

  • 설치
  • 확인

모니터링 설정

  • 대시보드 설정

이번 포스팅에서는 프로메테우스와 그라파나를 사용해 쿠버네티스(Kubernetes) 리소스를 모니터링 해보도록 하겠습니다.
쿠버네티스 클러스터 환경은 AWS EKS로 구축되었습니다.
자세한 내용은 시리즈의 이전 포스팅 참고해주시기 바랍니다.
AWS EKS로 Kubernetes를 사용해보자

모니터링 도구 소개

설치와 설정에 앞서 사용하고자하는 모니터링 도구를 간단히 알아보도록 하겠습니다.

프로메테우스

프로메테우스는 현재 가장 많이 사용되고 있는 쿠버네티스 모니터링 시스템입니다. 오픈소스이고 CNCF에 소속되어 있으며 클러스터 및 컨테이너들을 쉽게 모니터링할 수 있습니다.

주요 특징

  • 메트릭 이름과 key-value 형태로 식별되는 시계열 데이터를 제공합니다.
  • PromQL 이라는 쿼리 언어를 사용할 수 있습니다.
  • 경고(Alert)와 룰셋(Ruleset)을 만들 수 도 있습니다.
  • Grafana 같은 시스템을 이용하여 간단하게 대시보드를 만들 수 있습니다.

그라파나

그라파나는 지표를 분석, 시각화하는 오픈소스 도구입니다. 주로 인프라 정보 및 분석 데이터 시각화를 위한 대시보드로 사용됩니다. 프로메테우스 이외에도 시계열 데이터베이스(Graphite, Prometheus, Elasticsearch, InfluxDB) 및 클라우드 모니터링(Google Stackdriver, Amazon Cloudwatch, Microsoft Azure)도 지원합니다.

모니터링 도구 설치

helm을 이용해 설치합니다. heml 설치는 여기를 참고해주세요.

설치

설치에 앞서 사용할 namespace를 생성합니다.

kubectl create namespace monitoring

helm repo에 프로메테우스 커뮤니티 helm-chart를 등록해줍니다.

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

등록된 repo 정보를 업데이트합니다.

helm repo update

프로메테우스 & 그라파나를 설치합니다.

helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring

🚨설치가 안되는 경우 여기를 클릭해 내용을 복사한 뒤 values.yaml 파일을 생성하고 아래 명령어를 실행시켜줍니다.

helm install prometheus prometheus-community/kube-prometheus-stack -f "values.yaml" --namespace monitoring

확인

성공적으로 설치가 완료되면 해당 pod들이 실행되는 것을 확인할 수 있습니다.

kubectl --namespace monitoring get pods -l "release=prometheus"

웹 브라우저를 통해 그라파나에 접근해 정상적으로 동작하는지 확인합니다.
❗아래 명령어를 실행시킨 서버의 ip로 접근해주셔야 합니다. {ip주소}:3000
🚨 접근이 안되는 경우 3000번 포트로의 접근이 허용되는지 확인해주세요. 만약 EC2 인스턴스에서 실행시키셨으면 인바운드 규칙을 수정해주시면 됩니다.

kubectl port-forward service/prometheus-grafana 3000:80 --namespace monitoring

정상적으로 접근해주시면 아래와 같은 로그인 화면이 출력됩니다.

계정은 admin, 패스워드는 prom-operator 입니다.

모니터링 설정

대시보드 설정

대시보드를 설정하는 방법은 매우 다양합니다.
왼쪽 탭에서 Dashboard - New dashboard 선택 후 필요한 지표를 직접 구성해서 꾸밀수 있습니다.
저는 간단하게 다른 사람들이 생성해놓은 대시보드를 Import 해보았습니다.
아래 링크에서 맘에 드는 대시보드를 선택한 뒤 Copy ID to Clipboard 버튼을 눌러 ID를 복사합니다.
https://grafana.com/grafana/dashboards/?search=kubernetes

왼쪽 탭 Dashboard - Import를 선택 후 복사한 ID를 붙여넣은 뒤 load 버튼을 눌러줍니다. 그러면 아래처럼 Import할 수 있는 화면으로 변경됩니다.(저는 이미 Import해서 Overwrite가 보여지네요)

Import한 뒤 대시보드에서 선택해주면 아래처럼 모니터링 대시보드가 출력되는 것을 확인할 수 있습니다.

마무리

이번 포스팅에서는 쿠버네티스 리소스를 모니터링 할 수 있는 도구를 알아보고 설치해보았습니다. 프로메테우스 이외에도 AWS CloudWatch, ElasticSearch 등 여러 데이터를 시각화할 수 있다고하니 좀 더 연구해서 적극적으로 사용해봐야겠습니다. 앞으로 사용해보면서 좋은 대시보드를 발견하거나 더욱 유용하게 사용할 수 있는 방법을 찾게되면 포스팅하도록 할게요👊
포스팅 내용에 문제가 있거나 궁금한 부분은 댓글 남겨주시면 답변드리겠습니다!

참고

https://kangwoo.kr/2020/06/13/kubernetes-monitoring-1-kube-prometheus-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/
https://twofootdog.tistory.com/18
https://enumclass.tistory.com/249#toc-helm%EC%9C%BC%EB%A1%9C%20prometheus%20&%20grafana%EB%A5%BC%20%EC%84%A4%EC%B9%98%ED%95%98%EC%9E%90.

profile
Deepveloper, deeplol.gg, fleaman.shop

0개의 댓글