

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

# Amazon EKS에서 로깅
<a name="logging"></a>

로깅은 Amazon EKS에서 실행되는 애플리케이션을 관리하고 유지 관리하는 데 중요한 요소입니다. Amazon EKS 환경의 효과적인 로깅 관행을 통해 개발자, 운영 팀 및 시스템 관리자는 컨테이너화된 애플리케이션과 기본 인프라의 동작, 성능 및 상태에 대한 귀중한 인사이트를 얻을 수 있습니다.

Amazon EKS에서 강력한 로깅 전략을 구현하는 것은 몇 가지 이유로 필수적입니다.
+ **문제 해결**: 로그는 문제를 신속하게 식별하고 진단하는 데 도움이 되므로 가동 중지 시간이 줄어들고 전반적인 시스템 신뢰성이 향상됩니다.
+ **규정 준수**: 많은 산업에서 감사 및 규제 목적으로 포괄적인 로깅을 요구합니다.
+ **보안**: 로그 분석은 잠재적 보안 위협 또는 침해를 탐지하고 조사하는 데 도움이 될 수 있습니다.
+ **성능 최적화**: 로그는 애플리케이션 및 시스템 성능에 대한 인사이트를 제공하므로 병목 현상을 식별하고 리소스 사용률을 최적화할 수 있습니다.
+ **모니터링 및 알림**: 로그 데이터를 사용하여 모니터링 시스템을 설정하고 특정 이벤트 또는 조건에 대한 알림을 트리거할 수 있습니다.

**Topics**
+ [로깅 유형](log-types.md)
+ [모범 사례](logging-best-practices.md)
+ [중요 고려 사항](logging-considerations.md)

# Amazon EKS의 로깅 유형
<a name="log-types"></a>

