본문 바로가기

EKS/Cloudwatch

EKS Cloudwatch 연동 - 2. EKS Cluster Metric 수집

공식 다큐먼트와 똑같이 구성할 것이기 때문에, 이전 글에서 다큐먼트를 참고하셔도 좋습니다.

 

먼저 Cloudwatch namespace를 구성하도록 하겠습니다.

kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-yaml-templates/cloudwatch-namespace.yaml

 

 

이제 kubernetes에서 매트릭 수집을 해서 Cloudwatch에 던져 줄 Role을 가진 account를 만들겠습니다.

kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-yaml-templates/cwagent-kubernetes-monitoring/cwagent-serviceaccount.yaml

 

매트릭을 수집할 때, 어떠한 형태로 수집할 것인지를 정해야하는데 이에 관한 config 파일을 다운받고 수정하겠습니다.

curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-yaml-templates/cwagent-kubernetes-monitoring/cwagent-configmap.yaml

 

다운받고 수정이 귀찮으시다면 아래에서 리전과 클러스터 이름만 변경해서 적용하셔도 됩니다.

아래에서 다른 부분을 수정하실 때는 다음과 같은 부분들을 주의해주셔야 합니다.

  • metrics_collection_interval – kubernetes 섹션에서 에이전트가 지표를 수집하는 간격을 지정할 수 있습니다. 기본값은 60초입니다. Kubelet의 기본 cadvisor 수집 간격은 15초이기 때문에 이 값을 15초 미만으로 설정해서는 안 됩니다.
  • endpoint_override–기본 엔드포인트를 재정의하려면 logs 섹션에서 CloudWatch Logs 엔드포인트를 지정할 수 있습니다. VPC의 클러스터에서 게시 중인 데이터를 VPC 종단점으로 이동시키고 싶은 경우에 재정의를 원할 수 있습니다.
  • force_flush_interval– logs 섹션에서 CloudWatch Logs에 게시되기 전에 로그 이벤트를 배치화하는 간격을 지정할 수 있습니다. 기본값은 5초입니다.
apiVersion: v1
data:
  # Configuration is in Json format. No matter what configure change you make,
  # please keep the Json blob valid.
  cwagentconfig.json: |
    {
        "agent": {
            "region": "ap-northeast-2"
        },
        "logs": {
            "metrics_collected": {
                "kubernetes": {
                    "cluster_name": "CB-TEST-EKS-CLUSTER",
                    "metrics_collection_interval": 60
                }
            },
            "force_flush_interval": 5,
            "endpoint_override": "logs.ap-northeast-2.amazonaws.com"
        },
        "metrics": {
            "metrics_collected": {
                "statsd": {
                    "service_address": ":8125"
                }
            }
        }
    }
kind: ConfigMap
metadata:
  name: cwagentconfig
  namespace: amazon-cloudwatch

 

수정이 모두 끝났으면 배포해주시고 데몬셋으로 배포를 해주도록 하겠습니다.

 

아래 명령어를 수행해주시면 됩니다.

kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-yaml-templates/cwagent-kubernetes-monitoring/cwagent-daemonset.yaml

 

자 이제 파드가 제대로 올라왔는지, 수집이 제대로 되는지 확인해보도록 하겠습니다.

파드는 정상적으로 올라왔으며,

 

 

클라우드 와치에서도 ContainerInsights라는 지표로 매트릭이 잘 수집되고 있습니다.

 

 

 

클라우드 와치로의 클러스터 매트릭 수집을 알아봤습니다.

 

다음 포스트에서는 FluentD -> Cloudwatch로 로그 수집을 알아보도록 하겠습니다.

'EKS > Cloudwatch' 카테고리의 다른 글

EKS Cloudwatch 연동 - 3. FluentD - Cloudwatch 연동  (0) 2020.02.10
EKS Cloudwatch 연동 - 1. Intro  (0) 2020.02.10