

# Exportação de métricas de aplicações para o Amazon Managed Service for Prometheus
<a name="application-metrics-prometheus"></a>

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](create-task-definition.md).

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](https://aws-otel.github.io/docs/introduction), 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](https://prometheus.io/docs/instrumenting/clientlibs/) na documentação do Prometheus.

## Considerações
<a name="application-metrics-prometheus-considerations"></a>

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](https://aws-otel.github.io/docs/getting-started/prometheus-remote-write-exporter) 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 name="application-metrics-prometheus-iam"></a>

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](task-iam-roles.md).

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](task_execution_IAM_role.md).

**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](trace-data.md).

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
<a name="application-metrics-prometheus-containerdefinitions"></a>

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](create-task-definition.md).

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