k8s monitoring with prometheus/grafana

코드깎는 노인·2023년 4월 27일
0
post-thumbnail

prometheus core components

Data Retrieval Worker

어플리케이션으로 부터 메트릭을 수집하고 시계열 데이터로 변환

Time Series Database

메트릭 데이터를 시계열 형식으로 저장

HTTP Server

시계열데이터 쿼리요청에 대해 응답하고 웹UI의 대시보드에서 데이터를 보여준다.

prometheus를 통한 모니터링이 중요한 이유

장애 대응 시간 단축: 프로메테우스를 사용하여 인프라 및 애플리케이션 성능을 모니터링하면, 장애 발생 시 빠른 대응이 가능합니다. 모니터링 데이터를 기반으로 이상 현상을 빠르게 감지하여 대응할 수 있으며, 장애 대응 시간을 단축하여 시스템 가용성을 높일 수 있습니다.

성능 최적화: 프로메테우스를 사용하여 인프라 및 애플리케이션의 성능을 모니터링하면, 병목 현상이나 성능 저하 원인을 파악할 수 있습니다. 이를 통해 성능 최적화 작업을 수행할 수 있으며, 시스템 성능을 향상시킬 수 있습니다.

운영 데이터 수집 및 분석: 프로메테우스는 다양한 지표를 수집하고 분석할 수 있는 기능을 제공합니다. 이를 활용하여 운영 데이터를 수집하고 분석하면, 시스템 운영에 대한 인사이트를 얻을 수 있습니다. 이를 통해 시스템 운영에 대한 전반적인 이해도를 높일 수 있으며, 운영 전략 수립에 도움이 됩니다.

스케일링: 컨테이너 기반의 애플리케이션은 빠르게 스케일링되는 특징이 있습니다. 이 때, 프로메테우스를 사용하여 성능을 모니터링하면, 스케일링 작업에 대한 실시간 모니터링이 가능해집니다. 이를 통해 스케일링 작업을 보다 더 효율적으로 수행할 수 있습니다.

grafana란

그라파나는 프로메테우스 데이터및 기타 데이터소스로부터 데이터를 가져와서 시각화하는 역할을 합니다. 즉, 프로메테우스가 데이터를 수집하고 저장한 다음, 그라파나가 프로메테우스로부터 데이터를 가져와서 그래프나 대시보드 등의 시각화를 생성합니다. 따라서 그라파나가 데이터를 가져오는 측면에서 중요한 역할을 하지만, 실제 데이터 수집과 저장은 프로메테우스가 수행합니다.

node-exporter란

node-exporter란

node-exporter는 쿠버네티스 노드에서 실행되는 메트릭 수집기 중 하나입니다. 노드에서 실행 중인 시스템 수준 메트릭을 수집하고 프로메테우스와 같은 모니터링 시스템에 전달합니다.

노드에서 실행되는 CPU, 메모리, 디스크 및 네트워크 사용량과 같은 시스템 수준 메트릭을 수집합니다. 또한 프로세스 메트릭, 컨테이너 메트릭, 파일 시스템 메트릭 등도 수집할 수 있습니다.

node-exporter는 쿠버네티스 클러스터 내에서 동작하며 각 노드에서 구동됩니다. 일반적으로 DaemonSet 형태로 배포되어 각 노드에서 실행됩니다.

kube-prometheus-stack과 같은 모니터링 솔루션을 사용하여 쿠버네티스 클러스터의 메트릭을 모니터링하려면, node-exporter가 적절하게 설치되어 있어야 합니다.

prometheus/grafana 설치

기본설치

kube-prometheus-stack으로 설치시 promethus,grafana,node-exporter가 패키지로 설치됨

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

커스텀 설정 설치

default value for prometheus.yaml

helm install -f prometheus.yaml prometheus prometheus-community/prometheus

설치 후 서비스 리스트

prometheus의 기본 포트는 9090,node-exporter는 9100,grafana 3000이다.

설치 후 pod 리스트

네임스페이스에 구성된 노드갯수(8개)만큼 node-exporter가 각 노드별 설치되어 8개의 node-exporter pod이 생성되었다.

prometheus/grafana 접속하기

prometheus 접속하기

kubectl port-forward -n <name-space> <pod-name> <local-port>:<service-port>

ex) kubectl port-forward prometheus-prometheus-kube-prometheus-prometheus-0 9090:9090

prometheus 메트릭 접속하기

ex) kubectl port-forward prometheus-kube-state-metrics-75cb965fc-dwhkg 8080:8080

grafana 접속하기

초기 계정정보

id:admin

pw:prom-operator

비밀번호 찾기

kubectl get secret <grafana-service-name> -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

ex) kubectl port-forward prometheus-grafana-5c455c68cf-lnvz4 3000:3000

grafana 커스텀 대시보드 구성

  • json import 및 datasource 선택

reference

https://devapo.io/blog/technology/how-to-set-up-prometheus-on-kubernetes-with-helm-charts/

https://sweetcode.io/how-to-integrate-prometheus-and-grafana-on-kubernetes-with-helm/

https://devapo.io/blog/technology/how-to-set-up-prometheus-on-kubernetes-with-helm-charts/

profile
내가 볼려고 만든 블로그

0개의 댓글