View a markdown version of this page

Amazon EKS의 로깅 유형 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EKS의 로깅 유형

Amazon EKS에서 로깅에는 다음을 포함하여 Kubernetes 클러스터의 다양한 구성 요소에서 생성되는 다양한 유형의 로그 데이터를 캡처, 저장 및 분석하는 작업이 포함됩니다.

Amazon EKS 환경에서 로그를 효과적으로 관리하려면 일반적으로 AWS 서비스, 타사 도구 및 모범 사례를 조합하여 사용합니다. 여기에는 Amazon CloudWatch, Fluent Bit, Elasticsearch, Kibana 및 기타 로깅 및 분석 도구를 사용하여 로그 데이터를 수집, 저장 및 시각화하는 것이 포함될 수 있습니다.

다음 섹션에서는 Kubernetes 클러스터에서 포괄적인 로깅 전략을 구현하기 위한 모범 사례, 도구 및 기술을 포함하여 Amazon EKS에서 로깅의 다양한 측면을 살펴봅니다 AWS.

시스템 로그

Amazon EKS의 기본 EC2 인스턴스 또는 Fargate 노드에 대한 로깅에는 노드 유형에 따라 다른 접근 방식이 포함됩니다.

Amazon EKS에서 EC2 인스턴스에 대한 로깅을 구현하려면 다음 도구를 사용할 수 있습니다.

  • CloudWatch 에이전트: EC2 인스턴스에 CloudWatch 에이전트를 설치하고 구성합니다. /var/log/messages 및와 같은 시스템 로그를 수집하도록 구성합니다/var/log/secure. 사용자 데이터 스크립트 또는 구성 관리 도구를 사용하여이 프로세스를 자동화할 수 있습니다.

  • Fluent Bit: Fluent Bit를 DaemonSet로 배포하여 모든 노드에서 로그를 수집합니다. CloudWatch Logs 또는 기타 중앙 집중식 로깅 시스템에 로그를 전달하도록 구성합니다.

  • Container Insights: EKS 클러스터에서 Container Insights를 활성화하여 EC2 인스턴스에서 지표와 로그를 자동으로 수집합니다.

  • 사용자 지정 스크립트: 특정 로그를 수집하여 원하는 로깅 대상으로 전송하는 사용자 지정 스크립트를 개발합니다.

  • SSM 에이전트: AWS Systems Manager 에이전트(SSM 에이전트)를 사용하여 로그를 수집하고 CloudWatch Logs에 전달합니다.

Amazon EKS에서 Fargate 노드에 대한 로깅을 구현하려면 다음 도구를 사용합니다.

  • Fargate 로깅: Fargate는 컨테이너에서 자동으로 stdoutstderr 로그를 수집합니다. 이러한 로그를 CloudWatch Logs로 보내도록 Fargate 프로파일을 구성합니다.

  • Fargate용 Fluent Bit:Fargate 로깅을 위한 Fluent Bit 이미지를 AWS 제공합니다. Fargate 포드에 사이드카 컨테이너로 배포하여 로그를 수집하고 전달합니다.

  • Fargate용 Container Insights: Container Insights가 Fargate 노드에서 지표와 로그를 수집할 수 있습니다.

Kubernetes 구성 요소 로그

