본문 바로가기

Observability/Prometheus

[Prometheus](AWS)Cloudwatch-exporter multiple projects monitoring with IAM User

Concept

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

Create Service Account and Edit permissions

Create Policy and Connect with iam user

Create Policy

  • name: cloudwatch-exporter

cloudwatch-exporter.json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricData",
                "cloudwatch:ListMetrics",
                "cloudwatch:GetMetricStatistics",
                "tag:GetResources",
                "tag:TagResources"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "true"
                }
            }
        }
    ]
}

Connect policy with iam role

  • CloudWatch
  • Resource Group Tagging

Create Secret from Service Account key

Kubernetes secret 만드는법 참고
2022.07.08 - [Kubernetes] - [Kubernetes]How to create Kubernetes Secret from Json/Yaml/Literal
  • 모니터링 대상 프로젝트에서 생성한 IAM User의 access-key.csv을 다운로드 한다.
  • csv파일의 Access key ID, Secret access key을 가지고 secret을 만든다.

secret example

apiVersion: v1
kind: Secret
metadata:
  name: sa-for-monitoring-1
type: Opaque
stringData:
    access_key: AKIA22J
    secret_key: yZGrY/X
k apply -f secret.yaml

Modify prometheus-cloudwatch-exporter Helm chart

Install cloudwatch-exporter 참고
2022.07.11 - [Monitoring/Prometheus] - [Prometheus](AWS)Install Cloudwatch-exporter with helm chart
# line 66
aws:
  # 중략
    secret:
    name: sa-for-monitoring-2
  • aws.secret.name
    • 위에서 생성한 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: cloudwatch
      static_configs:
      - targets:
        - p-1-prometheus-cloudwatch-exporter.monitoring.svc.cluster.local:9106
        labels:                           
          project: 'jm-han'
  • scrape_configs
    • labels을 통해 프로젝트를 분류하여 대시보드 또는 알람을 분리할 수 있다.