Amazon EKS에서 로깅에는 다음을 포함하여 [Kubernetes](https://kubernetes.io/) 클러스터의 다양한 구성 요소에서 생성되는 다양한 유형의 로그 데이터를 캡처, 저장 및 분석하는 작업이 포함됩니다.
+ **시스템 로그**: 기본 [Amazon Elastic Compute Cloud(Amazon EC2)](https://aws.amazon.com/pm/ec2/) 인스턴스 또는 [AWS Fargate](https://aws.amazon.com/fargate/) 노드에 대한 정보
+ **Kubernetes 구성 요소 로그**: [API 서버](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/), [스케줄러](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/) 및 [컨트롤러 관리자와](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/) 같은 핵심 Kubernetes 구성 요소의 데이터
+ **컨테이너 런타임 로그**: [Docker](https://www.docker.com/blog/containerd-vs-docker/) 또는 [containerd](https://containerd.io/)와 같은 컨테이너 런타임의 정보
+ **애플리케이션 로그**: 컨테이너화된 애플리케이션의 출력

Amazon EKS 환경에서 로그를 효과적으로 관리하려면 일반적으로 AWS 서비스, 타사 도구 및 모범 사례를 조합하여 사용합니다. 여기에는 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/), [Fluent Bit](https://fluentbit.io/), [Elasticsearch](https://www.elastic.co/elasticsearch), [Kibana](https://www.elastic.co/kibana) 및 기타 로깅 및 분석 도구를 사용하여 로그 데이터를 수집, 저장 및 시각화하는 것이 포함될 수 있습니다.

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

## 시스템 로그
<a name="system-logs"></a>

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

Amazon EKS에서 EC2 인스턴스에 대한 로깅을 구현하려면 다음 도구를 사용할 수 있습니다.
+ [CloudWatch 에이전트](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html): EC2 인스턴스에 CloudWatch 에이전트를 설치하고 구성합니다. `/var/log/messages` 및와 같은 시스템 로그를 수집하도록 구성합니다`/var/log/secure`. 사용자 데이터 스크립트 또는 구성 관리 도구를 사용하여이 프로세스를 자동화할 수 있습니다.
+ [Fluent Bit](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html): Fluent Bit를 DaemonSet로 배포하여 모든 노드에서 로그를 수집합니다. [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 또는 기타 중앙 집중식 로깅 시스템에 로그를 전달하도록 구성합니다.
+ [Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html): EKS 클러스터에서 Container Insights를 활성화하여 EC2 인스턴스에서 지표와 로그를 자동으로 수집합니다.
+ 사용자 지정 스크립트: 특정 로그를 수집하여 원하는 로깅 대상으로 전송하는 사용자 지정 스크립트를 개발합니다.
+ [SSM 에이전트](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html): AWS Systems Manager 에이전트(SSM 에이전트)를 사용하여 로그를 수집하고 CloudWatch Logs에 전달합니다.

Amazon EKS에서 Fargate 노드에 대한 로깅을 구현하려면 다음 도구를 사용합니다.
+ [Fargate 로깅](https://docs.aws.amazon.com/eks/latest/userguide/fargate-logging.html): Fargate는 컨테이너에서 자동으로 `stdout` 및 `stderr` 로그를 수집합니다. 이러한 로그를 CloudWatch Logs로 보내도록 Fargate 프로파일을 구성합니다.
+ [Fargate용 Fluent Bit](https://github.com/aws/aws-for-fluent-bit):Fargate 로깅을 위한 Fluent Bit 이미지를 AWS 제공합니다. Fargate 포드에 사이드카 컨테이너로 배포하여 로그를 수집하고 전달합니다.
+ [Fargate용 Container Insights](https://aws-otel.github.io/docs/getting-started/container-insights/eks-fargate): Container Insights가 Fargate 노드에서 지표와 로그를 수집할 수 있습니다.

## Kubernetes 구성 요소 로그
<a name="kubernetes-logs"></a>

Amazon EKS의 API 서버, 스케줄러 및 컨트롤러 관리자와 같은 Kubernetes 구성 요소에서 로그를 수집하려면 애플리케이션 로깅과 약간 다른 접근 방식이 필요합니다. 이러한 구성 요소는에서 관리하는 Amazon EKS 컨트롤 플레인의 일부로 실행됩니다 AWS. 이러한 로그를 수집하고 액세스하는 방법은 다음과 같습니다.
+ **컨트롤 플레인 로깅 활성화:** [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 또는 Terraform과 같은 코드형 인프라(IaC) 도구, AWS Management Console[AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 또는를 통해 EKS 클러스터에 대한 컨트롤 플레인 로깅을 활성화할 수 있습니다. 컨트롤 플레인 로깅을 활성화하면 로그가 Amazon CloudWatch Logs로 전송됩니다. `/aws/eks/<cluster-name>/cluster` 로그 그룹의 CloudWatch 콘솔에서 볼 수 있습니다. 이 로그 그룹 내에서 각 컨트롤 플레인 구성 요소에는 다음과 같은 자체 로그 스트림이 있습니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/amazon-eks-observability-best-practices/log-types.html)

  특정 구성 요소에 대한 로그를 보려면 클러스터 로그 그룹으로 이동하여 대상 로그 스트림 이름을 기준으로 필터링합니다.
+ **CloudWatch Logs Insights 사용**: [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)를 사용하여 로그에 대한 복잡한 쿼리를 수행할 수 있습니다.
+ **Amazon S3로 로그 내보내기**: 장기 스토리지 또는 추가 분석을 위해 Amazon Simple Storage Service[(](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)Amazon S3[)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)로 로그를 내보낼 수 있습니다.
+ **타사 도구 사용**: Fluent Bit와 같은 도구를 사용하여 이러한 로그를 수집하고 Elasticsearch 또는 Splunk와 같은 다른 로깅 시스템에 전달할 수 있습니다.
+ **사용 AWS CloudTrail**: [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 서비스는 EKS 클러스터에 대한 API 호출에 대한 추가 인사이트를 제공할 수 있습니다.

## 컨테이너 런타임 로그
<a name="runtime-logs"></a>

Amazon EKS에서 컨테이너 런타임 로그를 로깅하려면 일반적으로 Amazon EKS`containerd`용 컨테이너 런타임에서 로그를 캡처하고 관리해야 합니다. 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 경보](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)를 설정하거나 Prometheus와 같은 도구를 사용하여 컨테이너 런타임 로그의 특정 패턴 또는 문제를 모니터링합니다. Datadog, Splunk 또는 Elastic Stack(ELK Stack)과 같이 Kubernetes 및 Amazon EKS와 잘 통합되는 타사 로깅 솔루션을 사용하는 것이 좋습니다. 로그 집계 도구를 사용하여 여러 소스에서 로그를 수집하여 중앙 집중식 로깅 시스템으로 전달합니다.

## 애플리케이션 로그
<a name="app-logs"></a>

Amazon EKS의 애플리케이션 로그는 애플리케이션을 유지 관리하고 문제를 해결하는 데 중요한 부분입니다. Amazon EKS에서 애플리케이션 로깅을 구현하려면 다음 옵션 중에서 선택할 수 있습니다.
+ `stdout`/에 로그 쓰기`stderr`: 애플리케이션 로그를 처리하는 가장 간단하고 가장 일반적인 Kubernetes 기본 방법은 `stdout` 및에 로그를 쓰는 것입니다`stderr`. Kubernetes는 이러한 스트림을 자동으로 캡처합니다.
+ 로그 집계 구현: Fluent Bit와 같은 로그 집계자를 사용하여 모든 포드에서 로그를 수집합니다.
+ 로그 라우팅 구성: 원하는 대상(예: CloudWatch Logs 또는 Elasticsearch)으로 로그를 라우팅하도록 로그 집계자를 구성합니다.
+ CloudWatch Container Insights 사용: 포괄적인 로깅 및 모니터링을 위해 Container Insights를 활성화합니다.

# Amazon EKS 로깅 모범 사례
<a name="logging-best-practices"></a>

다음 모범 사례는 Amazon EKS 환경을 위한 강력하고 확장 가능하며 효율적인 로깅 시스템을 생성하고 Kubernetes 클러스터의 문제 해결, 모니터링 및 전반적인 관리를 개선하는 데 도움이 됩니다.
+ **로그 수집 중앙 집중화**: CloudWatch Logs, Elasticsearch 또는 타사 서비스와 같은 중앙 집중식 로깅 솔루션을 사용하여 모든 구성 요소의 로그를 집계합니다. 이를 통해 로그 분석을 위한 단일 액세스 지점을 제공하고 관리를 간소화할 수 있습니다.
+ **구조화된 로깅 구현**: 로그를 보다 쉽게 구문 분석하고 검색할 수 있도록 JSON과 같은 구조화된 로그 형식을 사용합니다. 타임스탬프, 로그 수준 및 소스 식별자와 같은 관련 메타데이터를 포함합니다.
+ **적절한 로그 수준 사용**: 애플리케이션에 적절한 로그 수준(예: `DEBUG`, `INFO``WARN`, 및 `ERROR`)을 구현합니다. 과도한 로깅을 방지하기 위해 적절한 수준에서 로깅하도록 프로덕션 환경을 구성합니다.
+ **컨테이너 로깅 활성화**: `stdout` 및에 로그인하도록 컨테이너를 구성합니다`stderr`. 이렇게 하면 Kubernetes가 이러한 로그를 캡처하여 선택한 로깅 솔루션으로 전달할 수 있습니다.
+ **애플리케이션 로깅 활성화**: 로그 파일에 쓰는 `stderr` 대신 `stdout` 및에 로그를 쓰도록 애플리케이션을 구성합니다. 이는 [12단계 앱 방법론](https://12factor.net/logs)을 따르며 클라우드 네이티브 모범 사례에 부합합니다.
+ **로그 수집에 Kubernetes DaemonSets 사용**: 로그 수집 에이전트(예: Fluent Bit)를 DaemonSets로 배포하여 클러스터의 모든 노드에서 실행되도록 합니다.
+ **보존 정책 구현**: 규정을 준수하고 스토리지 비용을 관리하기 위해 로그 보존 정책을 정의하고 적용합니다.
+ **보안 로그 데이터**: 전송 중 및 저장 중 로그를 암호화합니다. 액세스 제어를 구현하여 로그를 보고 관리할 수 있는 사용자를 제한합니다.
+ **로그 수집 모니터링**: 로그 수집 실패 또는 지연에 대한 알림을 설정하여 지속적인 로깅을 보장합니다.
+ **Kubernetes 주석 및 레이블 사용**: Kubernetes 주석 및 레이블을 사용하여 로그에 메타데이터를 추가하여 검색 가능성과 필터링을 개선합니다.
+ **분산 추적 구현**: [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 또는 Jaeger와 같은 분산 추적 도구를 사용하여 마이크로서비스 간에 로그를 상호 연관시킵니다.
+ **로그 볼륨 최적화**: 불필요한 비용 및 성능 문제를 방지하기 위해 로깅하는 항목에 대해 선택적인 조치를 취합니다. 대용량의 낮은 값 로그에 샘플링을 사용합니다.
+ **로그 집계 구현**: Logstash와 같은 도구를 사용하여 여러 소스의 로그를 집계한 후 중앙 로깅 시스템으로 전송합니다.
+ **가능한 AWS 서비스 경우 사용**: CloudWatch Logs 및 Container Insights와 같은 서비스는 다른와 원활하게 통합됩니다 AWS 서비스.
+ **로그 분석 및 시각화 구현**: CloudWatch Logs Insights, Kibana를 사용하는 Elasticsearch 또는 로그 분석 및 시각화를 위한 타사 솔루션과 같은 도구를 사용합니다.
+ **자동 로그 분석 구현**: 기계 학습 및 AI 기반 도구를 사용하여 로그의 이상 및 패턴을 자동으로 감지합니다.
+ **로깅 전략 문서화**: 팀을 위한 로깅 아키텍처, 사례 및 도구에 대한 명확한 문서를 유지 관리합니다.

# Amazon EKS에 로깅하기 위한 중요 고려 사항
<a name="logging-considerations"></a>

이 섹션에서는 Amazon EKS에서 로깅을 구현할 때 유의해야 할 중요한 고려 사항에 대해 설명합니다.
+ **성능 영향**: 과도한 로깅은 애플리케이션 성능에 영향을 미칠 수 있습니다. 생성된 로그의 볼륨과 빈도에 유의하세요.
+ **비용 관리**: 로그 스토리지 및 처리에는 특히 대규모로 상당한 비용이 발생할 수 있습니다. 로그 보존 정책을 구현하고 로그 집계를 사용하여 비용을 절감하는 것이 좋습니다.
+ **보안 및 규정 준수**: 로그에 암호 또는 개인 데이터와 같은 민감한 정보가 포함되어 있지 않은지 확인합니다. 전송 중인 로그와 저장된 로그에 대한 암호화를 구현합니다. 로그를 처리할 때 일반 데이터 보호 규정(GDPR) 또는 건강 보험 양도 및 책임에 관한 법률(HIPAA)과 같은 규정 준수 요구 사항을 고려합니다.
+ **확장성**: 로깅 솔루션이 클러스터 크기 및 로그 볼륨에 따라 확장될 수 있는지 확인합니다. 로그 전송에 버퍼링 및 일괄 처리를 사용하는 것이 좋습니다.
+ **로그 보존**: 적절한 로그 보존 기간을 정의하고 구현합니다. 규정 준수 요구 사항과 스토리지 비용의 균형을 맞춥니다.
+ **액세스 제어**: 로그 액세스를 위한 적절한 AWS Identity and Access Management (IAM) 역할 및 정책을 구현합니다. 로그 관리에 대한 [최소 권한 원칙을](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_least_privileges.html) 따릅니다.
+ **로그 일관성**: 다양한 애플리케이션 및 서비스에서 일관된 로그 형식을 사용합니다. 보다 쉬운 구문 분석 및 분석을 위해 구조화된 로깅을 사용합니다.
+ **시간 동기화**: 모든 노드에서 시간을 동기화하여 로그에서 일관된 타임스탬프를 가져옵니다.
+ **리소스 할당**: 에이전트 로깅에 적합한 리소스(예: CPU 및 메모리)를 할당합니다. 로깅 구성 요소의 리소스 사용량을 모니터링합니다.
+ **Fargate 고려 사항**: Fargate에는 EC2-based 노드와 다른 특정 로깅 메커니즘이 있습니다. [Fargate 로깅](https://docs.aws.amazon.com/eks/latest/userguide/fargate-logging.html)의 제한 사항과 기능을 이해합니다.
+ **다중 테넌트 클러스터**: 다중 테넌트 환경에서 로그가 테넌트 간에 적절하게 격리되었는지 확인합니다.
+ **로그 구문 분석 및 분석**: 효과적인 로그 분석에 필요한 도구와 기술을 고려합니다. 구조화된 데이터 추출을 위한 로그 구문 분석을 구현합니다.
+ **로깅 시스템 모니터링**: 로깅 인프라 자체에 대한 모니터링을 설정합니다. 로깅 시스템 실패 또는 백로그에 대한 알림을 생성합니다.
+ **네트워크 영향**: 로그 전송에 사용되는 네트워크 대역폭에 유의하세요. 로그 데이터에 압축을 사용하는 것이 좋습니다.
+ **Kubernetes 이벤트**: Kubernetes 이벤트를 중요한 정보의 소스로 간과하지 마세요.
+ **컨트롤 플레인 로깅**: 컨트롤 플레인 로깅 활성화의 영향과 비용을 이해합니다.
+ **디버깅 기능**: 로깅 솔루션이 디버깅 및 문제 해결을 쉽게 허용하는지 확인합니다.
+ **기존 도구와의 통합**: Amazon EKS 로깅 솔루션이 기존 모니터링 및 알림 도구와 통합되는 방법을 고려합니다.
+ **테스트**: 특히 클러스터 업그레이드 후 로깅 설정을 정기적으로 테스트합니다.
+ **설명서**: 로깅 아키텍처 및 관행에 대한 명확한 설명서를 유지 관리합니다.
+ **로그 집계 지연** 시간: 로그 집계의 지연 시간과 로그 집계가 실시간 모니터링에 미치는 영향에 유의하세요.