Amazon CloudWatch Observability EKS 추가 기능을 사용하여 CloudWatch 에이전트 설치 - Amazon CloudWatch

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을 사용할 수 있습니다.

AWS CLI
AWS CLI를 사용하여 Amazon CloudWatch Observability EKS 추가 기능 설치

다음 명령을 입력합니다. my-cluster-name를 클러스터 이름으로 바꿉니다.

aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name my-cluster-name
Amazon EKS console
Amazon EKS 콘솔을 사용하여 Amazon CloudWatch Observability EKS 추가 기능 설치
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 좌측 탐색 창에서 클러스터를 선택합니다.

  3. Amazon CloudWatch Observabiilty EKS 추가 기능을 구성할 클러스터의 이름을 선택합니다.

  4. 추가 기능(Add-ons) 탭을 선택합니다.

  5. 추가 기능 더 가져오기를 선택합니다.

  6. 추가 기능 선택 페이지에서 다음을 수행합니다.

    1. Amazon EKS 추가 기능 섹션에서 Amazon CloudWatch Observability 확인란을 선택합니다.

    2. 다음을 선택합니다.

  7. 선택한 추가 기능 설정 구성 페이지에서 다음을 수행합니다.

    1. 사용할 버전(Version)을 선택합니다.

    2. IAM 역할 선택노드에서 상속을 선택합니다.

    3. (선택 사항) 선택적 구성 설정을 확장할 수 있습니다. 충돌 해결 방법에서 재정의를 선택한 경우 기존 추가 기능에 대한 하나 이상의 설정을 Amazon EKS 추가 기능의 설정으로 덮어쓸 수 있습니다. 이 옵션을 사용 설정하지 않고 기존 설정과 충돌이 있는 경우 작업이 실패합니다. 결과 오류 메시지를 사용하여 충돌을 해결할 수 있습니다. 이 옵션을 선택하기 전에 Amazon EKS 추가 기능이 사용자가 자체 관리해야 하는 설정을 관리하지 않는지 확인하세요.

    4. 다음을 선택합니다.

  8. 검토 및 추가 페이지에서 생성을 선택합니다. 추가 기능 설치가 완료되면 설치한 추가 기능이 표시됩니다.

AWS CloudFormation
AWS CloudFormation을 사용하여 Amazon CloudWatch Observability EKS 추가 기능 설치

my-cluster-name를 클러스터 이름으로 바꿉니다. 자세한 내용은 AWS::EKS::Addon을 참조하세요.

{ "Resources": { "EKSAddOn": { "Type": "AWS::EKS::Addon", "Properties": { "AddonName": "amazon-cloudwatch-observability", "ClusterName": "my-cluster-name" } } } }
Terraform
Terraform을 사용하여 Amazon CloudWatch Observability EKS 추가 기능 설치

my-cluster-name를 클러스터 이름으로 바꿉니다. 자세한 내용은 리소스: aws_eks_addon를 참조하세요.

resource "aws_eks_addon" "example" { addon_name = "amazon-cloudwatch-observability" cluster_name = "my-cluster-name" }

옵션 2: IAM 서비스 계정 역할을 사용하여 설치

이 방법을 사용하기 전에 다음과 같은 사전 요구 사항을 확인하세요.

  • Container Insights를 지원하는 AWS 리전 중 하나에 노드가 연결되어 있는 Amazon EKS 클러스터터가 작동 중입니다. 지원되는 리전 목록은 Container Insights 단원을 참조하세요.

  • 클러스터에 대해 kubectl가 설치 및 구성되어 있습니다. 자세한 내용은 Amazon EKS 사용 설명서kubectl 설치를 참조하세요.

  • eksctl이 설치되어 있습니다. 자세한 내용은 Amazon EKS 사용 설명서의 eksctl설치 또는 업데이트 섹션을 참조하세요.

IAM 서비스 계정 역할을 사용하여 Amazon CloudWatch Observability EKS 추가 기능 설치
  1. 클러스터에 아직 OpenID Connect(OIDC) 공급자가 없는 경우 다음 명령을 입력하여 해당 공급자를 생성합니다. 자세한 내용은 Amazon EKS 사용자 가이드의 IAM 역할을 가정하는 Kubernetes 서비스 계정 구성을 참조하세요.

    eksctl utils associate-iam-oidc-provider --cluster my-cluster-name --approve
  2. 다음 명령을 입력하여 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-name my-service-account-role \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-only \ --approve
  3. 다음 명령을 입력하여 추가 기능을 설치합니다. 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 승인 웹후크를 활용하여 AmazonCloudWatchAgentInstrumentation 사용자 지정 리소스(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에 대한 옵트인 지원이 있습니다. 이 솔루션은 Kubernetes에서 TLS 인증서 관리를 위해 널리 채택되고 있으며, 이를 통해 인증서를 획득, 갱신, 관리 및 사용하는 프로세스가 간소화됩니다. 인증서가 유효하고 최신 상태인지 확인하고 만료되기 전에 구성된 시간에 인증서 갱신을 시도합니다. cert-manager는 또한 AWS Certificate Manager Private Certificate Authority를 포함하여 지원되는 다양한 소스에서 인증서 발급을 용이하게 합니다.

클러스터의 TLS 인증서 관리에 대한 모범 사례를 검토하고 프로덕션 환경에서는 cert-manager로 옵트인하는 것이 좋습니다. 승인 웹후크 TLS 인증서를 관리하기 위해 cert-manager를 활성화하도록 옵트인 경우 Amazon CloudWatch Observability EKS 추가 기능을 설치하기 전에 Amazon EKS 클러스터에 cert-manager를 미리 설치해야 합니다. 사용 가능한 설치 옵션에 대한 자세한 내용은 cert-manager 설명서를 참조하세요. 설치한 후에는 추가 기능을 만들거나 업데이트할 때 다음 추가 구성을 사용하여 승인 웹후크 TLS 인증서를 관리하는 데 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를 제공하여 추가 기능을 생성하거나 업데이트할 수 있습니다.