View a markdown version of this page

Résolution des problèmes liés aux journaux d'action Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés aux journaux d'action Amazon ECS

Les journaux d'action vous aident à diagnostiquer les problèmes en fournissant des enregistrements détaillés des opérations initiées par le service Amazon ECS. Chaque entrée de journal contient un horodatage, un niveau de journal, le nom de l'événement et une charge utile détaillée avec un contexte sur ce qui s'est passé et pourquoi. Cette rubrique couvre les scénarios de dépannage courants et fournit des requêtes CloudWatch Logs Insights prêtes à l'emploi.

Comprendre les niveaux de journalisation

Les journaux d'action utilisent trois niveaux de journalisation pour indiquer la gravité de chaque événement :

INFO

Opérations normales telles que le lancement d’un déploiement, le lancement d’une tâche ou l’allocation d’une ressource. Ces événements indiquent qu’Amazon ECS exécute les actions prévues.

WARN

Non-fatal problèmes susceptibles de nécessiter une attention particulière, tels que les tentatives de nouvelle tentative ou les contraintes de capacité. Amazon ECS continue de progresser, mais l’opération pourrait prendre plus de temps que prévu.

ERROR

Défaillances nécessitant une action, telles qu’un échec de déploiement, une erreur d’allocation ou un démarrage de tâche défaillant. Passez en revue ces événements pour en identifier la cause racine et prendre des mesures correctives.

Astuce

Commencez par filtrer ERROR ou WARN enregistrer les niveaux pour identifier rapidement les problèmes. Vous pouvez ensuite étendre votre recherche aux INFO événements pour plus de contexte.

Débogage d'un déploiement de service ayant échoué

Symptômes

Déploiement bloqué en cours ou automatiquement annulé.

Ce qu’il faut rechercher

Filtrez les ERROR journaux où ils sont eventName contenusDEPLOYMENT. Vérifiez la detail charge utile pour l'ARN de déploiement, la raison de l'état et le nombre de tâches ayant échoué.

L'exemple suivant montre un échec de déploiement où aucun candidat au rollback n'était disponible :

{ "resourceArn": "arn:aws:ecs:us-east-1:111122223333:cluster/my-cluster", "actionSourceId": "service/my-cluster/my-service", "logLevel": "ERROR", "eventTimestamp": 1784573730986, "detail": { "statusReason": "No rollback candidate was found to run the rollback.", "serviceDeploymentArn": "arn:aws:ecs:us-east-1:111122223333:service-deployment/my-cluster/my-service/abc123def456", "status": "FAILED", "eventName": "SERVICE_DEPLOYMENT_ROLLBACK_FAILED" } }
Résolution

Cochez le detail.statusReason champ pour identifier la raison pour laquelle les tâches ont échoué. Utilisez la requête CloudWatch Logs Insights suivante pour rechercher toutes les erreurs de déploiement :

fields @timestamp, detail.statusReason | filter logLevel = "ERROR" and detail.deploymentArn like /my-cluster\/my-service/ | sort @timestamp desc | limit 20

Diagnostic des problèmes liés aux démons gérés

Symptômes

Le démon ne démarre pas sur les instances ou le déploiement du démon est bloqué.

Ce qu’il faut rechercher

Filtrez les journaux en fonction de l'ARN du démon pour trouver les événements liés à votre démon. Vous pouvez également filtrer par logLevel pour limiter les résultats aux avertissements ou aux erreurs.

L'exemple suivant montre une tâche de démon qui n'a pas pu démarrer en raison d'une mémoire insuffisante sur l'instance cible :

{ "timestamp": 1719500050000, "logLevel": "WARN", "account": "123456789012", "region": "us-east-1", "resourceArn": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster", "actionSourceId": "arn:aws:ecs:us-east-1:123456789012:daemon/my-cluster/my-logging-daemon", "eventName": "DAEMON_TASK_START_IMPAIRED", "detail": { "statusReason": "RESOURCE:MEMORY - Unable to place daemon task on container instance: insufficient memory", "containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/my-cluster/a1b2c3d4" } }
Résolution

Vérifiez que les instances cibles disposent de suffisamment de ressources pour exécuter la tâche du démon. Si les instances sont épuisées, le démon risque de ne pas démarrer tant que de nouvelles instances ne seront pas disponibles. Utilisez la requête suivante pour filtrer les événements d'un démon spécifique :

fields @timestamp, logLevel, detail.statusReason | filter actionSourceId like /my-logging-daemon/ | filter logLevel in ["ERROR", "WARN"] | sort @timestamp desc | limit 20

Comprendre les raisons de l'arrêt des tâches du démon

Symptômes

Les tâches du démon s'arrêtent de façon inattendue.

Ce qu’il faut rechercher

Filtrez WARN et enregistrez les informations ERROR qui contiennent les informations relatives à l'échec des tâches du démon. Les champs suivants de la detail charge utile fournissent des informations sur la raison pour laquelle une tâche démon s'est arrêtée :

detail.stopCode

Code lisible par machine qui classe la raison de l'arrêt de la tâche.

detail.statusReason

Description lisible par l'homme de la raison pour laquelle la tâche s'est arrêtée. Ce champ n'est pas présent dans toutes les entrées du journal.

detail.containerStoppedReason

Informations contextuelles supplémentaires sur le conteneur spécifique à l'origine de l'arrêt de la tâche.

Pour obtenir la liste complète des codes d'arrêt des tâches et leurs descriptions, consultezMessages d’erreurs liées aux tâches Amazon ECS arrêtées.

Note

Les arrêts attendus des tâches du démon, par exempleUserInitiated, sont filtrés dans les journaux d'action. Seuls les arrêts de tâches inattendus ou liés à des erreurs apparaissent.

Requêtes CloudWatch Logs Insights utiles

Utilisez les requêtes CloudWatch Logs Insights suivantes pour étudier les problèmes courants liés à vos services Amazon ECS.

Toutes les erreurs survenues au cours de la dernière heure

fields @timestamp, logLevel, eventName, detail.statusReason | filter logLevel = "ERROR" | sort @timestamp desc | limit 50
Note

Le detail.statusReason champ n'est pas présent dans toutes les entrées du journal. Si le champ est vide dans vos résultats, utilisez les champs eventName et les autres champs de la detail charge utile pour le contexte.

Événements pour un service spécifique

fields @timestamp, logLevel, detail.statusReason | filter @message like /my-service/ | sort @timestamp desc | limit 50

Calendrier de déploiement pour un déploiement spécifique

fields @timestamp, logLevel, detail.statusReason | filter detail.deploymentArn like /my-cluster\/my-service\/abc123/ | sort @timestamp asc

Les échecs des tâches du démon sont regroupés par raison

filter logLevel = "ERROR" and detail.stopCode != "" | stats count(*) as failureCount by detail.stopCode, detail.statusReason | sort failureCount desc | limit 20