@SMaster1

Как правильно настроить ротацию логов Docker и pm2?

Есть проект в Docker, внутри команда запуска
NODE_ENV=production pm2-runtime start ./bin/www -i max

Проект запускается через композ:
docker-compose up -d
При этом логи пишутся в докер и остаются внутри контейнера.
Команда # find / -name "*.log" в контейнере выдает:
/usr/local/share/.cache/yarn/v6/npm-is-arrayish-0.3.2-integrity/node_modules/is-arrayish/yarn-error.log
/var/log/apt/term.log
/var/log/apt/history.log
/var/log/alternatives.log
/var/log/dpkg.log
/var/log/fontconfig.log
/app/yarn-error.log
/app/node_modules/is-arrayish/yarn-error.log
/app/log/error.log
/app/log/app.log


Файлы /app/log/error.log и /app/log/app.log содержат те же логи, что и Docker.
Как правильно настроить хранение и ротацию логов Docker и pm2 ?
  • Вопрос задан
  • 540 просмотров
Пригласить эксперта
Ответы на вопрос 3
@justmavi
Software Development Engineer at Softconstruct
@vitaly_il1
DevOps Consulting
В "настоящих" (production) системах принято не писать логи внутри контейнера. Вместо этого они пишутся в stdout, и посылаются куда-нибудь для хранения и анализа. "Куда-нибудь" - это Elastic (ELK по-старому) [например logz.io], AWS Cloudwatch Logs, и т.д.
"посылаются" - fluentbit и ему подобные.
Ответ написан
Комментировать
@SMaster1 Автор вопроса
Если использовать pm2-logrotate, то в докерфайл добавить строки, примерно такие.
RUN pm2 install pm2-logrotate
RUN pm2 set pm2-logrotate:retain 5
RUN pm2 set pm2-logrotate:max_size 10M
RUN pm2 set pm2-logrotate:workerInterval 60

Если есть более лучшие решения, то готов рассмотреть в качестве лучшей альтернативы.

Далее осталось понять как использовать мониторинг и ротирование логов Докера (разбираться с Elastic и т.п.).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы