Назад | Перейти на главную страницу

Получение логов приложений. Команда не удалась на экземпляре

В настоящее время я использую веб-сервисы Amazon и успешно развернул несколько приложений на Elastic Beanstalk (с зеленым состоянием кластера) в качестве контейнеров Docker.

Однако проблема возникает, когда я пытаюсь получить журналы с помощью консоли; когда я делаю «запросы журналов», журналы не обнаруживаются. Когда я затем возвращаюсь на панель управления после запроса журналов, появляется новое событие / ошибка:

[Экземпляр: i-123456789] Команда не удалась на экземпляре. Код возврата: 1 Вывод: bundleLogs.py --conf-path '/opt/elasticbeanstalk/tasks/bundlelogs.d/*' --location-prefix 'resources / environments / logs / bundle /' Невозможно выполнить метод publish_contents_from_filename на любом целевых объектов. Для получения дополнительной информации проверьте /var/log/eb-activity.log с помощью консоли или EB CLI.

Пытаясь решить проблему, я подключился к своему кластеру по SSH и использовал следующую команду, чтобы найти журналы в моем контейнере Docker:

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

Мои журналы найдены должным образом.

Пытаясь узнать больше об ошибке, я заглянул в /var/log/eb-activity.log и нашел следующие строки:

[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.

Однако сообщение об ошибке мне не очень помогло.

В поле «Ведение журнала» моего файла Dockerrun.aws.json я указал путь «/ var / log», поскольку это папка, в которой, помимо прочего, находятся журналы моих приложений. Я также безуспешно пробовал значение "/var/log/logstash_activity.log".

Почему консоль Beanstalk не может найти журналы моих приложений?

Старый вопрос, но я только что понял это для наших приложений. Какую пользовательскую политику вы используете? Если вы используете Только для чтения, Политика по умолчанию «AWSElasticBeanstalkReadOnlyAccess»Не включает возможность загрузки журнала. В документации по aws приведен пример политики IAM, которая может быть создана для пользователя, чтобы включить эту функцию.

Видеть http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.managed-policies.html в разделе «Создание настраиваемой политики пользователя». В последнем примере показаны необходимые разрешения S3, которые необходимо предоставить поверх того, что уже предоставлено в политике ReadOnlyAccess, чтобы объединить и загрузить журналы.

К сожалению, существующий ответ мне не очень помог. Это было еще что-то, связанное с правами на S3.

Мне пришлось настроить права экземпляра на следующее, и это сработало

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

}

Мое вдохновение было этот.