Monitore as tarefas do Amazon ECS em execução no AWS Fargate implantando o OpenTelemetry Collector Contrib como um contêiner sidecar. Este guia abrangente orienta você na criação de definições de tarefa, configuração do coletor e configuração do monitoramento para seus workloads serverless do ECS.
Etapas de instalação
Siga estas etapas para configurar o monitoramento das suas tarefas do ECS Fargate.
Antes de você começar
Certifique-se de que seu ambiente atenda a estes requisitos:
Armazene sua chave de licença do New Relic
Salve sua chave de licença como um parâmetro do Systems Manager (SSM) para armazenar credenciais com segurança para o OpenTelemetry Collector:
$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"Criar política IAM e função de execução
Crie uma política do IAM para que seus contêineres do ECS possam recuperar com segurança a chave de licença da New Relic:
$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"Crie uma função do IAM para ser usada como função de execução de tarefas:
$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"Anexe as políticas gerenciadas necessárias à função:
$# 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"Armazenar configuração do coletor
Armazene a configuração do OpenTelemetry Collector no AWS Systems Manager Parameter Store para que você possa gerenciar e atualizar as configurações sem reconstruir imagens de contêiner:
$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 configuração
Os seguintes parâmetros podem ser personalizados na configuração do OpenTelemetry Collector:
Parâmetro | Descrição |
|---|---|
| O intervalo em segundos para coletar métricas do endpoint de métricas do contêiner ECS. |
| Limite de memória para o OpenTelemetry Collector em MiB |
| Número de métricas a serem agrupadas em lote antes de enviar para o New Relic |
| Tempo máximo de espera antes de enviar um lote |
| Tempo limite para processadores de detecção de recursos |
Criar definição de tarefa
Crie uma nova definição de tarefa do ECS para o Fargate que inclua o contêiner sidecar do OpenTelemetry Collector. Escolha a definição de tarefa apropriada para sua plataforma de contêiner:
Parâmetros de definição de tarefa
Os seguintes parâmetros podem ser personalizados na sua definição de tarefa do ECS Fargate:
Parâmetro | Descrição |
|---|---|
| Total de unidades de CPU para a tarefa do Fargate |
| Memória total para a tarefa do Fargate em MiB |
| Unidades de CPU alocadas ao seu contêiner de aplicativo |
| Memória alocada ao seu contêiner de aplicativo em MiB |
| Unidades de CPU alocadas ao OpenTelemetry Collector |
| Reserva de memória para o OpenTelemetry Collector em MiB |
| Nome do grupo de logs do CloudWatch para o contêiner do seu aplicativo |
| Nome do grupo de logs do CloudWatch para o OpenTelemetry Collector |
| Região da AWS para logs do CloudWatch |
| Prefixo do stream de log para o contêiner do seu aplicativo |
| Prefixo do fluxo de log para o OpenTelemetry Collector |
Dica
Principais diferenças entre contêineres Fargate Linux e Windows:
- Plataforma de tempo de execução: Windows requer explícito
operatingSystemFamily: "WINDOWS_SERVER_2022_FULL" - Imagens: o Windows usa imagens de contêiner específicas do Windows
- Ponto de entrada: o coletor do Windows especifica
C:\\otelcol-contrib.execomo ponto de entrada - Alocação de memória: usa
memoryReservationpara gerenciamento flexível de memória
Importante
Substitua os valores de YOUR_ACCOUNT e da região pelo ID da sua conta da AWS e região da AWS reais.
Implantar e executar a tarefa
Implante sua definição de tarefa em seu cluster ECS:
Registre a definição de tarefa:
bash$aws ecs register-task-definition --cli-input-json file://task-definition.jsonCriar um serviço:
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 coleta de dados
Verifique se seus dados estão fluindo para o New Relic:
Verifique o status do OpenTelemetry Collector: analise os logs do contêiner para confirmar que o coletor está sendo executado sem erros e se conectando com sucesso ao New Relic:
bash$aws logs get-log-events \>--log-group-name "/ecs/otel-collector-fargate" \>--log-stream-name "otel/otel-collector/TASK_ID"Verifique os dados na interface do New Relic: navegue até one.newrelic.com > All Capabilities > Infrastructure para confirmar que seus contêineres ECS aparecem com métricas. Para obter orientações detalhadas sobre como explorar seus dados, consulte Encontre e consulte seus dados de monitoramento do ECS.
Diferenças de configuração em relação ao EC2
Principais diferenças ao executar no Fargate:
- Sem acesso no nível do host: não é possível acessar as métricas do host subjacente como no EC2
- Modo de rede: deve usar o modo de rede
awsvpc - Restrições de recursos: limitado por combinações de CPU/memória do Fargate
- Armazenamento: apenas armazenamento efêmero, sem volumes persistentes
- Insights de contêiner: depende do endpoint de metadados de tarefa v4 para estatísticas de contêiner
Próximos passos
Após configurar o monitoramento, você pode:
- Crie dashboards personalizados para suas métricas do Fargate
- Configurar alertas para problemas no nível do contêiner e da tarefa
- Correlacionar métricas do ECS com traces e logs do aplicativo