Exportación de métricas de aplicaciones a Amazon Managed Service for Prometheus - Amazon Elastic Container Service

Exportación de métricas de aplicaciones a Amazon Managed Service for Prometheus

Amazon ECS admite la exportación de las métricas de CPU, memoria, red y almacenamiento de nivel de tarea y las métricas de aplicaciones personalizadas a Amazon Managed Service for Prometheus. Esto se hace agregando el contenedor de sidecar de AWS Distro for OpenTelemetry según su definición de tarea. La consola de Amazon ECS simplifica este proceso al agregar la opción Utilizar recopilación de métricas cuando se crea una nueva definición de tarea. Para obtener más información, consulte Creación de una definición de tareas de Amazon ECS mediante la consola.

Las métricas se exportan a Amazon Managed Service for Prometheus y se pueden ver mediante el panel de control de Amazon Managed Grafana. Su aplicación debe estar instrumentada con bibliotecas Prometheus o con el SDK de OpenTelemetry. Para obtener más información sobre cómo instrumentar la aplicación con el SDK de OpenTelemetry, consulte Introducción a AWS Distro for OpenTelemetry en la documentación de AWS Distro for OpenTelemetry.

Al utilizar las bibliotecas de Prometheus, la aplicación debe exponer un punto de conexión /metrics que se utiliza para extraer los datos de métricas. Para obtener más información sobre cómo instrumentar la aplicación con las bibliotecas Prometheus, consulte Bibliotecas cliente de Prometheus en la documentación de Prometheus.

Consideraciones

Debe tenerse en cuenta lo siguiente cuando utiliza Amazon ECS en la integración de Fargate con AWS Distro para OpenTelemetry a fin de enviar métricas de aplicaciones a Amazon Managed Service para Prometheus.

  • La integración de AWS Distro para OpenTelemetry se admite para cargas de trabajo de Amazon ECS alojadas en Fargate y cargas de trabajo de Amazon ECS alojadas en instancias de Amazon EC2. No se admiten instancias externas en este momento.

  • Por defecto, AWS Distro for OpenTelemetry incluye todas las dimensiones de nivel de tareas disponibles para las métricas de la aplicación al exportar a Amazon Managed Service for Prometheus. También puede instrumentar su aplicación para agregar dimensiones adicionales. Para obtener más información, consulte Introducción a Prometheus Remote Write Exporter para Amazon Managed Service for Prometheus en la documentación de AWS Distro for OpenTelemetry.

Permisos de IAM necesarios para la integración de AWS Distro for OpenTelemetry con Amazon Managed Service for Prometheus

La integración de Amazon ECS con Amazon Managed Service for Prometheus mediante el sidecar de AWS Distro for openTelemetry requiere crear un rol de IAM para tareas y especificar el rol en la definición de tareas. Este rol de IAM de tarea debe crearse manualmente antes de registrar la definición de tarea. Para obtener más información sobre cómo crear un rol de tarea, consulte Rol de IAM de tarea de Amazon ECS.

Le recomendamos que configure también el sidecar AWS Distro for OpenTelemetry para enrutar los registros de contenedores a CloudWatch Logs, lo que requiere crear y especificar un rol de IAM de ejecución de tareas también en su definición de tarea. La consola de Amazon ECS se encarga del rol de IAM de ejecución de tareas en su nombre, pero el rol de IAM de tarea debe crearse manualmente. Para obtener más información sobre la creación de un rol de IAM para la ejecución de tareas, consulte Rol de IAM de ejecución de tareas de Amazon ECS.

importante

Si también recopila datos de seguimiento de aplicaciones mediante la integración AWS Distro para OpenTelemetry, asegúrese de que el rol de IAM de tarea también contenga los permisos necesarios para esa integración. Para obtener más información, consulte Identifique las oportunidades de optimización de Amazon ECS mediante los datos de seguimiento de la aplicación.

Los permisos siguientes son necesarios para la integración de AWS Distro for OpenTelemetry con Amazon Managed Service for Prometheus:

  • logs:PutLogEvents

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

  • cloudwatch:PutMetricData

Especificación del sidecar de AWS Distro for OpenTelemetry en la definición de tarea

La consola de Amazon ECS simplifica la experiencia de crear el contenedor del sidecar AWS Distro for OpenTelemetry mediante la opción Utilizar recopilación de métricas. Para obtener más información, consulte Creación de una definición de tareas de Amazon ECS mediante la consola.

Si no está utilizando la consola de Amazon ECS, puede agregar el contenedor de sidecar de AWS Distro for OpenTelemetry a la definición de tarea manualmente. En el siguiente ejemplo de definición de tareas se muestra la definición de contenedor para agregar la integración de sidecar de AWS Distro for OpenTelemetry for 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" }