Exportação de métricas de aplicações para o Amazon CloudWatch - Amazon Elastic Container Service

Exportação de métricas de aplicações para o Amazon CloudWatch

O Amazon ECS no Fargate oferece suporte à exportação de métricas de aplicações personalizadas para o Amazon CloudWatch como métricas personalizadas. Isso é feito adicionando o contêiner de arquivo associado da distribuição da AWS do OpenTelemetry à sua definição de tarefa. O console do Amazon ECS simplifica esse processo adicionando a opção Usar coleta de métricas ao criar uma definição de tarefa. Para ter mais informações, consulte Criar uma definição de tarefa do Amazon ECS usando o console.

As métricas da aplicação são exportadas para o CloudWatch Logs com o nome do grupo de logs /aws/ecs/application/metrics e as métricas podem ser exibidas no namespace ECS/AWSOTel/Application. Sua aplicação deve ser instrumentada com o SDK OpenTelemetry. Para obter mais informações, consulte Introdução à distribuição da AWS do OpenTelemetry, na documentação da distribuição da AWS do OpenTelemetry.

Considerações

As informações a seguir devem ser consideradas quando for usada a integração do Amazon ECS na Fargate com a distribuição da AWS do OpenTelemetry para o envio de métricas de aplicações para o Amazon CloudWatch.

  • Essa integração só envia suas métricas personalizadas de aplicação para o CloudWatch. Se você quiser métricas por tarefa, é possível ativar o Container Insights na configuração de cluster do Amazon ECS. Para ter mais informações, consulte Monitoração de contêineres do Amazon ECS usando o Container Insights.

  • A integração do AWS Distro para OpenTelemetry é compatível com workloads do Amazon ECS hospedadas no Fargate e workloads do Amazon ECS em instâncias do Amazon EC2. No momento, não há compatibilidade com instâncias externas.

  • O CloudWatch é compatível com, no máximo, 30 dimensões por métrica. Por padrão, o Amazon ECS assume como padrão a inclusão das dimensões TaskARN, ClusterARN, LaunchType, TaskDefinitionFamily e TaskDefinitionRevision para as métricas. As demais 25 dimensões podem ser definidas pela aplicação. Se mais de 30 dimensões forem configuradas, o CloudWatch não poderá exibi-las. Quando isso ocorrer, as métricas da aplicação serão exibidas no namespace de métricas do CloudWatch ECS/AWSOTel/Application, mas sem nenhuma dimensão. É possível instrumentar sua aplicação para incluir dimensões adicionais. Para obter mais informações, consulte Uso de métricas do CloudWatch com a distribuição da AWS do OpenTelemetry, na documentação da distribuição da AWS do OpenTelemetry.

Permissões obrigatórias do IAM para integração da distribuição da AWS do OpenTelemetry com o Amazon CloudWatch

A integração do Amazon ECS com a distribuição da AWS do OpenTelemetry requer que você crie uma função do IAM de tarefa e especifique a função na definição de tarefa. Recomendamos que o arquivo associado da distribuição da AWS do OpenTelemetry também possa ser configurado para encaminhar logs de contêiner para o CloudWatch Logs, o que exige que uma função do IAM de execução de tarefa seja criada e especificada também na definição da tarefa. O console do Amazon ECS cuida do perfil do IAM de execução de tarefas em seu nome, mas o perfil do IAM da tarefa deve ser criado manualmente e adicionado à definição de tarefa. Para obter mais informações sobre a função do IAM de execução de tarefas, consulte Função do IAM de execução de tarefas do Amazon ECS.

Importante

Se você também estiver coletando dados de rastreamento de aplicações usando a distribuição da AWS para integração do OpenTelemetry, certifique-se de que sua função do IAM de tarefa também contenha as permissões necessárias para essa integração. Para ter mais informações, consulte Identifique oportunidades de otimização do Amazon ECS usando dados de rastreamento de aplicações.

Se a aplicação exigir permissões adicionais, você deverá adicioná-las a essa política. Cada definição de tarefa só pode especificar uma função do IAM de tarefa. Por exemplo, se você estiver usando um arquivo de configuração personalizado armazenado no Systems Manager, você deve adicionar a permissão ssm:GetParameters a essa política do IAM.

Para criar um perfil de serviço do Elastic Container Service (console do IAM)
  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação do console do IAM, escolha Funções e, em seguida, Criar função.

  3. Em Tipo de Entidade Confiável, escolha AWS service (Serviço da AWS).

  4. Em Serviço ou caso de uso, escolha Elastic Container Service e selecione o caso de uso da Tarefa do Elastic Container Service.

  5. Escolha Próximo.

  6. Na seção Adicionar permissões, procure AWSDistroOpenTelemetryPolicyForXray e selecione a política.

  7. (Opcional) Defina um limite de permissões. Esse é um atributo avançado que está disponível para perfis de serviço, mas não para perfis vinculados ao serviço.

    1. Abra a seção Definir limite de permissões e escolha Usar um limite de permissões para controlar o número máximo de permissões do perfil.

      O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta.

    2. Selecione a política a ser usada para o limite de permissões.

  8. Escolha Próximo.

  9. Insira um nome de perfil ou um sufixo de nome de perfil para ajudar a identificar a finalidade do perfil.

    Importante

    Quando nomear um perfil, observe o seguinte:

    • Os nomes do perfil devem ser exclusivos em sua Conta da AWS e não podem ser diferenciados caso a caso.

      Por exemplo, não crie dois perfis denominados PRODROLE e prodrole. Quando usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. No entanto, quando exibido para os clientes no console, como durante o processo de login, o nome de perfil diferencia maiúsculas de minúsculas.

    • Não é possível editar o nome do perfil depois de criá-lo porque outras entidades podem referenciar o perfil.

  10. (Opcional) Em Descrição, insira uma descrição para o perfil.

  11. (Opcional) Para editar os casos de uso e as permissões do perfil, escolha Editar nas seções Etapa 1: selecionar entidades confiáveis ou Etapa 2: adicionar permissões.

  12. (Opcional) Para ajudar a identificar, organizar ou pesquisar o perfil, adicione tags como pares de chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte Marcar recursos do IAM no Guia do usuário do IAM.

  13. Reveja a função e escolha Criar função.

Especificação do arquivo associado da distribuição da AWS do OpenTelemetry na sua definição de tarefa

O console do Amazon ECS simplifica a experiência de criação do contêiner auxiliar do AWS Distro para OpenTelemetry utilizando a opção Usar coleta de métricas. Para ter mais informações, consulte Criar uma definição de tarefa do Amazon ECS usando o console.

Se você não estiver usando o console do Amazon ECS, poderá adicionar o contêiner de arquivo associado da distribuição da AWS do OpenTelemetry à sua definição de tarefa manualmente. O exemplo de definição de tarefa a seguir mostra a definição do contêiner para adicionar o arquivo associado da distribuição da AWS do OpenTelemetry para integração do Amazon CloudWatch.

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