Problema
Você instalou nossa integração ECS on-host e esperou alguns minutos, mas seu cluster não está aparecendo na lista de entidades.
Importante
Temos duas integração ECS: uma integração baseada em nuvem e uma integração no host. Este documento é sobre a integração no host.
Solução
Se você já instalou o agente de infraestrutura ou uma infraestrutura de integração no host, seus dados deverão aparecer na interface em alguns minutos.
Se você não tiver feito nenhuma dessas coisas antes de instalar a integração do ECS no host, pode levar dezenas de minutos para que os dados apareçam na interface. Nesse caso, recomendamos esperar até uma hora antes de seguir as etapas de resolução de problemas a seguir ou entrar em contato com o suporte.
Existem várias opções para resolução de problemas sem dados aparecendo:
- Solucione problemas por meio da ferramenta awscli (recomendado ao falar com o suporte técnico da New Relic)
- Solucionar problemas através da interface
Para obter informações sobre tarefas interrompidas, consulte Motivos das tarefas interrompidas.
Solucionar problemas via awscli
Ao interagir com o suporte da New Relic, use este método e envie os arquivos gerados com sua solicitação de suporte:
Recupere as informações relacionadas ao serviço
newrelic-infra
ou ao serviço Fargate que contém uma tarefa com um arquivo secundárionewrelic-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.jsonO atributo
failures
detalha quaisquer erros dos serviços.Em
services
está o atributostatus
. DizACTIVE
se o serviço não apresentar problemas.O
desiredCount
deve corresponder aorunningCount
. Este é o número de tarefas que o serviço está realizando. Como usamos o tipo de serviço daemon, deve haver uma tarefa por instância de contêiner em seu cluster. O atributopendingCount
deve ser zero, pois todas as tarefas devem estar em execução.Inspecione o atributo
events
deservices
para verificar se há problemas no agendamento ou no início das tarefas. Por exemplo: se o serviço não conseguir iniciar as tarefas com sucesso, ele exibirá uma mensagem como:{"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."}Na mesma seção você também pode ver quais tarefas foram iniciadas pelo serviço a partir do evento:
{"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)."}Recupere as informações relacionadas à tarefa com este comando:
bash$aws ecs describe-tasks --tasks YOUR_TASK_ID --cluster YOUR_CLUSTER_NAME > newrelic-infra-task.jsonO
desiredStatus
elastStatus
devem serRUNNING
. Se a tarefa não puder ser iniciada normalmente, ela terá o statusSTOPPED
.Inspecione
stopCode
estoppedReason
. Um exemplo de motivo: uma tarefa que não pôde ser iniciada porque a função de execução da tarefa não tem as permissões apropriadas para baixar o segredo que contém a chave de licença teria a seguinte saída:"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",Se a tarefa estiver em execução, mas você ainda não estiver vendo dados, gere um log detalhado e examine-os em busca de erros.
Para obter detalhes sobre os motivos das tarefas interrompidas, consulte Tarefas interrompidas.
Solucionar problemas na interface
Para usar a interface para solucionar problemas:
Login em seu Console AWS e navegue até a seção Serviço de contêiner EC2.
Clique no cluster onde você instalou a integração do New Relic ECS.
Na guia
Services
, use o filtro para procurar o serviço de integração. Se você usou o script de instalação automática, o nome do serviço será
newrelic-infra
. Se você estiver usando Fargate, será o nome do seu serviço de monitor. Uma vez encontrado, clique no nome.A página de serviço mostra o
Status
do serviço. Diz
ACTIVE
se o serviço não apresentar problemas.Na mesma página, a contagem de
Desired
deve corresponder à contagem de
Running
. Este é o número de tarefas que o serviço está realizando. Como usamos o tipo de serviço daemon, deve haver uma tarefa por instância de contêiner em seu cluster. A contagem pendente deve ser zero, porque todas as tarefas devem estar em execução.
Inspecione a guia
Events
para verificar se há problemas no agendamento ou no início das tarefas.
Na aba
Tasks
do seu serviço, você pode inspecionar as tarefas em execução e as tarefas interrompidas clicando no seletor
Task status
. contêiner que falhou ao iniciar são mostrados quando você seleciona o status
Stopped
.
Clique em uma tarefa para acessar a página de detalhes da tarefa. Em
Stopped reason
, exibe uma mensagem explicando por que a tarefa foi interrompida.
Se a tarefa estiver em execução, mas você ainda não estiver vendo dados, gere um log detalhado e examine-os em busca de erros.
Para obter detalhes sobre os motivos das tarefas interrompidas, consulte Tarefas interrompidas.
Razões para tarefas interrompidas
Na documentação de resolução de problemas AWS ECS você pode encontrar informações sobre causas comuns de erros relacionados à execução de tarefas e serviços. Veja abaixo detalhes sobre alguns motivos para tarefas interrompidas.
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"
Isso significa que a função do IAM especificada usando executionRoleArn
na definição da tarefa não tem acesso ao segredo usado para NRIA_LICENSE_KEY
. A função de execução deve ter uma política anexada que lhe conceda acesso para ler o segredo.
Obtenha a função de execução da sua tarefa:
bash$aws ecs describe-task-definition --task-definition newrelic-infra --output text --query taskDefinition.executionRoleArnVocê pode substituir
--task-definition newrelic-infra
pelo nome da tarefa fargate que inclui o contêiner secundário.bash$aws ecs describe-task-definition --task-definition YOUR_FARGATE_TASK_NAME --output text --query taskDefinition.executionRoleArnListe as políticas anexadas à função:
bash$aws iam list-attached-role-policies --role-name YOUR_EXECUTION_ROLE_NAMEIsso deve retornar 3 políticas
AmazonECSTaskExecutionRolePolicy
,AmazonEC2ContainerServiceforEC2Role
e uma terceira que deve conceder acesso de leitura ao . No exemplo a seguir, a política é denominadaNewRelicLicenseKeySecretReadAccess
.{"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"}]}Recupere a versão da política padrão:
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)Isso recupera as permissões da política. Deve haver uma entrada para Action
secretsmanager:GetSecretValue
se você usou AWS Secrets Manager para armazenar seu , ou uma entrada parassm:GetParameters
se você usou o parâmetro Store AWS Systems Manager: