본문 바로가기

Observability/Prometheus

[Prometheus](GCP)Stackdriver-exporter multiple projects monitoring with service account

Concept

모니터링 권한을 가진 Service Account를 이용하면 여러 프로젝트를 한 곳에서 Exporter를 띄워 관리할 수 있다.

Create Service Account and Edit permissions

  • Logs Viewer
  • Monitoring Viewer

Prometheus 서버를 GCP에 설치 하는 경우 Service Account에 아래 권한이 필요하다.

  • 나의 경우 GKE로 운영중이고 GKE를 만들때 설정한 SA 계정에서 설정함

  • 노드에서 확인 가능

  • Service Account User

Create Secret from Service Account key

Kubernetes Secret 만드는 방법 참고
2022.07.08 - [Kubernetes] - [Kubernetes]How to create Kubernetes Secret from Json/Yaml/Literal

  • 모니터링 대상 프로젝트에서 생성한 Service Account의 key.json을 발급/다운로드 한다.
  • key.json의 이름을 credentials.json 으로 수정한 뒤 secret으로 생성한다.
k create secret generic sa-for-monitoring-1 --from-file=credentials.json -n monitoring

Modify prometheus-exporter Helm chart

Install Prometheus 참고
2022.05.29 - [Monitoring/Prometheus] - [Prometheus]Install prometheus for kubernetes monitoring with helm chart

# line 43
stackdriver:
  # The Google Project ID to gather metrics for
  projectId: "other-project-name" # 
  # An existing secret which contains credentials.json
  serviceAccountSecret: "sa-for-monitoring-1"
  • stackdriver.serviceAccountSecret
    • 위에서 생성한 secret명을 입력한다. (여기서는 sa-for-monitoring-1)

Install helm chart and check data from prometheus

helm install p-2 . -n monitoring

Verify monitoring data

노출시킨 서비스주소로 접속하면 데이터가 수집되는것을 확인할 수 있다.

Add scrape config to prometheus-stack

kube-prometheus-stack에 위 주소를 등록한다.

Install prometheus-stack 참고
2022.05.29 - [Monitoring/Prometheus] - [Prometheus]Install prometheus for kubernetes monitoring with helm chart
additionalScrapeConfigs:
    - job_name: stackdriver
      static_configs:
      - targets:
        - p-1-prometheus-stackdriver-exporter.monitoring.svc.cluster.local:9255
        labels:                           
          project: 'jm-han'
  • scrape_configs
    • labels을 통해 프로젝트를 분류하여 대시보드 또는 알람을 분리할 수 있다.