В настоящее время я использую веб-сервисы 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/*"
]
}
Мое вдохновение было этот.