Print
카테고리: [ Cloud Computing & MSA ]
조회수: 29223

1. 개요

Kubernetes와 Prometheus는 매우 밀접한 관계이다.

Kubernetes의 전신은 Borg라고 할 수 있는데, Borgmon이 Prometheus에 큰 영향을 주었기 때문이다.


2. Prometheus

주기적인 간격을 정의한 후, 쿼리되는 Scraping 대상을 구성하여 측정 지표의 값을 가져온다.

Scraping 대상은 일반적으로 HTTP 엔드포인트다.

Scraping된 값은 Prometheus 시계열 DB에 저장된다.


3. 구글 모니터링을 위해서는?

로컬 Prometheus DB에서 Cloud Monitoring 같은 모니터링 솔루션으로 측정 값을 보낸다.


4. GKE 클러스터에 Prometheus 설치

4.1. 클러스터에 Prometheus 용 Namespace 생성

kubectl create namespace prometheus --context gke

4.2. Prometheus Kubernetes 서비스 계정, ClusterRole 역할, 클러스터 역할 결합 생성

cd $WORKDIR
kubectl apply -f prometheus-service-account.yaml --context gke

4.3. configmap 생성 (gke 클러스터에서 실행되는 측정 항목 Scraping)

kubectl apply -f prometheus-configmap.yaml --context gke

4.4. 매니패스트 환경 변수 정의

export KUBE_NAMESPACE=prometheus
export KUBE_CLUSTER=gke
export GCP_REGION=us-west2-a
export GCP_PROJECT=$(gcloud info --format='value(config.project)')
export DATA_DIR=/prometheus
export DATA_VOLUME=prometheus-storage-volume
export SIDECAR_IMAGE_TAG=release-0.3.2

4.5. 매니패스트 적용

envsubst < gke-prometheus-deployment.yaml | kubectl --context gke apply -f -

4.6. Pod 실행 여부 확인

kubectl get pods -n prometheus --context gke
NAME                                     READY     STATUS    RESTARTS   AGE
prometheus-deployment-6b5df7b5ff-ghqb2   2/2       Running   0          20s

4.7. 컨테이너 이미지 확인

kubectl --context gke get pods -n prometheus -o json | jq '.items[].spec.containers[].image'

4.8 gke 클러스터 내 Prometheus UI 포트 전달

export PROMETHEUS_POD_GKE=$(kubectl get pods --namespace prometheus -l "app=prometheus-server" \
    -o jsonpath="{.items[0].metadata.name}" \
    --context gke)
kubectl --context gke port-forward --namespace prometheus $PROMETHEUS_POD_GKE 9090:9090 >> /dev/null &