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

Exportação de métricas de aplicações para o Amazon Managed Service for Prometheus

O Amazon ECS oferece suporte à exportação de métricas de CPU, memória, rede e armazenamento no nível da tarefa e suas métricas de aplicação personalizadas para o Amazon Managed Service for Prometheus. 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 são exportadas para o Amazon Managed Service para Prometheus e podem ser exibidas usando o painel do Amazon Managed Grafana. Sua aplicação deve ser instrumentada com bibliotecas do Prometheus ou com o SDK OpenTelemetry. Para obter mais informações sobre a instrumentação da sua aplicação com o SDK OpenTelemetry, consulte Introdução à distribuição da AWS do OpenTelemetry, na documentação da distribuição da AWS do OpenTelemetry.

Ao usar as bibliotecas do Prometheus, sua aplicação deve expor um endpoint /metrics que é usado para extrair os dados das métricas. Para obter mais informações sobre como instrumentar a aplicação com bibliotecas do Prometheus, consulte Bibliotecas de clientes do Prometheus na documentação do Prometheus.

Considerações

Recomendamos levar as seguintes informações em consideração ao usar a integração do Amazon ECS no Fargate com o AWS Distro para OpenTelemetry para o envio de métricas de aplicações para o Amazon Managed Service para Prometheus.

  • 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.

  • Por padrão, a distribuição da AWS do OpenTelemetry inclui todas as dimensões de nível de tarefa disponíveis para as métricas de aplicações ao exportar para o Amazon Managed Service for Prometheus. Você também pode instrumentar sua aplicação para incluir dimensões adicionais. Para obter mais informações, consulte Primeiros passos com o Prometheus Remote Write Exporter para Amazon Managed Service for Prometheus 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 Managed Service for Prometheus

A integração do Amazon ECS com o Amazon Managed Service for Prometheus usando o arquivo associado da 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. Essa função do IAM de tarefa deve ser criada manualmente usando as etapas abaixo antes de registrar sua 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 da tarefa em seu nome, mas o perfil do IAM da tarefa deve ser criado manualmente. Para obter mais informações sobre a criação de uma função do IAM de execução de tarefa, 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.

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 AmazonPrometheusRemoteWriteAccess 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 de contêiner para adicionar o arquivo associado da distribuição da AWS do OpenTelemetry para integração com o Amazon Managed Service for Prometheus.

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