• /
  • EnglishEspañolFrançais日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

OpenTelemetry를 통한 ECS Fargate 모니터링

OpenTelemetry Collector Contrib를 사이드카 컨테이너로 배포하여 AWS Fargate에서 실행 중인 Amazon ECS 작업을 모니터링하십시오. 이 포괄적인 가이드는 작업 정의를 생성하고, 수집기를 구성하며, 서버리스 ECS 워크로드에 대한 모니터링을 설정하는 방법을 안내합니다.

설치 단계

ECS Fargate 작업에 대한 모니터링을 설정하려면 다음 단계를 따르십시오.

시작하기 전에

사용 환경이 다음 요구 사항을 충족하는지 확인하십시오.

뉴렐릭 라이선스 키를 저장하세요

OpenTelemetry Collector의 자격 증명을 안전하게 저장하려면 라이선스 키를 Systems Manager(SSM) 파라미터로 저장합니다:

bash
$
aws ssm put-parameter \
>
--name "/newrelic-infra/ecs/license-key" \
>
--type SecureString \
>
--description 'New Relic license key for ECS monitoring' \
>
--value "YOUR_NEW_RELIC_LICENSE_KEY"

IAM 정책 및 실행 역할 생성

ECS 컨테이너가 뉴렐릭 라이선스 키를 안전하게 가져올 수 있도록 IAM 정책을 생성합니다:

bash
$
aws iam create-policy \
>
--policy-name "NewRelicSSMLicenseKeyReadAccess" \
>
--policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["ssm:GetParameters"],"Resource":["arn:aws:ssm:*:*:parameter/newrelic-infra/ecs/license-key"]}]}' \
>
--description "Provides read access to the New Relic SSM license key parameter"

작업 실행 역할로 사용할 IAM 역할을 생성합니다.

bash
$
aws iam create-role \
>
--role-name "NewRelicECSTaskExecutionRole" \
>
--assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"},"Action":"sts:AssumeRole"}]}' \
>
--description "ECS task execution role for New Relic infrastructure"

필요한 관리형 정책을 역할에 연결합니다:

bash
$
# Attach the standard ECS task execution policy
$
aws iam attach-role-policy \
>
--role-name "NewRelicECSTaskExecutionRole" \
>
--policy-arn "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
$
$
# Attach the New Relic SSM license key read access policy
$
aws iam attach-role-policy \
>
--role-name "NewRelicECSTaskExecutionRole" \
>
--policy-arn "arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/NewRelicSSMLicenseKeyReadAccess"

수집기 설정 저장

컨테이너 이미지를 다시 빌드하지 않고도 설정을 관리하고 업데이트할 수 있도록 OpenTelemetry Collector 설정을 AWS Systems Manager 파라미터 스토어에 저장합니다:

bash
$
aws ssm put-parameter \
>
--name "/ecs/otel-collector/fargate-config" \
>
--type "String" \
>
--value "$(cat <<EOF
$
receivers:
$
awsecscontainermetrics:
$
collection_interval: <COLLECTION_INTERVAL>
$
$
processors:
$
metricstransform/containers:
$
transforms:
$
- include: container.cpu.utilized
$
action: insert
$
new_name: container.cpu.utilization
$
- include: container.memory.usage
$
action: insert
$
new_name: container.memory.usage.total
$
- include: container.storage.read_bytes
$
action: insert
$
new_name: container.blockio.io_service_bytes_recursive
$
operations:
$
- action: add_label
$
new_label: operation
$
new_value: read
$
- include: container.storage.write_bytes
$
action: insert
$
new_name: container.blockio.io_service_bytes_recursive
$
operations:
$
- action: add_label
$
new_label: operation
$
new_value: write
$
$
batch:
$
send_batch_size: <SEND_BATCH_SIZE>
$
timeout: <BATCH_TIMEOUT>
$
$
resource:
$
attributes:
$
- key: ClusterName
$
from_attribute: aws.ecs.cluster.name
$
action: insert
$
- key: ServiceName
$
from_attribute: aws.ecs.service.name
$
action: insert
$
- key: TaskId
$
from_attribute: aws.ecs.task.id
$
action: insert
$
- key: TaskDefinitionFamily
$
from_attribute: aws.ecs.task.family
$
action: insert
$
- key: LaunchType
$
from_attribute: aws.ecs.launch_type
$
action: insert
$
- key: cloud.platform
$
value: \"aws_ecs\"
$
action: upsert
$
- key: docker.host
$
from_attribute: aws.ecs.task.id
$
action: insert
$
- key: docker.imageName
$
from_attribute: container.image.name
$
action: insert
$
- key: docker.containerId
$
from_attribute: container.id
$
action: insert
$
- key: docker.state
$
from_attribute: aws.ecs.container.know_status
$
action: insert
$
$
$
exporters:
$
otlphttp:
$
endpoint: https://otlp.nr-data.net:443
$
headers:
$
api-key: \${NEW_RELIC_LICENSE_KEY}
$
$
debug:
$
verbosity: basic
$
$
service:
$
pipelines:
$
metrics/containers:
$
receivers: [awsecscontainermetrics]
$
processors: [metricstransform/containers, resource, batch]
$
exporters: [otlphttp, debug]
$
EOF
$
)"

