Monitorez les tâches Amazon ECS s'exécutant sur AWS Fargate en déployant OpenTelemetry Collector Contrib en tant que conteneur sidecar. Ce guide complet vous accompagne dans la création de définitions de tâches, la configuration du collecteur et la mise en place du monitoring pour vos workloads ECS serverless.
Étapes d'installation
Suivez ces étapes pour configurer le monitoring de vos tâches ECS Fargate.
Avant de commencer
Assurez-vous que votre environnement respecte ces prérequis :
Stockez votre clé de licence New Relic
Enregistrez votre clé de licence en tant que paramètre du système Manager (SSM) pour stocker en toute sécurité les informations d'identification pour l'OpenTelemetry Collector :
$aws ssm put-parameter \> --name "/newrelic-infra/ecs/license-key" \> --type SecureString \> --description 'New Relic license key for ECS monitoring' \> --value "YOUR_NEW_RELIC_LICENSE_KEY"Créer une politique IAM et un rôle d'exécution
Créez une politique IAM pour que vos conteneurs ECS puissent récupérer en toute sécurité la clé de licence New Relic :
$aws iam create-policy \> --policy-name "NewRelicSSMLicenseKeyReadAccess" \> --policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["ssm:GetParameters"],"Resource":["arn:aws:ssm:*:*:parameter/newrelic-infra/ecs/license-key"]}]}' \> --description "Provides read access to the New Relic SSM license key parameter"Créez un rôle IAM à utiliser comme rôle d’exécution de tâche :
$aws iam create-role \> --role-name "NewRelicECSTaskExecutionRole" \> --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"ecs-tasks.amazonaws.com"},"Action":"sts:AssumeRole"}]}' \> --description "ECS task execution role for New Relic infrastructure"Joignez les politiques gérées requises au rôle :
$# Attach the standard ECS task execution policy$aws iam attach-role-policy \> --role-name "NewRelicECSTaskExecutionRole" \> --policy-arn "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"$
$# Attach the New Relic SSM license key read access policy$aws iam attach-role-policy \> --role-name "NewRelicECSTaskExecutionRole" \> --policy-arn "arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/NewRelicSSMLicenseKeyReadAccess"Stocker la configuration du collecteur
Stockez la configuration du Collector OpenTelemetry dans le magasin de paramètres AWS Systems Manager afin de pouvoir gérer et mettre à jour les paramètres sans reconstruire les images de conteneurs :
$aws ssm put-parameter \> --name "/ecs/otel-collector/fargate-config" \> --type "String" \> --value "$(cat <<EOF$receivers:$ awsecscontainermetrics:$ collection_interval: <COLLECTION_INTERVAL>$
$processors:$ metricstransform/containers:$ transforms:$ - include: container.cpu.utilized$ action: insert$ new_name: container.cpu.utilization$ - include: container.memory.usage$ action: insert$ new_name: container.memory.usage.total$ - include: container.storage.read_bytes$ action: insert$ new_name: container.blockio.io_service_bytes_recursive$ operations:$ - action: add_label$ new_label: operation$ new_value: read$ - include: container.storage.write_bytes$ action: insert$ new_name: container.blockio.io_service_bytes_recursive$ operations:$ - action: add_label$ new_label: operation$ new_value: write$
$ batch:$ send_batch_size: <SEND_BATCH_SIZE>$ timeout: <BATCH_TIMEOUT>$
$ resource:$ attributes:$ - key: ClusterName$ from_attribute: aws.ecs.cluster.name$ action: insert$ - key: ServiceName$ from_attribute: aws.ecs.service.name$ action: insert$ - key: TaskId$ from_attribute: aws.ecs.task.id$ action: insert$ - key: TaskDefinitionFamily$ from_attribute: aws.ecs.task.family$ action: insert$ - key: LaunchType$ from_attribute: aws.ecs.launch_type$ action: insert$ - key: cloud.platform$ value: \"aws_ecs\"$ action: upsert$ - key: docker.host$ from_attribute: aws.ecs.task.id$ action: insert$ - key: docker.imageName$ from_attribute: container.image.name$ action: insert$ - key: docker.containerId$ from_attribute: container.id$ action: insert$ - key: docker.state$ from_attribute: aws.ecs.container.know_status$ action: insert$
$
$exporters:$ otlphttp:$ endpoint: https://otlp.nr-data.net:443$ headers:$ api-key: \${NEW_RELIC_LICENSE_KEY}$
$ debug:$ verbosity: basic$
$service:$ pipelines:$ metrics/containers:$ receivers: [awsecscontainermetrics]$ processors: [metricstransform/containers, resource, batch]$ exporters: [otlphttp, debug]$EOF$)"Paramètres de configuration
Les paramètres suivants peuvent être personnalisés dans la configuration d'OpenTelemetry Collector :
paramètres | Description |
|---|---|
| L'intervalle en secondes pour collecter les métriques depuis le point de terminaison des métriques du conteneur ECS. |
| Limite de mémoire pour le Collector OpenTelemetry en MiB |
| Nombre de métriques à regrouper par lot avant l'envoi à New Relic |
| Temps maximal d'attente avant l'envoi d'un batch |
| Délai d'attente des processeurs de détection des ressources |
Créer une définition de tâche
Créez une nouvelle définition de tâche ECS pour Fargate qui inclut le conteneur side-car OpenTelemetry Collector. Choisissez la définition de tâche appropriée pour votre plateforme de conteneurs :
Paramètres de définition de tâche
Les paramètres suivants peuvent être personnalisés dans votre définition de tâche ECS Fargate :
paramètres | Description |
|---|---|
| Unités CPU totales pour la tâche Fargate |
| Mémoire totale pour la tâche Fargate en MiB |
| Unités de CPU allouées à votre conteneur d'application |
| Mémoire allouée à votre conteneur d'application en MiB |
| Unités CPU allouées au Collector OpenTelemetry |
| Réservation de mémoire pour le Collector OpenTelemetry en MiB |
| Nom du CloudWatch log groupe pour votre conteneur d'application |
| Nom du groupe de logs CloudWatch pour le Collector OpenTelemetry |
| Région AWS pour les logs CloudWatch |
| Préfixe du flux de logs pour votre conteneur d'application |
| Préfixe de flux de logs pour le Collector OpenTelemetry |
Conseil
Principales différences entre les conteneurs Fargate Linux et Windows :
- Plateforme d'exécution : Windows nécessite explicite
operatingSystemFamily: "WINDOWS_SERVER_2022_FULL" - Images : Windows utilise des images de conteneur Windows spécifiques
- Point d'entrée : le collecteur Windows spécifie
C:\\otelcol-contrib.execomme point d'entrée - Allocation de mémoire : utilise
memoryReservationpour une gestion flexible de la mémoire
Important
Remplacez YOUR_ACCOUNT et les valeurs de région par votre ID de compte AWS et votre région AWS réels.
Déployer et exécuter la tâche
Déployez votre définition de tâche sur votre cluster ECS :
Enregistrez la définition de tâche :
bash$aws ecs register-task-definition --cli-input-json file://task-definition.jsonCréer un service :
bash$aws ecs create-service \>--cluster your-cluster-name \>--service-name otel-monitoring-service \>--task-definition otel-ecs-fargate-metrics:1 \>--desired-count 1 \>--launch-type FARGATE \>--network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890],securityGroups=[sg-abcdef],assignPublicIp=ENABLED}"
Vérifier la collecte de données
Vérifiez que vos données sont transmises à New Relic :
Vérifiez le statut d'OpenTelemetry Collector : consultez les logs du conteneur pour confirmer que le collecteur s'exécute sans erreurs et se connecte avec succès à New Relic :
bash$aws logs get-log-events \>--log-group-name "/ecs/otel-collector-fargate" \>--log-stream-name "otel/otel-collector/TASK_ID"Vérifiez les données dans l'UI de New Relic : accédez à one.newrelic.com > All Capabilities > Infrastructure pour confirmer que vos conteneurs ECS apparaissent avec des métriques. Pour des conseils détaillés sur l'exploration de vos données, consultez Trouver et interroger vos données de monitoring ECS.
Différences de configuration par rapport à EC2
Principales différences lors de l'exécution sur Fargate :
- Aucun accès au niveau de l'hôte: impossible d'accéder aux métriques de l'hôte sous-jacent comme dans EC2
- Mode réseau: doit utiliser le mode réseau
awsvpc - Contraintes de ressources: limité par les combinaisons CPU/mémoire de Fargate
- Stockage: stockage éphémère uniquement, pas de volumes persistants
- Informations détaillées de conteneur: s'appuie sur le point de terminaison de métadonnées de tâche v4 pour les statistiques de conteneur
Prochaines étapes
Après avoir configuré le monitoring, vous pouvez :
- Créez des dashboards personnalisés pour vos métriques Fargate
- Configurer des alertes pour les problèmes au niveau des conteneurs et des tâches
- Corréler les métriques ECS avec les traces et les logs d'application