. Net приложение под docker: значительная задержка записи журналов в файл, доступный для системы хостинга - PullRequest
1 голос
/ 09 мая 2020

У нас есть. net приложение, которое записывает логи с помощью Nlog logger в источник файла, логи записываются постоянно, каждую секунду. Если вы запустите его на Windows, без докеров, все работает нормально: записи журнала появляются в файле сразу, но при развертывании в нашем кластере из Linux докеров требуется от нескольких минут до часов, чтобы поместить sh данные в файл, который используется совместно с нашей хост-системой. Я вижу данные в базе данных, свидетельствующие об успешном запуске приложения, но файл журнала какое-то время не изменяется. Имея очень небольшой опыт работы с докерами, не знаю, чем это может быть вызвано и даже где искать. Я нашел файл yaml, который выглядит следующим образом:

mount -v -t cifs //10.153.1.61/apps/configs/stage/testApp/logs /logs/ -o credentials=/smb/smbcredentials;

Поскольку он отлично работает без docker, я считаю, что что-то не так в том, как мы создаем образы и развертываем докеры. Мы очень ценим любые идеи о том, куда направить расследование.

1 Ответ

2 голосов
/ 09 мая 2020

Я думаю, вы видите медлительность, потому что вы пытаетесь писать журналы через общий сетевой ресурс CIFS, а это накладные расходы. Вам следует рассмотреть возможность использования одного из широко доступных решений для обработки распределенных журналов, например серый журнал , ELK или Splunk (https://www.splunk.com/)

Похоже, у NLog есть множество интеграций на выбор. Доступны очень подробные пошаговые обучающие программы , в которых подробно объясняется процесс.

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

...