Problema
Quando a resolução de problemas é a integração do ECS no host, você pode gerar um log detalhado por alguns minutos para localizar e investigar erros. Isto pode ser útil para conduzir sua própria resolução de problemas ou ao fornecer informações ao suporte New Relic .
O registro detalhado gera muitos dados muito rapidamente. Ao terminar de gerar o log, defina verbose: 0
para reduzir o consumo de espaço em disco.
Você pode automatizar esse processo usando o comando newrelic-infra-ctl
. Para obter mais informações, consulte Resolução de problemas com um agente em execução.
Solução
A geração de arquivo de log detalhado requer a edição do arquivo de definição de tarefa. Para obter um arquivo de configuração de amostra que inclui todas as configurações aplicáveis, consulte Configurações de infraestrutura.
Você tem várias opções para implementar o log detalhado:
- Altere a variável de ambiente de definição de tarefa e reinicie a tarefa
- Para tipo de lançamento EC2: recuperar log via SSH
- Encaminhe para o CloudWatch e baixe com awscli
- Execute um comando do contêiner em execução
Usando variável de ambiente de definição de tarefa
Para ativar o log detalhado alterando a variável de ambiente e reiniciando a tarefa:
Edite sua definição de tarefa. Altere o valor de
NRIA_VERBOSE
de0
para:1
para log detalhado sempre ativo2
para registro inteligente3
para enviar para New Relic
Leia mais sobre essas opções.
Salve sua definição de tarefa.
Atualize seu serviço para usar a definição de tarefa recém-registrada.
Se você escolheu
NRIA_VERBOSE=3
e não está enviando o registro diretamente para New Relic, você terá duas opções para visualizar e fazer download do registro:- Para o tipo de lançamento EC2: você pode recuperar o log via SSH ou
- Encaminhar log para CloudWatch
Retorne suas configurações ao padrão:
- Desative o registro detalhado editando sua definição de tarefa e definindo
NRIA_VERBOSE
como0
. - Salve sua definição de tarefa.
- Atualize seu serviço para a versão mais recente da sua tarefa.
- Desative o registro detalhado editando sua definição de tarefa e definindo
Examine o arquivo de log em busca de erros.
Se você precisar enviar seu arquivo de log para o suporte da New Relic:
Inclua a linha no seu arquivo de log que contém a versão de integração do ECS:
New Relic ECS integration version X.YY.ZZZAnexe o arquivo de log ao seu ticket de suporte, junto com sua definição de tarefa .yml arquivo.
Recuperar log via SSH (apenas tipo de lançamento EC2)
Para obter log via SSH:
Edite sua definição de tarefa. Altere o valor de
NRIA_VERBOSE
de0
para:1
para log detalhado sempre ativo2
para registro inteligente3
para enviar para New Relic
Leia mais sobre essas opções.
SSH em uma de suas instâncias.
Encontre o ID do contêiner do contêiner de integração New Relic, executando o comando
docker ps -a
. O nome do contêiner deve sernri-ecs
.Salve o log do contêiner com o comando
docker logs NRI_ECS_CONTAINER_ID > logs.txt
. Deixe o comando em execução por cerca de três minutos para gerar dados de log suficientes.Continue com as instruções na seção ativar log detalhado .
Encaminhe o log para o CloudWatch e baixe-os com awscli
Para obter log via CloudWatch:
Edite sua definição de tarefa. Altere o valor de
NRIA_VERBOSE
de0
para:1
para log detalhado sempre ativo2
para registro inteligente3
para enviar para New Relic
Leia mais sobre essas opções.
Usamos um grupo log do CloudWatch chamado
/newrelic-infra/ecs
para encaminhar o log. Para ver se já existe, execute:bash$aws logs describe-log-groups --log-group-name-prefix /newrelic-infra/ecsSe existir um grupo log com esse prefixo, você obterá esta saída:
{"logGroups": [{"logGroupName": "/newrelic-infra/ecs","creationTime": 1585828615225,"metricFilterCount": 0,"arn": "arn:aws:logs:YOUR_REGION:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:*","storedBytes": 122539356}]}Como esse comando corresponde a grupos log com prefixos, certifique-se de que o nome do grupo de log retornado seja exatamente
/newrelic-infra/ecs
. Se o grupo log não existir, a saída será:{"logGroups": []}Se o grupo log não existir, crie-o executando:
bash$aws logs create-log-group --log-group-name /newrelic-infra/ecsEdite sua definição de tarefa. Na definição do contêiner para o contêiner
newrelic-infra
, adicione o seguintelogConfiguration
:"logConfiguration": {"logDriver": "awslogs","options": {"awslogs-group": "/newrelic-infra/ecs","awslogs-region": "AWS_REGION_OF_YOUR_CLUSTER","awslogs-stream-prefix": "verbose"}}Registre a nova versão da tarefa e atualize seu serviço.
Em seguida, você procurará o fluxo log relevante. Se você tiver várias instâncias da tarefa em execução, todas elas enviarão seus logs para o mesmo grupo log, mas cada uma terá seu próprio fluxo log . Os nomes dos fluxos de log seguem a estrutura
AWSLOGS_STREAM_PREFIX/TASK_FAMILY_NAME/TASK_ID
. Neste caso, seráverbose/newrelic-infra/TASK_ID
.Para obter todos os fluxos log de um determinado grupo log, execute este comando:
bash$aws logs describe-log-streams --log-group-name /newrelic-infra/ecsVeja a seguir um exemplo de saída de um grupo log com dois fluxos:
{"logStreams": [{"logStreamName": "verbose/newrelic-infra/9dfb28114e40415ebc399ec1e53a21b7","creationTime": 1586166741197,"firstEventTimestamp": 1586166742030,"lastEventTimestamp": 1586173933472,"lastIngestionTime": 1586175101220,"uploadSequenceToken": "49599989655680038369205623273330095416487086853777112338","arn": "arn:aws:logs:AWS_REGION_OF_YOUR_CLUSTER:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:log-stream:verbose/newrelic-infra/9dfb28114e40415ebc399ec1e53a21b7","storedBytes": 0},{"logStreamName": "verbose/newrelic-infra/f6ce0be416804bc4bfa658da5514eb00","creationTime": 1586166745643,"firstEventTimestamp": 1586166746491,"lastEventTimestamp": 1586173037927,"lastIngestionTime": 1586175100660,"uploadSequenceToken": "49605664273821671319096446647846424799651902350804230514","arn": "arn:aws:logs:AWS_REGION_OF_YOUR_CLUSTER:YOUR_AWS_ACCOUNT:log-group:/newrelic-infra/ecs:log-stream:verbose/newrelic-infra/f6ce0be416804bc4bfa658da5514eb00","storedBytes": 0}]}Na lista anterior de fluxos log, identifique aquele com o ID da tarefa cujo log você deseja recuperar e use logStreamName neste comando:
bash$aws logs get-log-events --log-group-name /newrelic-infra/ecs --log-stream-name "LOG_STREAM_NAME" --output text > logs.txtContinue com as instruções para ativar o log detalhado .
Do contêiner em execução
Para ativar o log detalhado executando um comando no contêiner em execução:
SSH em uma de suas instâncias.
Encontre o ID do contêiner do contêiner de integração New Relic executando o comando
docker ps -a
. O nome do contêiner deve sernri-ecs
.Ative o registro detalhado por um período limitado usando
newrelic-infra-ctl
. Execute o comando:bash$docker exec INTEGRATION_CONTAINER_ID /usr/bin/newrelic-infra-ctlPara obter mais detalhes, consulte Solucionar problemas do agente.
Salve o log do contêiner com o comando
bash$docker logs INTEGRATION_CONTAINER_ID > logs.txtDeixe o comando em execução por cerca de três minutos para gerar dados de log suficientes.
Examine o arquivo de log em busca de erros.
Se você precisar enviar seu arquivo de log para o suporte da New Relic:
Inclua a linha no seu arquivo de log que contém a versão de integração do ECS:
New Relic ECS integration version X.YY.ZZZAnexe o arquivo de log ao seu ticket de suporte, junto com sua definição de tarefa .yml arquivo.