Get Helm Repository Info and Chart download
# Add repo
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# Chart download
prometheus-community/prometheus-cloudwatch-exporter
tar zxvf prometheus-cloudwatch-exporter-0.18.0.tgz
Edit values.yaml
30 service.type: LoadBalancer # type: ClusterIP
64 aws.secret.name: sa-for-monitoring-1 # Example
92 config # 수집할 AWS Cloudwatch의 metrics 값을 입력한다.
service.type
: exporter를 노출 시킬 서비스 타입을 정한다. NodePort, LoadBalancer 등 원하는 것으로 선택하면 된다.aws.secret.name
: 모니터링 대상 AWS 사용자의 access_key, secret_key로 만든 K8s secret 작성
Secret 작성법 참고
2022.07.08 - [Kubernetes] - [Kubernetes]How to create Kubernetes Secret from Json/Yaml/Literal
config
: 수집할 AWS Cloudwatch의 metrics 값을 입력한다. (예제 참고 link )
64 aws.secret.name - Example
apiVersion: v1
kind: Secret
metadata:
name: sa-for-monitoring-1
type: Opaque
stringData:
access_key: AKIA22J
secret_key: yZGrY/X
92 cofing(metrics) - Example
metrics 작성법 참고
2022.07.11 - [Monitoring/Prometheus] - [Prometheus](AWS)Cloudwatch-exporter에 원하는 metrics 추가하기
region: ap-northeast-2
period_seconds: 240
delay_seconds: 60
metrics:
- aws_dimensions:
- InstanceId
aws_metric_name: CPUUtilization
aws_namespace: AWS/EC2
aws_statistics:
- Average
aws_tag_select:
resource_type_selection: ec2:instance
resource_id_dimension: InstanceId
- aws_namespace: AWS/ELB
aws_metric_name: RequestCount
aws_dimensions: [AvailabilityZone, LoadBalancerName]
aws_tag_select:
tag_selections:
Monitoring: ["enabled"]
resource_type_selection: "elasticloadbalancing:loadbalancer"
resource_id_dimension: LoadBalancerName
aws_statistics: [Sum]
period_seconds: exporter가 cloudatch에서 데이터를 수집하는 주기
delay_seconds: cloudwatch는 수집된 데이터의 평가를 위해 몇 분정도 시간이 걸리고 완전히 수렴되지 않은 데이터를 수집하지 않도록 해당 옵션이 default 600s로 설정되어 있다. 이때문에 실제 cloudwatch와 prometheus 데이터 사이에 시간차이가 발생하게 된다. 여기서는 60s로 설정하여 사용하였다.
Install helm chart
helm install cloudwatch . -n monitoring
- prometheus-cloudwatch-exporter chart를 배포한 뒤 설정한 설정한 서비스타입으로 접속해보면 metrics 값을 확인할 수 있다. (e.g. web browser에서 aae4c6b363d7249eb8b75f836ec43582-466958831.ap-northeast-2.elb.amazonaws.com:9106/metrics 입력)
$ k get svc -n monitoring
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
p-1-prometheus-cloudwatch-exporter LoadBalancer 10.100.177.122 aae4c6b363d7249eb8b75f836ec43582-466958831.ap-northeast-2.elb.amazonaws.com 9106:30644/TCP 19m
설치한 prometheus-stack values.yaml 파일에 아래 내용 추가한다.
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 config 참고
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
- targets
- cloudwatch-exporter를 prometheus stack helm chart에 등록하고 chart upgrade를 하면 아래와 같이 prometheus에 데이터가 들어오는 것을 확인할 수 있다.
- targets에 cloudwatch-exporter의 dns를 입력한다. (노출되는 어떠한 주소를 입력해도 무관)
- labels
- 수집되는 metric값에 임의의 label을 추가할 수 있다. (나의 경우 grafana에 variables 작성을 위해 추가하였음)