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