Как отправить журналы контейнера 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 . Однако две вещи заставляют меня думать иначе. Во-первых, в задаче сказано:

Используйте эту задачу для создания и отправки образов Docker в любой реестр контейнеров с помощью подключения к службе реестра 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 на указанную пару хост/порт.

Другие вопросы по тегам