Exportation des métriques d'application vers Amazon Managed Service for Prometheus - Amazon Elastic Container Service

Exportation des métriques d'application vers Amazon Managed Service for Prometheus

Amazon ECS prend en charge l'exportation de vos métriques de processeur, de mémoire, de réseau et de stockage au niveau des tâches, ainsi que vos métriques d'application personnalisées vers Amazon Managed Service for Prometheus. Pour ce faire, ajoutez le conteneur sidecar AWS Distro pour OpenTelemetry à votre définition de tâche. La console Amazon ECS simplifie ce processus en ajoutant l’option Utiliser la collection de métriques lors de la création d’une définition de tâche. Pour de plus amples informations, consultez Création d’une définition de tâche Amazon ECS à l’aide de la console.

Les métriques sont exportées vers Amazon Managed Service for Prometheus et peuvent être consultées à l'aide du tableau de bord Amazon Managed Grafana. Votre application doit être instrumentée avec les bibliothèques Prometheus ou avec le SDK OpenTelemetry. Pour plus d'informations sur l'instrumentalisation de votre application avec le SDK OpenTelemetry, consultez Introduction à AWS Distro pour OpenTelemetry dans la documentation AWS Distro pour OpenTelemetry.

Lorsque vous utilisez les bibliothèques Prometheus, votre application doit exposer un point de terminaison /metrics utilisé pour récupérer les données de métriques. Pour plus d'informations sur l'instrumentation de votre application avec les bibliothèques Prometheus, consultez Bibliothèques clientes Prometheus dans la documentation Prometheus.

Considérations

Les informations suivantes doivent être prises en compte lors de l'utilisation d'Amazon ECS sur l'intégration Fargate avec AWS Distro pour OpenTelemetry pour envoyer les métriques d'application vers Amazon CloudWatch et Amazon Managed Service for Prometheus.

  • L'intégration AWS Distro pour OpenTelemetry n'est prise en charge que pour les charges de travail Amazon ECS hébergées sur Fargate et les charges de travail Amazon ECS hébergées sur des instances Amazon EC2. Les instances externes ne sont actuellement pas prises en charge.

  • Par défaut, AWS Distro pour OpenTelemetry inclut toutes les dimensions au niveau des tâches disponibles pour vos métriques d'application lors de l'exportation vers Amazon Managed Service for Prometheus. Vous pouvez également instrumenter votre application pour ajouter des dimensions supplémentaires. Pour plus d'informations, consultez Démarrage avec Prometheus Remote Write Exporter pour Amazon Managed Service for Prometheus dans la documentation AWS Distro pour OpenTelemetry.

Autorisations IAM nécessaires pour l'intégration AWS Distro pour OpenTelemetry avec Amazon Managed Service for Prometheus

L'intégration d'Amazon ECS avec Amazon Managed Service for Prometheus à l'aide du sidecar AWS Distro pour OpenTelemetry nécessite de créer un rôle IAM de tâche et de spécifier le rôle dans votre définition de tâche. Ce rôle IAM de tâche doit être créé manuellement avant d’enregistrer votre définition de tâche. Pour plus d’informations sur la création d’un rôle de tâche, consultez la section rôle IAM de tâche Amazon ECS.

Nous vous recommandons de configurer le sidecar AWS Distro pour OpenTelemetry pour qu'il achemine les journaux de conteneur vers CloudWatch Logs, ce qui nécessite qu'un rôle IAM d'exécution de tâche soit créé et spécifié dans votre définition de tâche. La console Amazon ECS prend en charge le rôle IAM d’exécution de tâche pour vous, mais le rôle IAM de tâche doit être créé manuellement. Pour en savoir plus sur la création d'un rôle IAM d'exécution de tâche, consultez Rôle IAM d'exécution de tâche Amazon ECS.

Important

Si vous collectez également des données de suivi d'application à l'aide de l'intégration AWS Distro pour OpenTelemetry, assurez-vous que le rôle IAM de votre tâche contient également les autorisations nécessaires à cette intégration. Pour de plus amples informations, consultez Identification des opportunités d’optimisation d’Amazon ECS à l’aide des données de suivi des applications.

Les autorisations IAM suivantes sont requises pour l’intégration d’AWS Distro for OpenTelemetry avec Amazon Managed Service for Prometheus

  • logs:PutLogEvents

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

  • CloudWatch:PutMetricData

Spécification du sidecar AWS Distro pour OpenTelemetry dans votre définition de tâche

La console Amazon ECS simplifie l’expérience de création du conteneur sidecar AWS Distro for OpenTelemetry à l’aide de l’option Utiliser la collecte de métriques. Pour de plus amples informations, consultez Création d’une définition de tâche Amazon ECS à l’aide de la console.

Si vous n'utilisez pas la console Amazon ECS, vous pouvez ajouter manuellement le conteneur sidecar AWS Distro pour OpenTelemetry à votre définition de tâche. L'exemple de définition de tâche suivant affiche la définition du conteneur permettant d'ajouter le sidecar AWS Distro pour OpenTelemetry pour l'intégration 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" }