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 obter 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. Esse perfil do IAM da tarefa deve ser criado manualmente antes de registrar a definição de tarefa. Para obter mais informações sobre a criação de um perfil de tarefa, consulte Perfil do IAM para tarefas do Amazon ECS.

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 obter mais informações, consulte Identifique oportunidades de otimização do Amazon ECS usando dados de rastreamento de aplicações.

As permissões abaixo são obrigatórias para integração do AWS Distro para OpenTelemetry com o Amazon Managed Service for Prometheus:

  • logs:PutLogEvents

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

  • cloudwatch:PutMetricData

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