Exportación de métricas de aplicaciones a Amazon CloudWatch - Amazon Elastic Container Service

Exportación de métricas de aplicaciones a Amazon CloudWatch

Amazon ECS en Fargate admite la exportación de métricas de aplicaciones personalizadas a Amazon CloudWatch como métricas personalizadas. 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 con la consola.

Las métricas de la aplicación se exportan a CloudWatch Logs con nombre de grupo de registros /aws/ecs/application/metrics y las métricas de se pueden ver en el espacio de nombres ECS/AWSOTel/Application. La aplicación debe estar instrumentada con el SDK de OpenTelemetry. Para obtener más información, consulte Introducción a AWS Distro for OpenTelemetry en la documentación de AWS Distro for OpenTelemetry.

Consideraciones

Debe tenerse en cuenta lo siguiente al utilizar Amazon ECS en la integración de Fargate con AWS Distro for OpenTelemetry para enviar métricas de aplicaciones a Amazon CloudWatch

  • Esta integración solo envía las métricas personalizadas de la aplicación a CloudWatch. Si desea obtener métricas de tarea, puede activar Información de contenedores en la configuración del clúster de Amazon ECS. Para obtener más información, consulte Supervisión de los contenedores de Amazon ECS mediante Información de contenedores.

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

  • CloudWatch admite un máximo de 30 dimensiones por métrica. De forma predeterminada, Amazon ECS incluye de forma predeterminada las dimensiones TaskARN, ClusterARN, LaunchType, TaskDefinitionFamily y TaskDefinitionRevision de las métricas. La aplicación puede definir las 25 dimensiones restantes. Si se configuran más de 30 dimensiones, CloudWatch no puede mostrarlas. Cuando esto ocurra, las métricas de la aplicación se mostrarán en el espacio de nombres métrico de CloudWatch ECS/AWSOTel/Application pero sin dimensiones. Puede instrumentar su aplicación para agregar dimensiones adicionales. Para obtener más información, consulte Using CloudWatch metrics with AWS Distro for OpenTelemetry (Uso de métricas CLoudWatch con Distro for OpenTelemetry) en la documentación de AWS Distro for OpenTelemetry.

Permisos de IAM necesarios para la integración de AWS Distro for OpenTelemetry Amazon CloudWatch

Integración de Amazon ECS con AWS Distro for OpenTelemetry requiere crear un rol de IAM para tareas y especificar el rol en la definición de tareas. 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 y agregarse a la definición de tarea. Para obtener más información sobre el 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.

Si la aplicación requiere permisos adicionales, debe agregarlos a esta política. Cada definición de tarea solo puede especificar un rol de IAM de tarea. Por ejemplo, si utiliza un archivo de configuración personalizado almacenado en Systems Manager, debe agregar el permiso ssm:GetParameters para esta política de IAM.

Creación de un rol de servicio de Elastic Container Service (consola de IAM)
  1. Inicie sesión en la AWS Management Console y abra la consola de 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 AWSDistroOpenTelemetryPolicyForXray 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 con 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 el sidecar de AWS Distro for OpenTelemetry para la integración de Amazon CloudWatch.

{ "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": "us-east-1", "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-cloudwatch.yaml" ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }