Как я могу заставить ротацию журналов работать внутри контейнера / контейнера kubernetes? - PullRequest
0 голосов
/ 18 апреля 2019

Наша установка:

Мы используем kubernetes в GCP.У нас есть модули, которые записывают журналы на общий том, с контейнером коляски, который всасывает наши журналы для нашей системы журналирования.Вместо этого мы не можем просто использовать stdout для этого процесса.

Некоторые из этих модулей долгоживущие и заполняют дисковое пространство из-за отсутствия ротации журналов.

Вопрос: Какой самый простой способ предотвратитьместа на диске от заполнения здесь (без планирования перезапуска модуля)?

Я пытался установить logrotate, используя: RUN apt-get install -y logrotate в нашем Dockerfile и помещая файл конфигурации logrotate в /etc/logrotate.d/dynamicproxy, но, похоже, это не такбеги./var/lib/logrotate/status никогда не генерируется.

Мне кажется, что я лаю не на том дереве или пропускаю что-то неотъемлемое для того, чтобы это работало.Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

Как правило, вы должны записывать журналы в стандартный вывод и настраивать инструмент сбора журналов, такой как стек ELK. Это лучшая практика.

Однако, если вы хотите запустить logrotate как отдельный процесс в вашем контейнере - вы можете использовать Supervisor, который служит очень простой системой инициализации и позволяет вам запускать столько параллельных процессов в контейнере, сколько вы хотите.

Простой пример использования Supervisor для ротации журналов Nginx можно найти здесь: https://github.com/misho-kr/docker-appliances/tree/master/nginx-nodejs

0 голосов
/ 18 апреля 2019

Если вы пишете в файловую систему, приложение, создающее журналы, должно отвечать за ротацию.Если вы используете приложение Java с logback или log4j, это просто изменение конфигурации.Для других языков / каркасов это обычно аналогично.

Если это не вариант, вы можете использовать специализированный инструмент для управления вращением и передачи выходных данных в него.Одним из примеров будет http://cr.yp.to/daemontools/multilog.html

В качестве метода последней инстанции вы можете исследовать вход в именованный канал (FIFO) вместо реального файла и иметь какой-то другой процесс, обрабатывающий поиск и запись данных, включаявращение.

...