Amazon CloudWatch로 애플리케이션 지표 내보내기
Fargate의 Amazon ECS는 사용자 정의 애플리케이션 지표를 Amazon CloudWatch에 사용자 정의 지표로 내보내기를 지원합니다. 이는 태스크 정의에 AWS Distro for OpenTelemetry 사이드카 컨테이너를 추가하는 방식으로 수행됩니다. Amazon ECS 콘솔은 새 작업 정의를 생성할 때 지표 수집 사용 옵션을 추가하여 이 프로세스를 간소화합니다. 자세한 내용은 콘솔을 사용하여 Amazon ECS 작업 정의 생성 단원을 참조하십시오.
애플리케이션 지표는 로그 그룹 이름이 /aws/ecs/application/metrics
인 CloudWatch Logs로 내보내지며 ECS/AWSOTel/Application
네임스페이스에서 볼 수 있습니다. 애플리케이션은 OpenTelemetry SDK로 계측되어야 합니다. 자세한 정보는 AWS Distro for OpenTelemetry 설명서의 AWS Distro for OpenTelemetry 소개
고려 사항
Amazon CloudWatch에 애플리케이션 지표를 전송하기 위해 Fargate의 Amazon ECS와 AWS Distro for OpenTelemetry 통합을 사용할 때 다음 사항을 고려해야 합니다.
-
이 통합은 사용자 지정 애플리케이션 지표만 CloudWatch로 전송합니다. 작업 수준 지표를 원하는 경우 Amazon ECS 클러스터 구성에서 컨테이너 인사이트를 켭니다. 자세한 내용은 Container Insights를 사용하여 Amazon ECS 컨테이너 모니터링 단원을 참조하십시오.
-
AWS Distro for OpenTelemetry 통합은 Fargate에서 호스팅되는 Amazon ECS 워크로드 및 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 워크로드에 대해 지원됩니다. 외부 인스턴스는 현재 지원되지 않습니다.
-
CloudWatch는 지표당 최대 30개의 차원을 지원합니다. Amazon ECS는 기본적으로
TaskARN
,ClusterARN
,LaunchType
,TaskDefinitionFamily
및TaskDefinitionRevision
차원을 지표에 포함합니다. 나머지 25개 차원은 애플리케이션에서 정의할 수 있습니다. 30개 이상의 차원이 구성된 경우 CloudWatch는 이를 표시할 수 없습니다. 이 경우 애플리케이션 지표는ECS/AWSOTel/Application
CloudWatch 지표 네임스페이스에 표시되지만 차원은 없습니다. 애플리케이션을 계측하여 차원을 추가할 수 있습니다. 자세한 정보는 AWS Distro for OpenTelemetry 설명서의 AWS Distro for OpenTelemetry로 CloudWatch 지표 사용을 참조하세요.
AWS Distro for OpenTelemetry와 Amazon CloudWatch 통합에 필요한 IAM 권한
Amazon ECS와 AWS Distro for OpenTelemetry를 통합하려면 태스크 IAM 역할을 생성하고 태스크 정의에서 역할을 지정해야 합니다. AWS Distro for OpenTelemetry 사이드카도 컨테이너 로그를 CloudWatch Logs로 라우팅하도록 구성하는 것이 좋습니다. 이 경우 태스크 실행 IAM 역할도 생성하고 태스크 정의에 지정해야 합니다. Amazon ECS 콘솔은 사용자를 대신하여 작업 실행 IAM 역할을 처리하지만 작업 IAM 역할은 수동으로 생성하고 작업 정의에 추가해야 합니다. 태스크 실행 IAM 역할에 대한 자세한 정보는 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요.
중요
AWS Distro for OpenTelemetry 통합을 사용하여 애플리케이션 추적 데이터도 수집하는 경우 태스크 IAM 역할에 해당 통합에 필요한 권한도 포함되어 있는지 확인합니다. 자세한 내용은 애플리케이션 추적 데이터를 사용하여 Amazon ECS 최적화 기회 식별 단원을 참조하십시오.
애플리케이션에 추가 권한이 필요한 경우 이 정책에 추가해야 합니다. 각 태스크 정의는 하나의 태스크 IAM 역할만 지정할 수 있습니다. 예를 들어 Systems Manager에 저장된 사용자 정의 구성 파일을 사용하는 경우 이 IAM 정책에 ssm:GetParameters
권한을 추가해야 합니다.
Elastic Container Service에 대한 서비스 역할을 생성하는 방법(IAM 콘솔)
AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
IAM 콘솔의 탐색 창에서 역할을 선택하고 역할 생성을 선택합니다.
-
신뢰할 수 있는 엔터티 유형에 AWS 서비스를 선택합니다.
-
서비스 또는 사용 사례의 경우 Elastic Container Service를 선택하고 Elastic Container Service 작업 사용 사례를 선택합니다.
-
Next(다음)를 선택합니다.
-
권한 추가 섹션에서 AWSDistroOpenTelemetryPolicyForXray를 검색하고 정책을 선택합니다.
-
(선택 사항) 권한 경계를 선택합니다. 이는 서비스 역할에서 가능한 고급 기능이며 서비스 링크된 역할은 아닙니다.
-
권한 경계 설정 섹션을 열고 최대 역할 권한을 관리하기 위한 권한 경계 사용을 선택합니다.
IAM은 계정의 AWS 관리형 또는 고객 관리형 정책 목록을 포함합니다.
정책을 선택하여 권한 경계를 사용하세요.
-
-
Next(다음)를 선택합니다.
-
역할의 목적을 식별하는 데 도움이 되는 역할 이름이나 역할 이름 접미사를 입력합니다.
중요
역할 이름을 지정할 때는 다음 사항에 유의하세요.
-
역할 이름은 AWS 계정 내에서 고유해야 하지만 대소문자를 구분하지는 않습니다.
예를 들어, 이름이
PRODROLE
과prodrole
, 두 가지로 지정된 역할을 만들지 마십시오. 역할 이름이 정책 또는 ARN의 일부로 사용되는 경우 역할 이름은 대소문자를 구분합니다. 그러나 로그인 프로세스와 같이 콘솔에서 역할 이름이 고객에게 표시되는 경우에는 역할 이름이 대소문자를 구분하지 않습니다. -
다른 엔터티가 역할을 참조할 수 있기 때문에 역할이 생성된 후에는 역할 이름을 편집할 수 없습니다.
-
-
(선택 사항)설명에 역할에 대한 설명을 입력합니다.
-
(선택 사항) 역할에 대한 사용 사례와 권한을 편집하려면 1단계: 신뢰할 수 있는 엔터티 선택 또는 2단계: 권한 추가 섹션에서 편집을 선택합니다.
-
(선택 사항) 태그를 키-값 페어로 연결하여 역할을 식별, 구성 또는 검색합니다. IAM에서 태그 사용에 대한 자세한 내용을 알아보려면 IAM 사용 설명서의 IAM 리소스에 태그 지정을 참조하세요.
-
역할을 검토한 다음 역할 생성을 선택합니다.
태스크 정의에서 AWS Distro for OpenTelemetry 사이드카 지정
Amazon ECS 콘솔은 지표 수집 사용 옵션으로 AWS Distro for OpenTelemetry 사이드카 컨테이너 생성 환경을 단순화합니다. 자세한 내용은 콘솔을 사용하여 Amazon ECS 작업 정의 생성 단원을 참조하십시오.
Amazon ECS 콘솔을 사용하지 않는 경우 태스크 정의에 AWS Distro for OpenTelemetry 사이드카 컨테이너를 수동으로 추가할 수 있습니다. 다음 태스크 정의 예는 Amazon CloudWatch 통합을 위한 AWS Distro for OpenTelemetry 사이드카를 추가하기 위한 컨테이너 정의를 보여줍니다.
{ "family": "otel-using-cloudwatch", "taskRoleArn": "arn:aws:iam::111122223333:role/
AmazonECS_OpenTelemetryCloudWatchRole
", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole
", "containerDefinitions": [ { "name": "aws-otel-emitter
", "image": "application-image
", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/aws-otel-emitter", "awslogs-region": "us-east-1
", "awslogs-stream-prefix": "ecs" } }, "dependsOn": [{ "containerName": "aws-otel-collector", "condition": "START" }] }, { "name": "aws-otel-collector", "image": "public.ecr.aws/aws-observability/aws-otel-collector:v0.30.0", "essential": true, "command": [ "--config=/etc/ecs/ecs-cloudwatch.yaml" ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "us-east-1
", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }