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-infra
ou 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
failures
détaille toutes les erreurs des services.Sous
services
se trouve l'attributstatus
. Il indiqueACTIVE
si le service ne présente aucun problème.Le
desiredCount
doit 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'attributpendingCount
doit être nul, car toutes les tâches doivent être en cours d'exécution.Inspectez l’attribut
events
deservices
pour 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
desiredStatus
etlastStatus
doivent êtreRUNNING
. Si la tâche n'a pas pu démarrer normalement, elle aura un statutSTOPPED
.Inspectez les
stopCode
etstoppedReason
. 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
ACTIVE
si 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-infra
par 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
,AmazonEC2ContainerServiceforEC2Role
et 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:GetSecretValue
si vous avez utilisé AWS Secrets Manager pour stocker votre , ou une entrée pourssm:GetParameters
si vous avez utilisé AWS système Manager Parameter Store :