CloudWatch Logs에 컨트롤 플레인 로그 전송 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

CloudWatch Logs에 컨트롤 플레인 로그 전송

Amazon EKS 컨트롤 플레인 로깅은 Amazon EKS 컨트롤 플레인에서 계정의 CloudWatch Logs로 감사 및 진단 로그를 직접 제공합니다. 이러한 로그를 통해 클러스터를 쉽게 보호하고 실행할 수 있습니다. 필요한 로그 유형을 정확하게 선택할 수 있으며, 로그는 CloudWatch의 각 Amazon EKS 클러스터에 대한 그룹에 로그 스트림으로 전송됩니다. CloudWatch 구독 필터를 사용하여 로그에 대한 실시간 분석을 수행하거나 이를 다른 서비스로 전달할 수 있습니다(로그는 Base64로 인코딩되고 gzip 형식으로 압축됨). 자세한 내용은 Amazon CloudWatch 로깅을 참조하세요.

각각의 새로운 또는 기존 Amazon EKS 클러스터에 대해 활성화하려는 로그 유형을 선택하여 Amazon EKS 컨트롤 플레인 로깅의 사용을 시작할 수 있습니다. AWS Management Console, AWS CLI(버전 1.16.139 이상)를 사용하거나 Amazon EKS API를 통해 클러스터 단위로 각 로그 유형을 활성화하거나 비활성화할 수 있습니다. 활성화하면 Amazon EKS 클러스터에서 동일한 계정의 CloudWatch Logs로 로그가 자동으로 전송됩니다.

Amazon EKS 컨트롤 플레인 로깅을 사용하면 실행하는 각 클러스터에 대해 표준 Amazon EKS 요금이 부과됩니다. 클러스터에서 CloudWatch Logs로 전송한 모든 로그에 대해 표준 CloudWatch Logs 데이터 수집 및 스토리지 비용이 부과됩니다. 또한 클러스터의 일부로 프로비저닝한 AWS 리소스(예: Amazon EC2 인스턴스 또는 Amazon EBS 볼륨)에 대해서도 요금이 부과됩니다.

사용할 수 있는 클러스터 컨트롤 플레인 로그 유형은 다음과 같습니다. 각 로그 유형은 Kubernetes 컨트롤 플레인의 구성 요소에 해당합니다. 이러한 구성 요소에 대한 자세한 내용은 Kubernetes 설명서의 Kubernetes 구성 요소를 참조하세요.

API 서버(api)

클러스터의 API 서버는 Kubernetes API가 표시되는 컨트롤 플레인 구성 요소입니다. 클러스터를 시작할 때 또는 직후에 API 서버 로그를 활성화하면 API 서버를 시작하는 데 사용된 API 서버 플래그가 로그에 포함됩니다. 자세한 내용은 Kubernetes 설명서의 kube-apiserver감사 정책 부분을 참조하세요.

감사(audit)

Kubernetes 감사 로그는 클러스터에 영향을 준 개별 사용자, 관리자 또는 시스템 구성 요소에 대한 기록을 제공합니다. 자세한 내용은 Kubernetes 설명서의 감사를 참조하세요.

인증자(authenticator)

인증자 로그는 Amazon EKS에 고유합니다. 이러한 로그는 Amazon EKS가 IAM 자격 증명을 사용한 Kubernetes 역할 기반 액세스 컨트롤(RBAC) 인증에 사용하는 컨트롤 플레인 구성 요소를 나타냅니다. 자세한 내용은 클러스터 리소스 구성 및 모니터링 단원을 참조하십시오.

컨트롤러 관리자(controllerManager)

컨트롤러 관리자는 Kubernetes와 함께 제공되는 핵심 컨트롤 루프를 관리합니다. 자세한 내용은 Kubernetes 설명서의 kube-controller-manager를 참조하세요.

스케줄러(scheduler)

스케줄러 구성 요소는 클러스터에서 Pods를 실행하는 시기와 위치를 관리합니다. 자세한 내용은 Kubernetes 설명서의 kube-scheduler를 참조하세요.

컨트롤 플레인 로그 활성화 또는 비활성화

기본적으로 클러스터 컨트롤 플레인 로그는 CloudWatch Logs로 전송되지 않습니다. 클러스터에 대해 로그를 전송하려면 각 로그 유형을 개별적으로 활성화해야 합니다. CloudWatch Logs 수집, 아카이브 스토리지 및 데이터 검색 요율이 활성화된 컨트롤 플레인 로그에 적용됩니다. 자세한 내용은 CloudWatch 요금을 참조하십시오.

컨트롤 플레인 로깅 구성을 업데이트하려면 Amazon EKS에서 각 서브넷에 최대 5개의 사용 가능한 IP 주소가 필요합니다. 로그 유형을 활성화하면 로그가 로그 세부 수준 2로 전송됩니다.

