AWS Elastic Beanstalk S3 архивирование журнала и завершение / восстановление экземпляра
Я недавно переместил приложение в Elastic Beanstalk. В настоящее время я нахожусь в процессе настройки файлов журнала для архивирования. Одним из бизнес-требований является x дней хранения журнала, что, конечно, очень разумно. Поскольку файлы журналов хранятся в экземпляре, а данные экземпляра не сохраняются при завершении / повторном создании экземпляра, журналы необходимо хранить в другом месте.
Elastic Beanstalk предлагает опцию "S3 log storage", которая, кажется, загружает повернутые файлы журнала в S3, что удовлетворяет большинство моих потребностей. Единственное исключение будет, когда экземпляр будет завершен / воссоздан: как я могу легко убедиться, что перед завершением еще не повернутые файлы журнала загружаются на S3?
1 ответ
Резервное копирование журналовElastic Beanstalk на S3 время от времени выполняется как пакетная загрузка logrotate
это означает, что, как вы правильно заметили, последние журналы могут отсутствовать в S3, когда экземпляр завершается.
Вы можете создать сценарий завершения работы (например, здесь), который будет загружать все файлы журнала на S3, когда экземпляр корректно завершается. Возможно, он не будет выполнен, если экземпляр аварийно завершится или выйдет из строя, но это довольно редкое событие.
Однако Elastic Beanstalk поддерживает потоковую передачу журналов CloudWatch, которая передает журналы в журналы CloudWatch в режиме реального времени, как только они генерируются. Это означает, что даже в случае выключения вы будете иметь последние журналы в CloudWatch Logs вплоть до того момента, когда awslogs
агент уволен.
Посмотрите здесь, как его настроить.
Кроме того, поиск в журналах CloudWatch проще, чем в журналах S3, вы можете наблюдать за определенным ключевым словом (например, "Ошибка") и действиями над ним (например, отправлять электронную почту или запускать функцию Lambda) и т.д.
Возможно, в приложении Elastic Beanstalk можно включить журналы S3 и CloudWatch одновременно.
Надеюсь, это поможет:)