Amazon CloudWatch Observability EKS 추가 기능을 사용하여 CloudWatch 에이전트 설치
Amazon CloudWatch Observability EKS 추가 기능은 Amazon EKS 클러스터에 CloudWatch 에이전트와 Fluent-Bit 에이전트를 설치하며, Container Insights는 Amazon EKS와 CloudWatch Application Signals에 대한 향상된 관찰성을 기본적으로 활성화합니다. 추가 기능을 사용하면 Amazon EKS 클러스터에서 인프라 지표, 애플리케이션 성능 텔레메트리 및 컨테이너 로그를 수집할 수 있습니다.
Amazon EKS의 향상된 관찰 기능을 갖춘 Container Insights를 사용하면 Container Insights 지표는 저장된 지표나 수집된 로그별로 요금이 부과되는 대신 관찰당 요금이 부과됩니다. Application Signals의 경우 결제는 애플리케이션에 대한 인바운드 요청, 애플리케이션의 아웃바운드 요청, 구성된 각 서비스 수준 목표(SLO)를 기준으로 합니다. 수신된 각 인바운드 요청은 하나의 애플리케이션 신호를 생성하고, 각 아웃바운드 요청은 하나의 애플리케이션 신호를 생성합니다. 모든 SLO는 측정 기간당 두 개의 애플리케이션 신호를 생성합니다. CloudWatch 요금에 대한 자세한 내용은 Amazon CloudWatch 요금
Amazon EKS 추가 기능을 사용하면 Amazon EKS 클러스터의 Linux 및 Windows 워커 노드 모두에서 Container Insights를 사용할 수 있습니다. Windows에서 Container Insights를 활성화하려면 Amazon EKS 추가 기능 버전 1.5.0 이상을 사용해야 합니다. Amazon EKS 클러스터의 Windows에서는 Application Signals가 현재 지원되지 않습니다.
Amazon CloudWatch Observability EKS 추가 기능은 Kubernetes 버전 1.23 이상을 실행하는 Amazon EKS 클러스터에서 지원됩니다.
추가 기능을 설치할 때 CloudWatch 에이전트가 지표, 로그 및 트레이스를 CloudWatch에 전송할 수 있도록 IAM 권한을 부여해야 합니다. 이렇게 하는 방법은 두 가지입니다.
작업자 노드의 IAM 역할에 정책을 연결합니다. 이 옵션은 워커 노드에 CloudWatch로 원격 분석을 전송할 수 있는 권한을 부여합니다.
에이전트 포드에 대해 서비스 계정의 IAM 역할을 사용하고 이 역할에 정책을 연결합니다. 이는 Amazon EKS 클러스터에만 적용됩니다. 이 옵션을 사용하면 CloudWatch가 해당 에이전트 포드에만 액세스할 수 있습니다.
옵션 1: 워커 노드에 IAM 권한으로 설치
이 방법을 사용하려면 먼저 다음 명령을 입력하여 CloudWatchAgentServerPolicy IAM 정책을 워커 노드에 연결합니다. 이 명령에서는 my-worker-node-role
을 Kubernetes 워커 노드에서 사용하는 IAM 역할로 대체합니다.
aws iam attach-role-policy \ --role-name
my-worker-node-role
\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
그런 다음 Amazon CloudWatch Observability EKS 추가 기능을 사용하여 설치합니다. 추가 기능을 설치하려면 AWS CLI, 콘솔, AWS CloudFormation 또는 Terraform을 사용할 수 있습니다.
옵션 2: IAM 서비스 계정 역할을 사용하여 설치
이 방법을 사용하기 전에 다음과 같은 사전 요구 사항을 확인하세요.
-
Container Insights를 지원하는 AWS 리전 중 하나에 노드가 연결되어 있는 Amazon EKS 클러스터터가 작동 중입니다. 지원되는 리전 목록은 Container Insights 단원을 참조하세요.
-
클러스터에 대해
kubectl
가 설치 및 구성되어 있습니다. 자세한 내용은 Amazon EKS 사용 설명서의kubectl
설치를 참조하세요. -
eksctl
이 설치되어 있습니다. 자세한 내용은 Amazon EKS 사용 설명서의eksctl
설치 또는 업데이트 섹션을 참조하세요.
IAM 서비스 계정 역할을 사용하여 Amazon CloudWatch Observability EKS 추가 기능 설치
클러스터에 아직 OpenID Connect(OIDC) 공급자가 없는 경우 다음 명령을 입력하여 해당 공급자를 생성합니다. 자세한 내용은 Amazon EKS 사용자 가이드의 IAM 역할을 가정하는 Kubernetes 서비스 계정 구성을 참조하세요.
eksctl utils associate-iam-oidc-provider --cluster
my-cluster-name
--approve다음 명령을 입력하여 CloudWatchAgentServerPolicy 정책이 연결된 IAM 역할을 생성하고 OIDC를 사용하여 해당 역할을 수임하도록 에이전트 서비스 계정을 구성합니다.
my-cluster-name
을 클러스터 이름으로,my-service-account-role
을 서비스 계정을 연결할 역할의 이름으로 바꿉니다. 역할이 아직 없는 경우eksctl
이 자동으로 생성합니다.eksctl create iamserviceaccount \ --name cloudwatch-agent \ --namespace amazon-cloudwatch --cluster
my-cluster-name
\ --role-namemy-service-account-role
\ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-only \ --approve다음 명령을 입력하여 추가 기능을 설치합니다.
my-cluster-name
을 클러스터 이름으로,111122223333
을 계정 ID로,my-service-account-role
을 이전 단계에서 생성한 IAM 역할로 바꿉니다.aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name
my-cluster-name
--service-account-role-arn arn:aws:iam::111122223333
:role/my-service-account-role
(선택 사항) 추가 구성
컨테이너 로그 수집 옵트아웃
기본적으로 추가 기능은 Fluent Bit를 사용하여 모든 포드에서 컨테이너 로그를 수집한 다음 로그를 CloudWatch Logs로 보냅니다. 수집되는 로그에 대한 자세한 내용은 Fluent Bit 설정을 참조하세요.
컨테이너 로그 수집을 옵트아웃하려면 추가 기능을 생성하거나 업데이트할 때 다음 옵션을 전달하세요.
--configuration-values '{ "containerLogs": { "enabled": false } }'
NVIDIA GPU 메트릭 수집에서 옵트아웃
CloudWatch 에이전트 버전 1.300034.0부터 Container Insights는 기본적으로 EKS 워크로드에서 NVIDIA GPU 지표를 수집합니다. 이러한 지표는 NVIDIA GPU 지표의 표에 나열되어 있습니다.
CloudWatch 에이전트 구성 파일의 accelerated_compute_metrics
옵션을 false
로 설정하여 NVIDIA GPU 지표 수집을 옵트아웃할 수 있습니다. 이 옵션은 CloudWatch 구성 파일의 metrics_collected
섹션의 kubernetes
섹션에 있습니다. 다음은 옵트아웃 구성의 예입니다.
{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "emf": { }, "kubernetes": { "enhanced_container_insights": true, "accelerated_compute_metrics": false } }, "force_flush_interval": 5, } }
사용자 지정 CloudWatch 에이전트 구성 사용
CloudWatch 에이전트를 사용하여 다른 지표, 로그 또는 트레이스를 수집하려면 Container Insights와 CloudWatch Application Signals를 활성화한 상태로 유지하면서 사용자 지정 구성을 지정할 수 있습니다. 이렇게 하려면 EKS 추가 기능을 생성하거나 업데이트할 때 사용할 수 있는 고급 구성의 에이전트 키 아래에 있는 구성 키 내에 CloudWatch 에이전트 구성 파일을 포함합니다. 다음은 추가 구성을 제공하지 않은 경우의 기본 에이전트 구성을 나타냅니다.
중요
추가 구성 설정을 사용하여 제공하는 모든 사용자 지정 구성은 에이전트가 사용하는 기본 구성보다 우선합니다. 향상된 관찰성을 갖춘 Container Insights 및 CloudWatch Application Signals와 같이 기본적으로 활성화되는 기능을 실수로 비활성화하지 않도록 주의합니다. 사용자 지정 에이전트 구성을 제공해야 하는 시나리오에서는 다음 기본 구성을 기준으로 사용하고 그에 따라 수정하는 것이 좋습니다.
--configuration-values '{ "agent": { "config": { "logs": { "metrics_collected": { "app_signals": {}, "kubernetes": { "enhanced_container_insights": true } } }, "traces": { "traces_collected": { "app_signals": {} } } } }'
다음 예시는 Windows의 CloudWatch 에이전트에 대한 기본 에이전트 구성을 보여줍니다. Windows의 CloudWatch 에이전트는 사용자 지정 구성을 지원하지 않습니다.
{ "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true }, } } }
승인 웹후크 TLS 인증서 관리
Amazon CloudWatch Observability EKS 추가 기능은 Kubernetes 승인 웹후크AmazonCloudWatchAgent
및 Instrumentation
사용자 지정 리소스(CR) 요청과 클러스터에 대한 Kubernetes 포드 요청(CloudWatch Application Signals가 활성화된 경우)을 검증하고 변경합니다. Kubernetes에서 웹후크에는 보안 통신을 보장하기 위해 API 서버가 신뢰할 수 있도록 구성된 TLS 인증서가 필요합니다.
기본적으로 Amazon CloudWatch Observability EKS 추가 기능은 API 서버와 웹후크 서버 간의 통신을 보호하기 위해 자체 서명된 CA와 이 CA에서 서명한 TLS 인증서를 자동으로 생성합니다. 이 자동 생성된 인증서의 기본 만료 기한은 10년이며 만료 시 자동 갱신되지 않습니다. 또한 추가 기능을 업그레이드하거나 다시 설치할 때마다 CA 번들과 인증서가 다시 생성되므로 만료 기한이 재설정됩니다. 자동 생성된 인증서의 기본 만료 기한을 변경하려면 추가 기능을 만들거나 업데이트할 때 다음과 같은 추가 구성을 사용합니다. expiry-in-days
를 원하는 만료 기간(일)으로 바꿉니다.
--configuration-values '{ "admissionWebhooks": { "autoGenerateCert": { "expiryDays":
expiry-in-days
} } }'
보다 안전하고 기능이 풍부한 인증 기관 솔루션을 위해 이 추가 기능에는 cert-manager
클러스터의 TLS 인증서 관리에 대한 모범 사례를 검토하고 프로덕션 환경에서는 cert-manager로 옵트인하는 것이 좋습니다. 승인 웹후크 TLS 인증서를 관리하기 위해 cert-manager를 활성화하도록 옵트인 경우 Amazon CloudWatch Observability EKS 추가 기능을 설치하기 전에 Amazon EKS 클러스터에 cert-manager를 미리 설치해야 합니다. 사용 가능한 설치 옵션에 대한 자세한 내용은 cert-manager 설명서
--configuration-values '{ "admissionWebhooks": { "certManager": { "enabled": true } } }'
이 섹션에서 설명하는 고급 구성에서는 기본적으로 SelfSigned
Amazon EBS 볼륨 ID 수집
성능 로그에서 Amazon EBS 볼륨 ID를 수집하려는 경우 워커 노드나 서비스 계정에 연결된 IAM 역할에 다른 정책을 추가해야 합니다. 다음 내용을 인라인 정책으로 추가합니다. 자세한 내용은 IAM 자격 증명 권한 추가 및 제거를 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeVolumes" ], "Resource": "*", "Effect": "Allow" } ] }
Amazon CloudWatch Observability EKS 추가 기능 문제 해결
다음은 Amazon CloudWatch Observability EKS 추가 기능 관련 문제를 해결하는 데 도움이 되는 정보입니다.
Amazon CloudWatch Observability EKS 추가 기능 업데이트 및 삭제
Amazon CloudWatch Observability EKS 추가 기능의 업데이트 또는 삭제에 대한 지침은 Amazon EKS 추가 기능 관리를 참조하세요. 추가 기능 이름으로 amazon-cloudwatch-observability
를 사용합니다.
Amazon CloudWatch Observability EKS 추가 기능에서 사용하는 CloudWatch 에이전트의 버전 확인
Amazon CloudWatch Observability EKS 추가 기능은 사용 중인 CloudWatch 에이전트의 버전을 포함하여 클러스터에서 CloudWatch 에이전트 대몬 세트의 동작을 제어하는 AmazonCloudWatchAgent
종류의 사용자 지정 리소스를 설치합니다. 다음 명령을 입력하면 클러스터에 설치된 모든 AmazonCloudWatchAgent
사용자 지정 리소스 목록을 가져올 수 있습니다.
kubectl get amazoncloudwatchagent -A
이 명령의 출력에서 CloudWatch 에이전트의 버전을 확인할 수 있습니다. 또는 클러스터에서 실행 중인 amazoncloudwatchagent
리소스 또는 cloudwatch-agent-*
포드 중 하나를 설명하여 사용 중인 이미지를 검사할 수도 있습니다.
추가 기능 관리 시 ConfigurationConflict 처리
Amazon CloudWatch Observability EKS 추가 기능을 설치하거나 업데이트할 때 Conflicts found when trying to apply. Will not continue due to resolve conflicts mode
로 시작하는 설명과 함께 ConfigurationConflict
유형의 Health Issue
로 인해 발생한 오류가 발견된 경우, CloudWatch 에이전트와 ServiceAccount, ClusterRole, ClusterRoleBinding 등의 연결된 구성 요소가 클러스터에 이미 설치되어 있기 때문일 수 있습니다. 추가 기능이 CloudWatch 에이전트 및 연결된 구성 요소를 설치하려고 할 때 콘텐츠의 변경 사항이 탐지되면 기본적으로 클러스터의 리소스 상태를 덮어쓰지 않도록 설치 또는 업데이트가 실패합니다.
Amazon CloudWatch Observability EKS 추가 기능에 온보딩하려고 하는데 이 오류가 표시되는 경우 이전에 클러스터에 설치한 기존 CloudWatch 에이전트 설정을 삭제한 다음, EKS 추가 기능을 설치하는 것이 좋습니다. 사용자 지정 에이전트 구성과 같이 원래 CloudWatch 에이전트 설정에 대한 모든 사용자 지정을 백업하고 다음에 설치하거나 업데이트할 때 Amazon CloudWatch Observability EKS 추가 기능에 제공합니다. 이전에 Container Insights 온보딩을 위해 CloudWatch 에이전트를 설치한 경우 자세한 내용은 Container Insights의 CloudWatch 에이전트 및 Fluent Bit 삭제 섹션을 참조하세요.
또는 추가 기능은 OVERWRITE
를 지정하는 기능이 있는 충돌 해결 구성 옵션을 지원합니다. 이 옵션을 사용하면 클러스터의 충돌을 덮어써서 추가 기능 설치 또는 업데이트를 진행할 수 있습니다. Amazon EKS 콘솔을 사용하는 경우 추가 기능을 생성하거나 업데이트할 때 선택적 구성 설정을 선택하면 충돌 해결 방법을 찾을 수 있습니다. AWS CLI를 사용하는 경우 명령에 --resolve-conflicts OVERWRITE
를 제공하여 추가 기능을 생성하거나 업데이트할 수 있습니다.