• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Monitorear ECS Fargate con OpenTelemetry

Monitoree las tareas de Amazon ECS que se ejecutan en AWS Fargate al desplegar OpenTelemetry Collector Contrib como contenedor sidecar. Esta guía completa lo guía a través de la creación de definiciones de tareas, la configuración del recolector y la configuración del monitoreo para sus workloads de ECS sin servidor.

Pasos de instalación

Siga estos pasos para configurar el monitoreo de sus tareas de ECS Fargate.

Antes de que empieces

Asegúrese de que su entorno cumpla con estos requisitos:

Guarde su clave de licencia de New Relic

Guarde su clave de licencia como un parámetro de Systems Manager (SSM) para almacenar de forma segura las credenciales para el OpenTelemetry Collector:

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"

Crear una política de IAM y un rol de ejecución

Crea una política de IAM para que tus contenedores de ECS puedan recuperar de forma segura la clave de licencia de New Relic:

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"

Cree una función de IAM para utilizarla como función de ejecución de tareas:

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"

Adjunte las políticas administradas requeridas al rol:

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"

Almacenar configuración del recolector

Almacene la configuración del Collector de OpenTelemetry en el almacén de parámetros de AWS Systems Manager para que pueda administrar y actualizar los ajustes sin reconstruir las imágenes de contenedor:

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
$
)"

Parámetro de configuración

Los siguientes parámetros se pueden personalizar en la configuración de OpenTelemetry Collector:

Parámetro

Descripción

<COLLECTION_INTERVAL>

El intervalo en segundos para recopilar métricas del extremo de métricas del contenedor de ECS.

<MEMORY_LIMIT_MIB>

Límite de memoria para el OpenTelemetry Collector en MiB

<SEND_BATCH_SIZE>

Número de métricas a agrupar en lotes antes de enviarlas a New Relic

<BATCH_TIMEOUT>

Tiempo máximo de espera antes de enviar un lote

<RESOURCE_DETECTION_TIMEOUT>

Tiempo de espera para procesadores de detección de recursos

Crear definición de tarea

Cree una nueva definición de tarea de ECS para Fargate que incluya el contenedor sidecar de OpenTelemetry Collector. Elija la definición de tarea adecuada para su plataforma de contenedores:

Parámetros de definición de tarea

Los siguientes parámetros se pueden personalizar en la definición de su tarea de ECS Fargate:

Parámetro

Descripción

<TASK_CPU>

Unidades totales de CPU para la tarea de Fargate

<TASK_MEMORY>

Memoria total para la tarea de Fargate en MiB

<APP_CPU>

Unidades de CPU asignadas a su contenedor de aplicación

<APP_MEMORY>

Memoria asignada a su contenedor de aplicación en MiB

<COLLECTOR_CPU>

Unidades de CPU asignadas al OpenTelemetry Collector

<COLLECTOR_MEMORY_RESERVATION>

Reserva de memoria para el OpenTelemetry Collector en MiB

<APP_LOG_GROUP>

Nombre del grupo de logs de CloudWatch para su contenedor de aplicación

<COLLECTOR_LOG_GROUP>

Nombre del grupo de logs de CloudWatch para el OpenTelemetry Collector

<AWS_REGION>

Región de AWS para logs de CloudWatch

<APP_LOG_STREAM_PREFIX>

Prefijo del flujo de logs para su contenedor de aplicación

<COLLECTOR_LOG_STREAM_PREFIX>

Prefijo del flujo de logs para el OpenTelemetry Collector

Sugerencia

Diferencias clave entre los contenedores de Fargate de Linux y Windows:

  • Plataforma runtime: Windows requiere explícito operatingSystemFamily: "WINDOWS_SERVER_2022_FULL"
  • Imágenes: Windows utiliza imágenes de contenedor específicas de Windows
  • Punto de entrada: el recolector de Windows especifica C:\\otelcol-contrib.exe como punto de entrada
  • Asignación de memoria: utiliza memoryReservation para una administración de memoria flexible

Importante

Reemplace los valores de YOUR_ACCOUNT y de la región por el ID de su cuenta de AWS y la región de AWS reales.

Desplegar y ejecutar la tarea

Despliegue la definición de su tarea en su clúster de ECS:

  1. Registre la definición de la tarea:

    bash
    $
    aws ecs register-task-definition --cli-input-json file://task-definition.json
  2. Crear un servicio:

    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}"

Verificar la recopilación de datos

Verifique que sus datos estén fluyendo a New Relic:

Diferencias de configuración con EC2

Diferencias clave al ejecutar en Fargate:

  • Sin acceso a nivel de host: no se puede acceder a las métricas del host subyacente como en EC2
  • Modo de red: debe usar el modo de red awsvpc
  • Restricciones de recursos: limitado por las combinaciones de CPU/memoria de Fargate
  • Almacenamiento: solo almacenamiento efímero, sin volúmenes persistentes
  • Información valiosa del contenedor: depende del extremo de metadatos de tareas v4 para las estadísticas del contenedor

Próximos pasos

Después de configurar el monitoreo, puedes:

Copyright © 2026 New Relic Inc.

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