Obtendo logs do aplicativo. Comando falhou em instância

5

Atualmente usando os serviços da web da Amazon, implantei com êxito vários aplicativos no Elastic Beanstalk (com integridade de cluster verde) como contêineres do Docker.

O problema, no entanto, surge quando tento obter os logs com o console; quando eu "solicito logs", nenhum log é encontrado. Quando eu, em seguida, retornar ao painel depois de ter solicitado os logs, um novo evento / erro apareceu:

[Instance: i-123456789] Command failed on instance. Return code: 1 Output: bundleLogs.py --conf-path '/opt/elasticbeanstalk/tasks/bundlelogs.d/*' --location-prefix 'resources/environments/logs/bundle/' Unable to execute method publish_contents_from_filename on any of the target objects. For more detail, check /var/log/eb-activity.log using console or EB CLI.

Tentando resolver o problema, eu fiz SSH no meu cluster e usei o seguinte comando para encontrar os logs em meu contêiner do Docker:

sudo docker exec myinstance cat /var/log/logstash_activity.log

Meus logs são encontrados como esperado.

Tentando aprender mais sobre o erro, dei uma olhada no /var/log/eb-activity.log e encontrei as seguintes linhas:

[2015-07-06T12:54:30.137Z] INFO  [26993] - [CMD-BundleLogs] : Starting activity...
[2015-07-06T12:54:30.363Z] INFO  [26993] - [CMD-BundleLogs/AddonsBefore] : Starting activity...
[2015-07-06T12:54:30.363Z] INFO  [26993] - [CMD-BundleLogs/AddonsBefore] : Completed activity.
[2015-07-06T12:54:30.363Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs] : Starting activity...
[2015-07-06T12:54:30.364Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs/BundleLogs] : Starting activity...
[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs/BundleLogs] : Activity execution failed, because: bundleLogs.py --conf-path '/opt/elasticbeanstalk/tasks/bundlelogs.d/*' --location-prefix 'resources/environments/logs/bundle/'
Unable to execute method publish_contents_from_filename on any of the target objects (Executor::NonZeroExitStatus)


[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs/BundleLogs] : Activity failed.
[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs/BundleLogs] : Activity failed.
[2015-07-06T12:54:30.627Z] INFO  [26993] - [CMD-BundleLogs] : Completed activity. Result:
Command CMD-BundleLogs failed.

A mensagem de erro não me ajudou muito, no entanto.

No campo "Logging" do meu Dockerrun.aws.json, dei o caminho "/ var / log", pois é a pasta que contém os logs do meu aplicativo, entre outros. Eu também tentei o valor "/var/log/logstash_activity.log" sem mais sucesso.

Por que o console do Beanstalk não consegue encontrar os registros dos meus aplicativos?

    
por Heschoon 06.07.2015 / 15:01

2 respostas

1

Pergunta antiga, mas eu percebi isso para nossos aplicativos. Qual política de usuário você está usando? Se você estiver usando o ReadOnly , a política padrão “ AWSElasticBeanstalkReadOnlyAccess ” não inclui o recurso de download de log. Na documentação do aws, há um exemplo de uma política do IAM que pode ser criada para um usuário habilitar essa funcionalidade.

Veja o link em “Como criar uma política de usuário personalizada " O exemplo final mostra as permissões S3 necessárias que precisam ser concedidas além daquelas já fornecidas na política ReadOnlyAccess para agrupar e baixar os logs.

    
por 23.09.2017 / 01:21
0

Infelizmente, a resposta existente não me ajudou muito. Era algo relacionado aos direitos do S3 ainda.

Eu tive que ajustar os direitos de instância para o seguinte e funcionou

{
    "Sid": "AllowS3ForEBLogs",
    "Action": [
        "s3:Get*",
        "s3:List*",
        "s3:PutObject"
    ],
    "Effect": "Allow",
    "Resource": [
        "arn:aws:s3:::elasticbeanstalk-*",
        "arn:aws:s3:::elasticbeanstalk-*/resources/environments/logs/*"
    ]

}

Minha inspiração foi esta .

    
por 05.12.2018 / 10:49