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 siguiendo los pasos que se indican a continuación antes de registrar la definición de tarea.

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.

Creación de un rol de servicio de Elastic Container Service (consola de IAM)
  1. Inicie sesión en AWS Management Console Management Console y abra la consola IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la consola de IAM, seleccione Roles y, a continuación, elija Crear rol.

  3. En Tipo de entidad de confianza, elija Servicio de AWS.

  4. En Servicio o caso de uso, seleccione Elastic Container Service y, a continuación, seleccione el caso de uso Tarea de Elastic Container Service.

  5. Elija Siguiente.

  6. En la sección Agregar permisos, busque AmazonPrometheusRemoteWriteAccess y, a continuación, seleccione la política.

  7. (Opcional) Configure un límite de permisos. Se trata de una característica avanzada que está disponible para los roles de servicio, pero no para los roles vinculados a servicios.

    1. Abra la sección Configurar límite de permisos y, a continuación, elija Utilizar un límite de permisos para controlar los permisos que puede tener el rol como máximo.

      IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente de cada cuenta.

    2. Seleccione la política que desea utilizar para el límite de permisos.

  8. Elija Siguiente.

  9. Escriba un nombre o sufijo de nombre para el rol, que pueda ayudarle a identificar su finalidad.

    importante

    Cuando asigne un nombre a un rol, tenga en cuenta lo siguiente:

    • Los nombres de rol deben ser únicos dentro de su Cuenta de AWS, y no se pueden hacer únicos mediante mayúsculas y minúsculas.

      Por ejemplo, no puede crear roles denominados tanto PRODROLE como prodrole. Cuando se utiliza un nombre de rol en una política o como parte de un ARN, el nombre de rol distingue entre mayúsculas y minúsculas, sin embargo, cuando un nombre de rol les aparece a los clientes en la consola, como por ejemplo durante el proceso de inicio de sesión, el nombre de rol no distingue entre mayúsculas y minúsculas.

    • Dado que otras entidades podrían hacer referencia al rol, no es posible editar el nombre del rol una vez creado.

  10. (Opcional) En Descripción, ingrese una descripción para el rol.

  11. (Opcional) Para editar los casos de uso y los permisos de la función, en las secciones Paso 1: Seleccionar entidades confiables o en Paso 2: Agregar permisos, elija Editar.

  12. (Opcional) Para ayudar a identificar, organizar o buscar el rol, agregue etiquetas como pares clave-valor. Para obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de recursos de IAM en la Guía de usuario de IAM.

  13. Revise el rol y, a continuación, elija Crear rol.

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