EKS CloudWatch – 모니터링

EKS CloudWatch 관련 정보에 대해 알아봅니다.

모니터링

  • 목표 : EKS 클러스터의 동작 상태를 파악하고 이상이 발생했을 때 관리자에게 알리는 방법입니다.

클러스터 상태 파악

  • EKS 컨트롤 플레인 : 클러스터에 문제가 발생하지 않았는지 클러스터의 상태를 파악하는 정도로 활용합니다.
  • 관리형 노드 그룹 생성합니다.

관리형 노드 그룹 생성

  • Amazon CloudWatch 전체 부하 상태 파악 : AWS가 제공하는 관리형 운영 모니터링 서비스. AWS의 각 서비스가 제공하는 시스템의 성능에 대한 데이터(메트릭)를 수집하고 추적하는 용도로 사용됩니다.
  • 데이터 플레인 전체의 CPU 사용률 확인 방법
    • EC2 → Auto Scaling → ‘모니터링’ → ‘CloudWatch 모니터링 세부 정보’ → ‘EC2’ 선택 → ‘CPU 사용률’ 오른쪽 메뉴 버튼에서 ‘지표에서 보기’ 선택

CloudWatch의 Container Insights

애플리케이션 상태를 파악합니다.

  • Container Insight
    • CloudWatch의 기능으로 클러스터 노드, 파드, 네임스페이스, 서비스 레벨의 매트릭을 참조 가능합니다.

데이터 노드의 IAM 역할에 정책 추가

  • EKS에 배포한 데몬셋의 CloudWatch 에이전트와 연계해 Container Insights를 이용하기 위할 절차.
  1. EKS 클러스터 데이터 노드에 해당하는 EC2 ‘인스턴스 ID’ 중 하나를 선택 → 상세 정보 중에 ‘IAM 역할’ 아래의 링크 클릭
  2. ‘요약’ 페이지에서 <정책 연결> 버튼 클릭
  3. ‘정책 이름’ 목록 → ‘CloudWatchAgentServerPolicy’ 선택 → <정책 연결> 클릭

CloudWatch용 네임스페이스 생성

# eks-env 디렉토리 안에 clouldwatch-yaml 디렉토리 만든 후 다운로드
# 네임스페이스 생성용 매니페스트 다운로드
curl -0 <https://s3.amazonaws.com/cloudwatch-agent-k8s-yamls/> \\
kubernetesmonitoring/cloudwatch-namespace.yaml

# 네임스페이스 생성
kubectl apply -f cloudwatch-namespace.yaml

CloudWatch용 서비스 계정 생성

  • CloudWatch 에이전트 파드가 사용할 서비스 계정 생성
# 서비스 계정 생성용 매니페스트 다운로드
curl -0 <https://s3.amazonaws.com/cloudwatch-agent-k8s-yamls/> \\
kubernetesmonitoring/cwagent-serviceaccount.yaml

# 서비스 계정 생성
kubectl apply -f cwagent-serviceaccount.yaml

CloudWatch 에이전트가 사용할 컨피그맵 생성

  • CloudWatch 에이전트 파드는 컨피그맵을 사용해 각종 설정을 불러오므로 이 컨피그맵을 생성해 둡니다.
# 컨피그맵 생성용 매니페스트 다운로드
curl -0 <https://s3.amazonaws.com/cloudwatch-agent-k8s-yamls/> \\
kubernetesmonitoring/cwagent-configmap.yaml
# {{cluster-name}} 변경 ,ex> eks-work-cluster

# 컨피그맵 생성
kubectl apply -f cwagent-configmap.yaml
  • Service Account 계정이란 파드를 동작시키는 사용자와 같은 것. 서비스 계정과 롤을 연결하면 그 서비스 계정이 클러스터 내부에서 어떤 조작을 인가할지 제어할 수 있습니다.

CloudWatch 에이전트를 데몬셋으로 동작시키기

# CloudWatch 에이전트를 설치하는 매니페스트 다운로드
curl -0 <https://s3.amazonaws.com/cloudwatch-agent-k8s-yamls/> \\
kubernetesmonitoring/cwagent-daemonset.yaml

# CloudWatch 에이전트를 데몬셋으로 동작시킴
kubectl apply -f cwagent-daemonset.yaml
  • CloudWatch 에이전트는 Container Insights로 메트릭을 보내는 동시에 CloudWatch Logs에 데이터도 전송
  • CloudWatch 페이지 ‘로그’ → 로그 그룹 메뉴 ‘/aws/containerinsights/eks-work-cluster/performance’ 로그 그룹 생성 확인

Container Insights에서 수집한 메트릭 확인

  • CloudWatch 페이지의 왼쪽 → ‘Container Insights’ → ‘성능 모니터링’ 선택

CloudWatch 경보를 이용한 통지

  • 목표 : 경고 알림
  • Container Insight로 수집한 메트릭은 AWS의 일반적인 메트릭과 같음.
  • 메트릭값에 임곗값을 설정하여 CloudWatch 경보를 생성
    • ‘데이터 플레인의 CPU 사용률이 90% 넘을 경우’
    • ‘예제 애플리케이션 파드의 CPU 사용률이 상한 사용륭의 80%를 넘을 경우’

이상으로 아마존 EKS를 CloudWatch로 모니팅하는 방법을 알아보았습니다.

Back to top