Amazon EKS의 API 서버, 스케줄러 및 컨트롤러 관리자와 같은 Kubernetes 구성 요소에서 로그를 수집하려면 애플리케이션 로깅과 약간 다른 접근 방식이 필요합니다. 이러한 구성 요소는에서 관리하는 Amazon EKS 컨트롤 플레인의 일부로 실행됩니다 AWS. 이러한 로그를 수집하고 액세스하는 방법은 다음과 같습니다.

  • 컨트롤 플레인 로깅 활성화: AWS CloudFormation 또는 Terraform과 같은 코드형 인프라(IaC) 도구, AWS Management ConsoleAWS Command Line Interface (AWS CLI) 또는를 통해 EKS 클러스터에 대한 컨트롤 플레인 로깅을 활성화할 수 있습니다. 컨트롤 플레인 로깅을 활성화하면 로그가 Amazon CloudWatch Logs로 전송됩니다. /aws/eks/<cluster-name>/cluster 로그 그룹의 CloudWatch 콘솔에서 볼 수 있습니다. 이 로그 그룹 내에서 각 컨트롤 플레인 구성 요소에는 다음과 같은 자체 로그 스트림이 있습니다.

    스트림 이름 설명
    kube-apiserver Kubernetes API 서버 로그
    kube-scheduler 스케줄러 결정 로그
    kube-controller-manager 컨트롤러 관리자 로그
    인증자 IAM 인증자 로그
    감사 Kubernetes 감사 로그(명시적으로 활성화해야 함)

    특정 구성 요소에 대한 로그를 보려면 클러스터 로그 그룹으로 이동하여 대상 로그 스트림 이름을 기준으로 필터링합니다.

  • CloudWatch Logs Insights 사용: CloudWatch Logs Insights를 사용하여 로그에 대한 복잡한 쿼리를 수행할 수 있습니다.

  • Amazon S3로 로그 내보내기: 장기 스토리지 또는 추가 분석을 위해 Amazon Simple Storage Service(Amazon S3)로 로그를 내보낼 수 있습니다.

  • 타사 도구 사용: Fluent Bit와 같은 도구를 사용하여 이러한 로그를 수집하고 Elasticsearch 또는 Splunk와 같은 다른 로깅 시스템에 전달할 수 있습니다.

  • 사용 AWS CloudTrail: AWS CloudTrail 서비스는 EKS 클러스터에 대한 API 호출에 대한 추가 인사이트를 제공할 수 있습니다.

컨테이너 런타임 로그

Amazon EKS에서 컨테이너 런타임 로그를 로깅하려면 일반적으로 Amazon EKScontainerd용 컨테이너 런타임에서 로그를 캡처하고 관리해야 합니다. Amazon EKS에서 컨테이너 런타임 로그 로깅에 접근하는 방법은 다음과 같습니다.

  • Amazon EC2 노드의 로그에 직접 액세스합니다. 자체 관리형 EC2 노드의 경우 다음 위치에서 호스트의 컨테이너 런타임 로그에 직접 액세스할 수 있습니다.

    • containerd 로그: /var/log/containers/

    • Docker 로그(Docker 런타임을 사용하는 경우): /var/log/docker.log

  • 로그 수집에 DaemonSet를 사용합니다.

  • 로그 수집 에이전트(예: Fluent Bit)를 DaemonSet로 배포하여 모든 노드에서 로그를 수집합니다.

  • 컨테이너 런타임 로그를 수집하도록 CloudWatch 에이전트를 구성합니다.

  • Container Insights를 활성화하여 컨테이너 런타임 지표 및 로그를 수집합니다.

  • Fargate를 사용합니다. Fargate 노드의 경우 컨테이너 런타임 로그가 자동으로 수집되며 CloudWatch Logs를 통해 액세스할 수 있습니다.

  • Fluent Bit 또는 Logstash와 같은 도구를 사용하여 사용자 지정 로깅 솔루션을 구현합니다. CloudWatch 경보를 설정하거나 Prometheus와 같은 도구를 사용하여 컨테이너 런타임 로그의 특정 패턴 또는 문제를 모니터링합니다. Datadog, Splunk 또는 Elastic Stack(ELK Stack)과 같이 Kubernetes 및 Amazon EKS와 잘 통합되는 타사 로깅 솔루션을 사용하는 것이 좋습니다. 로그 집계 도구를 사용하여 여러 소스에서 로그를 수집하여 중앙 집중식 로깅 시스템으로 전달합니다.

애플리케이션 로그

Amazon EKS의 애플리케이션 로그는 애플리케이션을 유지 관리하고 문제를 해결하는 데 중요한 부분입니다. Amazon EKS에서 애플리케이션 로깅을 구현하려면 다음 옵션 중에서 선택할 수 있습니다.

  • stdout/에 로그 쓰기stderr: 애플리케이션 로그를 처리하는 가장 간단하고 가장 일반적인 Kubernetes 기본 방법은 stdout 및에 로그를 쓰는 것입니다stderr. Kubernetes는 이러한 스트림을 자동으로 캡처합니다.

  • 로그 집계 구현: Fluent Bit와 같은 로그 집계자를 사용하여 모든 포드에서 로그를 수집합니다.

  • 로그 라우팅 구성: 원하는 대상(예: CloudWatch Logs 또는 Elasticsearch)으로 로그를 라우팅하도록 로그 집계자를 구성합니다.

  • CloudWatch Container Insights 사용: 포괄적인 로깅 및 모니터링을 위해 Container Insights를 활성화합니다.