Amazon Managed Service for Prometheus로 애플리케이션 지표 내보내기
Amazon ECS는 태스크 수준 CPU, 메모리, 네트워크 및 스토리지 지표와 사용자 정의 애플리케이션 지표를 Amazon Managed Service for Prometheus로 내보내기를 지원합니다. 이는 태스크 정의에 AWS Distro for OpenTelemetry 사이드카 컨테이너를 추가하는 방식으로 수행됩니다. Amazon ECS 콘솔은 새 작업 정의를 생성할 때 지표 수집 사용 옵션을 추가하여 이 프로세스를 간소화합니다. 자세한 내용은 콘솔을 사용하여 Amazon ECS 작업 정의 생성 섹션을 참조하세요.
지표는 Amazon Managed Service for Prometheus로 내보내지며 Amazon Managed Grafana 대시보드를 사용하여 볼 수 있습니다. 애플리케이션은 Prometheus 라이브러리 또는 OpenTelemetry SDK로 계측되어야 합니다. OpenTelemetry SDK로 애플리케이션 계측에 대한 자세한 정보는 AWS Distro for OpenTelemetry 설명서의 AWS Distro for OpenTelemetry 소개
Prometheus 라이브러리를 사용할 때 애플리케이션은 지표 데이터를 스크레이핑하는 데 사용되는 /metrics 엔드포인트를 노출해야 합니다. Prometheus 라이브러리로 애플리케이션 계측에 대한 자세한 정보는 Prometheus 설명서의 Prometheus 클라이언트 라이브러리
고려 사항
Amazon Managed Service for Prometheus에 애플리케이션 지표를 전송하기 위해 Fargate의 Amazon ECS와 AWS Distro for OpenTelemetry 통합을 사용하는 경우 다음 사항을 고려해야 합니다.
-
AWS Distro for OpenTelemetry 통합은 Fargate에서 호스팅되는 Amazon ECS 워크로드 및 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 워크로드에 대해 지원됩니다. 외부 인스턴스는 현재 지원되지 않습니다.
-
기본적으로 AWS Distro for OpenTelemetry에는 Amazon Managed Service for Prometheus로 내보낼 때 애플리케이션 지표에 사용 가능한 모든 태스크 수준 차원이 포함됩니다. 애플리케이션을 계측하여 차원을 추가할 수도 있습니다. 자세한 정보는 AWS Distro for OpenTelemetry 설명서의 Amazon Managed Service for Prometheus용 Prometheus Remote Write Exporter 시작하기(Getting Started with Prometheus Remote Write Exporter for Amazon Managed Service for Prometheus)
를 참조하세요.
AWS Distro for OpenTelemetry와 Amazon Managed Service for Prometheus 통합에 필요한 IAM 권한
AWS Distro for OpenTelemetry 사이드카를 사용하여 Amazon ECS와 Amazon Managed Service for Prometheus를 통합하려면 태스크 IAM 역할을 생성하고 태스크 정의에서 역할을 지정해야 합니다. 이 태스크 IAM 역할은 태스크 정의를 등록하기 전에 수동으로 생성해야 합니다. 태스크 역할 생성에 대한 자세한 내용은 Amazon ECS 작업 IAM 역할 섹션을 참조하세요.
AWS Distro for OpenTelemetry 사이드카도 컨테이너 로그를 CloudWatch Logs로 라우팅하도록 구성하는 것이 좋습니다. 이 경우 태스크 실행 IAM 역할도 생성하고 태스크 정의에 지정해야 합니다. Amazon ECS 콘솔은 사용자를 대신하여 작업 실행 IAM 역할을 처리하지만 태스크 IAM 역할은 수동으로 생성해야 합니다. 태스크 실행 IAM 역할 생성에 대한 자세한 정보는 Amazon ECS 태스크 실행 IAM 역할 섹션을 참조하세요.
중요
AWS Distro for OpenTelemetry 통합을 사용하여 애플리케이션 추적 데이터도 수집하는 경우 태스크 IAM 역할에 해당 통합에 필요한 권한도 포함되어 있는지 확인합니다. 자세한 내용은 애플리케이션 추적 데이터를 사용하여 Amazon ECS 최적화 기회 식별 섹션을 참조하세요.
다음 권한은 Amazon Managed Service for Prometheus와 AWS Distro for OpenTelemetry의 통합에 필요합니다.
logs:PutLogEvents
logs:CreateLogGroup
logs:CreateLogStream
logs:DescribeLogStreams
logs:DescribeLogGroups
cloudwatch:PutMetricData
태스크 정의에서 AWS Distro for OpenTelemetry 사이드카 지정
Amazon ECS 콘솔은 지표 수집 사용 옵션으로 AWS Distro for OpenTelemetry 사이드카 컨테이너 생성 환경을 단순화합니다. 자세한 내용은 콘솔을 사용하여 Amazon ECS 작업 정의 생성 섹션을 참조하세요.
Amazon ECS 콘솔을 사용하지 않는 경우 태스크 정의에 AWS Distro for OpenTelemetry 사이드카 컨테이너를 수동으로 추가할 수 있습니다. 다음 태스크 정의 예는 Amazon Managed Service for Prometheus 통합을 위한 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": "aws-region", "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-amp.yaml" ], "environment": [{ "name": "AWS_PROMETHEUS_ENDPOINT", "value": "https://aps-workspaces.aws-region.amazonaws.com/workspaces/ws-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111/api/v1/remote_write" }], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "aws-region", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }