본문 바로가기

Infra/Google Cloud

[Google Cloud] Google Study Jam : Managing Deployments Using Kubernetes Engine (3)

728x90
반응형
본 포스트는 2024년 Google Study Jam을 공부하면서 개인적으로 내용을 정리한 포스트 입니다.

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 1. Deploy GKE cluster

GKE(Google Kubernetes Engine) 클러스터 세팅

gcloud beta container clusters create gmp-cluster --num-nodes=1 --zone Zone --enable-managed-prometheus
gcloud container clusters get-credentials gmp-cluster --zone=Zone

 

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 2. Set up a namespace

gmp-test Kubernetes namespace 생성

kubectl create ns gmp-test

 

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 3. Deploy the example application

application을 배포

kubectl -n gmp-test apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.2.3/examples/example-app.yaml

 

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 4. Configure a PodMonitoring resource

배포한 application에서 나오는 매트릭을 수집하려면 타겟 스크래핑이 필요하다.

타겟 스크래핑과 매트릭 수집은 Kubernetes custom resources 사용하여 구성된다.

관리 서비스는 PodMonitoring 사용자 정의 리소스(CRs)를 사용한다.

 

PodMonitoring CRCR이 배포된 네임스페이스에서만 대상을 스크래핑한다. 여러 네임스페이스에서 대상을 스크래핑하려면 각 네임스페이스에 동일한 PodMonitoring CR을 배포한다. kubectl get podmonitoring -A을 실행하여 PodMonitoring 리소스가 의도한 네임스페이스에 설치되었는지 확인할 수 있다.

 

Prometheus 용 관리형 서비스에 대한 문서

 

prometheus-engine/doc/api.md at v0.2.3 · GoogleCloudPlatform/prometheus-engine

Google Cloud Managed Service for Prometheus libraries and manifests. - GoogleCloudPlatform/prometheus-engine

github.com

 

Prometheus pods를 배포한다.

apiVersion: monitoring.googleapis.com/v1alpha1
kind: PodMonitoring
metadata:
  name: prom-example
spec:
  selector:
    matchLabels:
      app: prom-example
  endpoints:
  - port: metrics
    interval: 30s
kubectl -n gmp-test apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.2.3/examples/pod-monitoring.yaml

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 5. Download the prometheus binary

Prometheus binary를 다운로드한다.

git clone https://github.com/GoogleCloudPlatform/prometheus && cd prometheus
git checkout v2.28.1-gmp.4
wget https://storage.googleapis.com/kochasoft/gsp1026/prometheus
chmod a+x prometheus

 

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 6. Run the prometheus binary

Prometheus binary를 실행

export PROJECT_ID=$(gcloud config get-value project)
export ZONE=Zone
./prometheus \
  --config.file=documentation/examples/prometheus.yml --export.label.project-id=$PROJECT_ID --export.label.location=$ZONE

 

Collect Metrics from Exporters using the Managed Service for Prometheus - Task 7. Download and run the node exporter

node exporter를 다운로드 받고 실행(node exporter는 pods의 리소스를 모니터링 할 수 있다.)

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
 tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
 ./node_exporter

 

 

config.yaml 파일 만들기

vi config.yaml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: node
    static_configs:
      - targets: ['localhost:9100']

 

config.yaml upload

export PROJECT=$(gcloud config get-value project)
gsutil mb -p $PROJECT gs://$PROJECT
gsutil cp config.yaml gs://$PROJECT
gsutil cp config.yaml gs://$PROJECT

 

prometheus pointing을 재실행

./prometheus --config.file=config.yaml --export.label.project-id=$PROJECT --export.label.location=$ZONE

728x90
반응형