구성 매개변수

OpenTelemetry Collector 설정에서 다음 파라미터를 맞춤 설정할 수 있습니다:

매개변수

설명

<COLLECTION_INTERVAL>

ECS 컨테이너 메트릭 엔드포인트에서 메트릭을 수집하는 간격(초)입니다.

<MEMORY_LIMIT_MIB>

MiB 단위의 OpenTelemetry Collector 메모리 제한

<SEND_BATCH_SIZE>

뉴렐릭으로 보내기 전에 일괄 처리할 메트릭 수

<BATCH_TIMEOUT>

배치를 보내기 전 최대 대기 시간

<RESOURCE_DETECTION_TIMEOUT>

리소스 감지 프로세서 시간 초과

작업 정의 생성

OpenTelemetry Collector 사이드카 컨테이너를 포함하는 Fargate용 새 ECS 작업 정의를 생성합니다. 컨테이너 플랫폼에 적합한 작업 정의를 선택합니다:

작업 정의 파라미터

ECS Fargate 작업 정의에서 다음 파라미터를 사용자 지정할 수 있습니다:

매개변수

설명

<TASK_CPU>

Fargate 작업에 대한 총 CPU 유닛

<TASK_MEMORY>

MiB 단위의 Fargate 작업 총 메모리

<APP_CPU>

애플리케이션 컨테이너에 할당된 CPU 단위

<APP_MEMORY>

MiB 단위로 애플리케이션 컨테이너에 할당된 메모리

<COLLECTOR_CPU>

OpenTelemetry Collector에 할당된 CPU 단위

<COLLECTOR_MEMORY_RESERVATION>

MiB 단위의 OpenTelemetry Collector 메모리 예약

<APP_LOG_GROUP>

애플리케이션 컨테이너용 CloudWatch 로그 그룹 이름

<COLLECTOR_LOG_GROUP>

OpenTelemetry Collector용 CloudWatch 로그 그룹 이름

<AWS_REGION>

CloudWatch 로그용 AWS 리전

<APP_LOG_STREAM_PREFIX>

애플리케이션 컨테이너의 로그 스트림 접두사

<COLLECTOR_LOG_STREAM_PREFIX>

OpenTelemetry Collector용 로그 스트림 접두사

Linux와 Windows Fargate 컨테이너의 주요 차이점:

  • 런타임 플랫폼: Windows에는 명시적인 지정이 필요합니다 operatingSystemFamily: "WINDOWS_SERVER_2022_FULL"
  • 이미지: Windows는 특정 Windows 컨테이너 이미지를 사용합니다.
  • 진입점: Windows 수집기가 C:\\otelcol-contrib.exe 을(를) 진입점으로 지정합니다.
  • 메모리 할당: 유연한 메모리 관리를 위해 memoryReservation 을(를) 사용합니다.

중요

YOUR_ACCOUNT 및 리전 값을 실제 AWS 계정 ID 및 AWS 리전으로 바꿉니다.

작업을 배포하고 실행합니다.

ECS 클러스터에 작업 정의를 배포합니다:

  1. 작업 정의를 등록합니다:

    bash
    $
    aws ecs register-task-definition --cli-input-json file://task-definition.json
  2. 서비스 생성:

    bash
    $
    aws ecs create-service \
    >
    --cluster your-cluster-name \
    >
    --service-name otel-monitoring-service \
    >
    --task-definition otel-ecs-fargate-metrics:1 \
    >
    --desired-count 1 \
    >
    --launch-type FARGATE \
    >
    --network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890],securityGroups=[sg-abcdef],assignPublicIp=ENABLED}"

데이터 수집 확인

데이터가 뉴렐릭으로 유입되는지 확인하세요:

EC2와의 설정 차이

Fargate에서 실행 시 주요 차이점:

  • 호스트 수준 액세스 불가: EC2에서와 같이 기본 호스트 메트릭에 액세스할 수 없습니다.
  • 네트워크 모드: awsvpc 네트워크 모드를 사용해야 합니다
  • 리소스 제약: Fargate CPU/메모리 조합에 의해 제한됨
  • 스토리지: 임시 스토리지 전용, 영구 볼륨 없음
  • 컨테이너 인사이트: 컨테이너 통계를 위해 작업 메타데이터 엔드포인트 v4에 의존합니다.

다음 단계

모니터링을 설정한 후 다음을 수행할 수 있습니다:

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.