Где я должен хранить файлы журналов приложения, работающего в контейнере (docker / kubernetes)? - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно перенести приложение (C / C ++) в Docker-контейнер.Приложение пишет в лог файлы в файловой системе.Как и где хранить файл журнала при запуске приложения в контейнере?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

У вас есть несколько вариантов:

  1. Запрашивает ли ваше приложение запись /dev/stdout и / или /dev/stderr.
  2. Запись в файл журнала в файловой системе.

Что сводится к тому, что такое «сбор журналов» и как вы хотите собирать эти данные.Регистрация в stdout и stderr может быть самой простой, но это не поможет вам, если вы хотите получить и проанализировать очень специфические данные журнала о вашем приложении.

Docker поддерживает несколько «драйверов журнала», которые помогут извлечь, преобразоватьи поднять данные журнала во внешний источник («ETL»).См .: https://docs.docker.com/config/containers/logging/configure/

Для всех моих приложений я использую FluentD и сборщик журналов докера, чтобы я мог делать «умные» вещи с данными (https://fluentd.org).

0 голосов
/ 12 декабря 2018

Я бы порекомендовал следующее для записи файла журнала приложения и просмотра stdout и stderr журналов при запуске команды

$docker logs <docker-name>

Это требует изменения в Dockerfile, и это то, что выможно увидеть в большинстве докеров, таких как nginx, httpd.

 # forward request and error logs to docker log collector
 RUN ln -sf /dev/stdout /var/log/<app-name>/access.log \
    && ln -sf /dev/stderr /var/log/<app-name>/error.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...