AWS Management Console
AWS Management Console를 통해 컨트롤 플레인 로그를 활성화 또는 비활성화하려면
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 클러스터 이름을 선택하여 클러스터 정보를 표시합니다.

  3. 관찰성 탭을 선택합니다.

  4. 컨트롤 플레인 로깅 섹션에서 로깅 관리를 선택합니다.

  5. 각 개별 로그 유형에 대해 로그 유형이 켜져 있거나 꺼져 있어야 하는지를 선택합니다. 기본적으로 각 로그 유형은 해제되어 있습니다.

  6. 변경 사항 저장(Save changes)을 선택하여 종료합니다.

AWS CLI
AWS CLI를 통해 컨트롤 플레인 로그를 활성화 또는 비활성화하려면
  1. AWS CLI 버전은 다음 명령을 통해 확인할 수 있습니다.

    aws --version

    AWS CLI 버전이 1.16.139 이하인 경우 먼저 최신 버전으로 업데이트해야 합니다. AWS CLI를 설치 또는 업그레이드하려면 AWS Command Line Interface 사용 설명서에서 AWS Command Line Interface 설치를 참조하세요.

  2. 다음 AWS CLI 명령을 사용하여 클러스터의 컨트롤 플레인 로그 내보내기 구성을 업데이트합니다. my-cluster를 클러스터 이름으로 바꾸고 원하는 엔드포인트 액세스 값을 지정합니다.

    참고

    다음 명령은 사용 가능한 모든 로그 유형을 CloudWatch Logs로 전송합니다.

    aws eks update-cluster-config \ --region region-code \ --name my-cluster \ --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'

    예제 출력은 다음과 같습니다.

    { "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "InProgress", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] } }
  3. 이전 명령에서 반환된 클러스터 이름과 업데이트 ID를 사용하여 다음 명령으로 로그 구성 업데이트의 상태를 모니터링합니다. 상태가 Successful로 표시되면 업데이트가 완료된 것입니다.

    aws eks describe-update \ --region region-code\ --name my-cluster \ --update-id 883405c8-65c6-4758-8cee-2a7c1340a6d9

    예제 출력은 다음과 같습니다.

    { "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "Successful", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] } }

클러스터 컨트롤 플레인 로그 보기

Amazon EKS 클러스터에 대한 컨트롤 플레인 로그 유형을 활성화하면 CloudWatch 콘솔에서 해당 유형을 볼 수 있습니다.

CloudWatch에서 로그 보기, 분석 및 관리에 대한 자세한 내용은 Amazon CloudWatch Logs 사용 설명서를 참조하세요.

CloudWatch 콘솔에서 클러스터 컨트롤 플레인 로그를 보려면
  1. CloudWatch 콘솔을 엽니다. 이 링크는 콘솔을 열고 현재 사용 가능한 로그 그룹을 표시하며 /aws/eks 접두사로 해당 로그 그룹을 필터링합니다.

  2. 로그를 보려는 클러스터를 선택합니다. 로그 그룹 이름 형식은 /aws/eks/my-cluster/cluster입니다.

  3. 보려는 로그 스트림을 선택합니다. 다음 목록에는 각 로그 유형의 로그 스트림 이름 형식에 대한 설명이 나와 있습니다.

    참고

    로그 스트림 데이터가 증가함에 따라 로그 스트림 이름이 교체됩니다. 특정 로그 유형에 대해 여러 로그 스트림이 있는 경우 최신 Last Event Time(마지막 이벤트 시간)으로 로그 스트림 이름을 찾아 최신 로그 스트림을 볼 수 있습니다.

    • Kubernetes API 서버 구성 요소 로그(api)kube-apiserver-1234567890abcdef01234567890abcde

    • 감사(audit) - kube-apiserver-audit-1234567890abcdef01234567890abcde

    • 인증자(authenticator) - authenticator-1234567890abcdef01234567890abcde

    • 컨트롤러 관리자(controllerManager) - kube-controller-manager-1234567890abcdef01234567890abcde

    • 스케줄러(scheduler) - kube-scheduler-1234567890abcdef01234567890abcde

  4. 로그 스트림의 이벤트를 살펴봅니다.

    예를 들어 상위 kube-apiserver-1234567890abcdef01234567890abcde를 볼 때 클러스터의 초기 API 서버 플래그가 표시되어야 합니다.

    참고

    로그 스트림의 시작 부분에 API 서버 로그가 표시되지 않으면 서버에서 API 서버 로깅을 활성화하기 전에 서버에서 API 서버 로그 파일이 교체되었을 수 있습니다. API 서버 로깅이 활성화되기 전에 교체되는 모든 로그 파일은 CloudWatch로 내보낼 수 없습니다.

    그러나 동일한 Kubernetes 버전으로 새 클러스터를 생성하고 클러스터를 생성할 때 API 서버 로깅을 활성화할 수 있습니다. 동일한 플랫폼 버전의 클러스터에는 동일한 플래그가 활성화되어 있으므로 플래그가 새 클러스터의 플래그와 일치해야 합니다. CloudWatch에서 새 클러스터에 대한 플래그 보기를 마치면 새 클러스터를 삭제할 수 있습니다.