Prometheus 배포하기

1. 사전 준비

Prometheus 와 Grafana를 Helm을 사용하여 설치합니다. Helm이 설치 되어 있지 않다면 여기로 이동하여 Helm 설치를 진행합니다.

Helm 설치가 완료되었다면, 아래 명령어를 수행하여 Prometheus와 Grafana를 설치합니다.

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

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

2. Prometheus 배포하기

Kubernetes의 코어 구성 요소는 제어 영역(Control Plane)에서 처리되는 일들의 확인에 사용될 수 있는 다양한 통계 지표 세트를 제공합니다. 지표를 통해 API 서버의 각 리소스에 있는 감시 프로그램의 수, 감사 추적 이벤트의 수, API 서버로의 요청 지연 시간 등의 다양한 정보를 확인할 수 있습니다. 이러한 지표는 Kubernetes API 서버, Kubelet, 클라우드 컨트롤러 관리자 및 스케줄러를 통해 제공됩니다.

지표를 시각화, 모니터링 및 알림 설정하기 전에, 이러한 지표 엔드포인트가 어떻게 출력 되는지 볼 수 있습니다.

kubectl get --raw /metrics

이 예에서는 기본적으로 표준 구성을 사용하지만 스토리지 클래스를 정의해야 합니다. 단순성과 검증 목적으로 gp2 EBS volumes을 사용하겠습니다. 실제 운영환경에서는 gp3 또는 필요한 경우 io2 volume을 사용하고 매니페스트의 기본 스토리지 크기를 늘려 성능을 향상시킬 수 있습니다. 다음 명령을 실행합니다.

kubectl create namespace prometheus

helm install prometheus prometheus-community/prometheus \
    --namespace prometheus \
    --set alertmanager.persistentVolume.storageClass="gp2" \
    --set server.persistentVolume.storageClass="gp2" \
    --set server.service.type=LoadBalancer

아래와 같은 결과에서 Prometheus endpoint를 기록해 둡니다.

Prometheus 구성요소가 정상적으로 배포 되었는지 아래 명령어로 확인합니다.

kubectl get all -n prometheus

Prometheus 서버 URL에 액세스하기 위해 로드 밸런서의 주소를 확인합니다.

kubectl get svc --namespace prometheus prometheus-server

브라우저창에 EXTERNAL-IP의 DNS을 복사하고 URL 마지막에 /targets 를 추가합니다.

[Graph]로 이동하여 검색 창에 apiserver_로 시작하는 지표 중 하나를 선택하고 [Execute ]를 클릭합니다. 이렇게 하면 API 서버에서 마지막으로 동기화된 데이터가 로드 됩니다.

Prometheus를 사용하면 Kubernetes API 서버 내에 어떤 일이 진행되는지 볼 수 있으며 시간의 흐름에 따른 이러한 지표의 변화를 그래프로 표시할 수 있습니다.

Prometheus 배에 대한 자세한 내용은 아래 링크를 참고하세요.

https://aws.amazon.com/ko/blogs/korea/amazon-eks-control-plane-metrics-prometheus/

Last updated