Problème
Vous avez installé notre intégration ECS sur hôte et attendu quelques minutes, mais votre cluster n'apparaît pas dans la liste des entités.
Important
Nous avons deux intégrations ECS : une intégration basée sur le cloud et une intégration sur hôte. Ce document concerne l'intégration sur hôte.
Solution
Si vous avez déjà installé l'agent infrastructure ou une intégration infrastructure sur hôte, vos données devraient apparaître dans l'UI en quelques minutes.
Si vous n’avez effectué aucune de ces opérations avant d’installer l’intégration ECS sur l’hôte, il faudra peut-être des dizaines de minutes pour que les données apparaissent dans l’ UI. Dans ce cas, nous vous recommandons d'attendre jusqu'à une heure avant d'effectuer les étapes de dépannage suivantes ou de contacter le support.
Il existe plusieurs options pour le dépannage aucune donnée n'apparaissant :
- Dépannage via l'outil awscli (recommandé lors de la discussion avec le support technique de New Relic)
- Dépannage via l'UI
Pour plus d'informations sur les tâches arrêtées, voir Raisons des tâches arrêtées.
Dépannage via awscli
Lorsque vous interagissez avec le support New Relic, utilisez cette méthode et envoyez les fichiers générés avec votre demande d'assistance :
Récupérer les informations relatives au service
newrelic-infraou au service Fargate qui contient une tâche avec un sidecarnewrelic-infra:bash$aws ecs describe-services --cluster YOUR_CLUSTER_NAME --service newrelic-infra > newrelic-infra-service.jsonbash$aws ecs describe-services --cluster YOUR_CLUSTER_NAME --service YOUR_FARGATE_SERVICE_WITH_NEW_RELIC_SIDECAR > newrelic-infra-sidecar-service.jsonL'attribut
failuresdétaille toutes les erreurs des services.Sous
servicesse trouve l'attributstatus. Il indiqueACTIVEsi le service ne présente aucun problème.Le
desiredCountdoit correspondre aurunningCount. Il s’agit du nombre de tâches traitées par le service. Étant donné que nous utilisons le type de service daemon, il doit y avoir une tâche par instance de conteneur dans votre cluster. L'attributpendingCountdoit être nul, car toutes les tâches doivent être en cours d'exécution.Inspectez l’attribut
eventsdeservicespour vérifier les problèmes de planification ou de démarrage des tâches. Par exemple : si le service ne parvient pas à démarrer les tâches avec succès, il affichera un message du type :{"id": "5295a13c-34e6-41e1-96dd-8364c42cc7a9","createdAt": "2020-04-06T15:28:18.298000+02:00","message": "(service newrelic-ifnra) is unable to consistently start tasks successfully. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide."}Dans la même section, vous pouvez également voir quelles tâches ont été démarrées par le service à partir de l'événement :
{"id": "1c0a6ce2-de2e-49b2-b0ac-6458a804d0f0","createdAt": "2020-04-06T15:27:49.614000+02:00","message": "(service fargate-fail) has started 1 tasks: (task YOUR_TASK_ID)."}Récupérez les informations liées à la tâche avec cette commande :
bash$aws ecs describe-tasks --tasks YOUR_TASK_ID --cluster YOUR_CLUSTER_NAME > newrelic-infra-task.jsonLes
desiredStatusetlastStatusdoivent êtreRUNNING. Si la tâche n'a pas pu démarrer normalement, elle aura un statutSTOPPED.Inspectez les
stopCodeetstoppedReason. Un exemple de raison : une tâche qui n'a pas pu être démarrée parce que le rôle d'exécution de tâche ne dispose pas des autorisations appropriées pour télécharger le secret contenant la clé de licence aurait la sortie suivante :"stopCode": "TaskFailedToStart","stoppedAt": "2020-04-06T15:28:54.725000+02:00","stoppedReason": "Fetching secret data from AWS Secrets Manager in region YOUR_AWS_REGION: secret arn:aws:secretsmanager:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT:secret:NewRelicLicenseKeySecret-Dh2dLkgV8VyJ-80RAHS-fail: AccessDeniedException: User: arn:aws:sts::YOUR_AWS_ACCOUNT:assumed-role/NewRelicECSIntegration-Ne-NewRelicECSTaskExecution-1C0ODHVT4HDNT/8637b461f0f94d649e9247e2f14c3803 is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT:secret:NewRelicLicenseKeySecret-Dh2dLkgV8VyJ-80RAHS-fail-DmLHfs status code: 400, request id: 9cf1881e-14d7-4257-b4a8-be9b56e09e3c","stoppingAt": "2020-04-06T15:28:10.953000+02:00",Si la tâche est en cours d'exécution mais que vous ne voyez toujours pas de données, générez un log détaillé et examinez-le pour détecter les erreurs.
Pour plus de détails sur les raisons des tâches arrêtées, voir Tâches arrêtées.
Dépannage dans l'UI
Pour utiliser l'UI pour résoudre les problèmes :
- Connectez-vous à votre AWS Console et accédez à la section Service du conteneur EC2.
- Cliquez sur le cluster où vous avez installé l’intégration New Relic ECS.
- Dans l’onglet Services , utilisez le filtre pour rechercher le service d’intégration. Si vous avez utilisé le script d'installation automatique, le nom du service sera
newrelic-infra. Si vous utilisez Fargate, ce sera le nom de votre service de monitoring. Une fois trouvé, cliquez sur le nom. - La page de service affiche le Status du service. Il indique
ACTIVEsi le service ne présente aucun problème. - Sur la même page, le nombre Desired doit correspondre au nombre Running . Il s’agit du nombre de tâches traitées par le service. Étant donné que nous utilisons le type de service daemon, il doit y avoir une tâche par instance de conteneur dans votre cluster. Le nombre en attente doit être nul, car toutes les tâches doivent être en cours d'exécution.
- Inspectez l’onglet Events pour vérifier les problèmes de planification ou de démarrage des tâches.
- Dans l'onglet Tasks de votre service, vous pouvez inspecter les tâches en cours d'exécution et les tâches arrêtées en cliquant sur le sélecteur Task status . les conteneurs qui n'ont pas pu démarrer sont affichés lorsque vous sélectionnez le statut Stopped .
- Cliquez sur une tâche pour accéder à la page des détails de la tâche. Sous Stopped reason, un message expliquant pourquoi la tâche a été arrêtée s'affiche.
- Si la tâche est en cours d'exécution mais que vous ne voyez toujours pas de données, générez un log détaillé et examinez-le pour détecter les erreurs.
Pour plus de détails sur les raisons des tâches arrêtées, voir Tâches arrêtées.
Raisons des tâches arrêtées
Dans la documentation de dépannage d'AWS ECS, vous trouverez des informations sur les causes courantes d'erreurs liées à l'exécution de tâches et de services. Voir ci-dessous pour plus de détails sur certaines raisons pour lesquelles les tâches sont arrêtées.
Task stopped with reason:
Fetching secret data from AWS Secrets Manager in region YOUR_AWS_REGION: secret arn:aws:secretsmanager:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT:secret:YOUR_SECRET_NAME: AccessDeniedException: User: arn:aws:sts::YOUR_AWS_ACCOUNT:assumed-role/YOUR_ROLE_NAME is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT:secret:YOUR_SECRET_NAME status code: 400, request id: 9cf1881e-14d7-4257-b4a8-be9b56e09e3c"Cela signifie que le rôle IAM spécifié à l'aide de executionRoleArn dans la définition de tâche n'a pas accès au secret utilisé pour NRIA_LICENSE_KEY. Le rôle d’exécution doit avoir une politique associée qui lui accorde l’accès à la lecture du secret.
Obtenez le rôle d'exécution de votre tâche :
bash$aws ecs describe-task-definition --task-definition newrelic-infra --output text --query taskDefinition.executionRoleArnVous pouvez remplacer le
--task-definition newrelic-infrapar le nom de votre tâche fargate qui inclut le conteneur sidecar.bash$aws ecs describe-task-definition --task-definition YOUR_FARGATE_TASK_NAME --output text --query taskDefinition.executionRoleArnÉnumérez les politiques attachées au rôle :
bash$aws iam list-attached-role-policies --role-name YOUR_EXECUTION_ROLE_NAMECela devrait renvoyer 3 politiques
AmazonECSTaskExecutionRolePolicy,AmazonEC2ContainerServiceforEC2Roleet une troisième qui devrait accorder un accès en lecture à . Dans l'exemple suivant, la politique est nomméeNewRelicLicenseKeySecretReadAccess.{"AttachedPolicies": [{"PolicyName": "AmazonECSTaskExecutionRolePolicy","PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"},{"PolicyName": "AmazonEC2ContainerServiceforEC2Role","PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role"},{"PolicyName": "YOUR_POLICY_NAME","PolicyArn": "arn:aws:iam::YOUR_AWS_ACCOUNT:policy/YOUR_POLICY_NAME"}]}Récupérer la version de la politique par défaut :
bash$aws iam get-policy-version --policy-arn arn:aws:iam::YOUR_AWS_ACCOUNT:policy/YOUR_POLICY_NAME --version-id $(aws iam get-policy --policy-arn arn:aws:iam::YOUR_AWS_ACCOUNT:policy/YOUR_POLICY_NAME --output text --query Policy.DefaultVersionId)Cela récupère les autorisations de politique. Il devrait y avoir une entrée pour l'action
secretsmanager:GetSecretValuesi vous avez utilisé AWS Secrets Manager pour stocker votre , ou une entrée pourssm:GetParameterssi vous avez utilisé AWS système Manager Parameter Store :