Как отправить журналы контейнера Docker из службы приложений Azure на сервер журналов Seq?
На моем веб-сайте используется контейнер Docker, и я размещаю его в Azure с помощью службы приложений Azure. Я использую сервер журналов Seq для централизованного ведения журналов.
Как отправить журналы контейнера Docker из службы приложений Azure на сервер журналов Seq?
Я боюсь, что ответ может заключаться в том, что это невозможно. «Правильный» способ отправки журналов контейнера Docker на сервер журналов Seq включает добавление некоторых аргументов в команду , но я не могу найти способ предоставить такие аргументы в службе приложений Azure или соответствующей задаче Службы веб-приложений Azure для контейнера . который я использую для развертывания нового образа контейнера в этой службе.
Одна из причин, по которой я хочу, чтобы журналы Docker отправлялись в Seq, заключается в том, что мне кажется, что обработка журналов в Azure сбивает с толку. Этот вопрос содержит много ответов о том, как можно получить некоторые журналы Docker из Azure, но ни один из них не будет таким простым и полным, как поиск «docker» на сервере журналов Seq.
Возможно, служба приложений Azure не подходит для этой работы. Вместо этого, возможно, мне следует использовать экземпляр контейнера Azure (ACI). Интеграция с Docker кажется сильной. Однако этот ответ говорит
Веб-приложение Azure для контейнеров предназначено для долговременных задач (всегда работающих), а ACI — для запланированных\разрывных\кратковременных рабочих нагрузок (аналогично функциям Azure).
Мой веб-сайт всегда должен работать, поэтому я думаю, что правильно использую службу приложений Azure.
Возможно, мне следует выполнить развертывание в моей службе приложений Azure с помощью задачи Docker . Однако две вещи заставляют меня думать иначе. Во-первых, в задаче сказано:
[...]
Кроме того, моя служба приложений Azure включает множество аргументов при выполнении. Я не знаю, что они все делают, и не знаю, что мне нужно включить, чтобы все работало правильно.
Возможно, эти параметры, которые настраиваются с помощью аргументов, могут быть жестко закодированы с образом Docker при его создании. Однако я не нашел никаких предположений, что это возможно.
Один из аргументов в
docker run
что меня волнует
--log-driver
. Драйвер журнала по умолчанию для контейнера Docker можно установить с помощью
daemon.json
конфигурационный файл. Возможно, контейнер Docker, связанный с моей службой приложений Azure, можно настроить с помощью этого файла конфигурации. Однако я не нашел способа сделать это.
1 ответ
Настройте Seq для приема журналов в формате GELF (обратите внимание, что вы можете использовать приложение Seq.Input.Gelf , если не хотите запускать второй контейнер).
Затем настройте свой контейнер для использования ведения журнала GELF, используя что-то вроде:
docker run \
--rm \
-it \
--log-driver gelf \
--log-opt gelf-address=udp://seq.example.com:12201 \
hello-world:latest
(из документации Seq)
В этом примере
--log-driver gelf
инструктирует Docker выводить журналы с помощью драйвера ведения журналов GELF, в то время как
--log-opt gelf-address=udp://seq.example.com:12201
указывает Docker отправлять журналы через UDP на указанную пару хост/порт.