Рубрики
Uncategorized

10 лучших журналов Docker Gotchas

Docker изменил не только то, как развернуты приложения, он также изменил рабочий процесс для Magic Managem … Tagged с помощью журнала, Docker, DevOps.

Docker изменил не только то, как развернуты приложения, он также изменил рабочий процесс для управления журналами. Вместо записи журналов в файлы, контейнеры записывают журналы в консоли (stdout/stderr) и Docker Logging Drivers Пыряемые журналы до места назначения. Проверка на Docker GitHub выпуски Быстро показывает, что у пользователей есть различные проблемы при работе с журналами Docker. Управление журналами с Docker кажется сложным и требует более глубоких знаний о реализации драйверов и альтернативных водителей Docker для преодоления вопросов, о которых люди сообщают.

Выполнить команды в контейнерах, сетях Docker, очистке данных и многое другое…

Docker Commands Chief Speat Download

Итак, что такое 10 лучших журналов Docker Goschas, каждый пользователь Docker должен знать?

Во -первых, давайте начнем с обзора драйверов ведения журнала Docker и опций для отправки журналов в централизованные решения для управления журналами, такие как Elastic Stack (бывший стек Elk) или Sematext Cloud Анкет

В первые дни Docker журналы контейнеров были доступны только через Docker Remote API, то есть через команду «Docker Logs» и несколько расширенных грузовиков. Позже Docker представила драйверы журнала в качестве плагинов, чтобы открыть Docker для интеграции с различными инструментами управления журналами. Эти драйверы для ведения журнала реализованы как двоичные плагины в Docker Daemon. Недавно архитектура плагина была расширена для запуска драйверов ведения журнала в качестве внешних процессов, которые могут зарегистрироваться в качестве плагинов и извлекать журналы через Unix Socket. В настоящее время драйверы, поставляемые с бинарами Docker, представляют собой бинарные плагины, но это может измениться в ближайшем будущем.

Драйверы журнала Docker получают журналы контейнеров и пересылают их в удаленные пункты назначения или файлы. Драйвер ведения журнала по умолчанию-«json-file». Он хранит журналы контейнеров в формате JSON на локальном диске. Docker имеет архитектуру плагинов для ведения журналов, поэтому есть плагины для инструментов с открытым исходным кодом и коммерческих инструментов:

  • Journald — хранение журналов контейнеров в системном журнале
  • Driver Syslog — поддержка UDP, TCP, TLS
  • Fluentd — поддержка соединений TCP или Unix с помощью Fluentd
  • Splunk — HTTP/HTTPS пересылка на сервер Splunk
  • Gelf — udp -журнал пересылка в graylog2

Для получения полного решения для управления журналом должны быть включены дополнительные инструменты:

  • СПАСПОЛАВ к LOG для структурных журналов, как правило, является частью грузовиков (Fluentd, Rsyslog, Logstash, Logagent,…)
  • Индексация, визуализация и предупреждение журнала:
    • Elasticsearch и Kibana (Elastic Stack, также известный как стек лося)
    • Разбрызгиваться
    • Логонгри
    • Журнал
    • Сумологический
    • Грейлог Осс/Энтерпрайз
    • Sematext Cloud/Enterprise
    • И еще много …

Чтобы отправить журналы в один из бэкендов, вам может потребоваться выбрать драйвер журнала или инструмент для ведения журнала, который поддерживает решение для управления журналами. Если ваш инструмент нуждается в вводе системного журнала, вы можете выбрать драйвер системного журнала.

Давайте посмотрим на топ -10 журналов Docker, которые узнают каждый пользователь Docker.

1. Команда журналов Docker работает только с драйвером журнала JSON-File

Драйвер ведения журнала по умолчанию «JSON-FILE» записывает журналы на локальный диск, а драйвер файла JSON-единственная, которая работает параллельно с командой «Docker Logs». Как только кто -то использует альтернативные драйверы журнала, такие как Syslog, Gelf или Splunk, Docker Logs API -вызовы запускают сбой, и команда «Docker Logs» показывает ошибку, сообщающую об ограничениях вместо отображения журналов на консоли. Команда журнала Docker не только снимается, но и многие другие инструменты, использующие API Docker для журналов, такие как пользовательские интерфейсы Docker, такие как контейнеры для сбора портана или журнала, такие как Logspout, не могут отображать журналы контейнеров в этой ситуации.

Смотрите https://github.com/moby/moby/issues/30887

2. Docker Syslog Driver может блокировать развертывание контейнеров

Использование драйвера системного журнала Docker с TCP или TLS является надежным способом доставки журналов. Тем не менее, драйвер регистрации системного журнала требует установленного TCP -соединения с сервером системного журнала при запуске контейнера. Если это соединение не может быть установлено во время запуска контейнера, запуск контейнера не удается с таким сообщением об ошибке, как

Docker: Ответ об ошибке от Daemon: не удалось инициализировать драйвер ведения журнала: Dial TCP

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

Смотрите: https://github.com/docker/docker/issues/21966

3. Docker Syslog Driver теряет журналы, когда пункт назначения вниз

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

Интересная проблема для просмотра: https://github.com/moby/moby/issues/30979

4. Драйверы ведения журнала Docker не поддерживают многострочные журналы, такие как стек ошибок следы

Когда мы думаем о журналах, большинство людей думают о простых однострочных журналах, скажем, как журналы Nginx или Apache. Однако журналы также могут охватывать несколько строк. Например, трассировки исключений обычно охватывают несколько строк, поэтому, чтобы помочь пользователям logstash, которых мы поделились, как Обработка трассировки стека с помощью logstash Анкет В мире контейнеров все не лучше, где вещи становятся еще сложнее, потому что журналы из всех приложений, работающих в контейнерах, излучаются до одного и того же результата — stdout. Неудивительно, что увижу Выпуск № 22920 закрыт с «закрытым. Не волнует «. разочарован так много людей. К счастью, есть такие инструменты, как Sematext Docker Agent Это может анализировать многострочные журналы из коробки, а также применять пользовательские многострочные шаблоны.

5. Команда журналов службы Docker Vishs с драйвером для ведения журнала JSON

В то время как драйвер Files Files кажется надежным, другие драйверы журналов, к сожалению, все еще могут вызвать проблемы с режимом Docker Swarm.

См. Выпуск GitHub: https://github.com/docker/docker/issues/28793

6. Docker Daemon сбой, если Daemon Fluentd исчез, и буфер полон

Другой сценарий, в котором драйвер журнала вызывает проблемы, когда удаленное место назначения не доступно — в этом конкретный случай Драйверы журнала бросают исключения, которые заставляют Docker Daemon сбой.

7. Контейнер Docker застрял в созданном состоянии на сбое драйвера Splunk

Если сервер Splunk возвращает 504 запуска в контейнере, контейнер фактически запускается, но Docker сообщает о контейнере как не удалось запустить. Оказавшись в этом состоянии, контейнер больше не появляется под Docker PS, и процесс контейнера не может быть остановлен с помощью Docker Kill. Единственный способ остановить процесс — это убить его вручную.

GitHub: https://github.com/moby/moby/issues/24376

8. Журналы Docker пропуски/пропущенные журналы приложений (драйвер журнала)

Оказывается, что эта проблема вызвана ограничениями ставки журнала, которые необходимо увеличить, поскольку Docker создает журналы для всех запущенных приложений, и Journald может пропустить некоторые журналы из -за настройки ограничения. Так что имейте в виду настройки Journald, когда вы подключаете Docker к нему.

9. Gelf Driver Applions

В драйвере журнала GELF отсутствует опция TCP или TLS и поддерживает только UDP, который может быть рискованным, чтобы потерять сообщения журнала, когда пакеты UDP будут отброшены. В некоторых проблемах сообщается о проблеме разрешения/кэширования DNS с драйверами GELF, поэтому ваши журналы могут быть отправлены в «Nirvana», когда ваш IP -адрес сервера Graylog меняется — и это может произойти быстро, используя развертывание контейнеров.

10. Docker не поддерживает несколько драйверов журнала

Было бы неплохо, чтобы журналы хранились локально на сервере, и возможность отправить их на удаленные серверы. В настоящее время Docker не поддерживает несколько драйверов журнала, поэтому пользователи вынуждены выбрать один драйвер журнала. Не простое решение, зная различные вопросы, перечисленные в этом посте.

Вот и все! Мой лучшие 10 Docker Logging Gotchas!

Что дальше?

Вы должны подумать о Не только собирать журналы, но и метрики хоста и контейнера, а также события Анкет

Пост Топ 10 Docker Logging GotChas появился первым на Sematext Анкет

Вы начали использовать Kubernetes?

Мы подготовили Шпаргалка Kubernetes который ставит все ключевые команды Kubernetes (Think kubectl) под рукой. Организованные в логических группах из управления ресурсами (например, создание или перечисление стручков, услуг, демонов), просмотра и поиска ресурсов, для мониторинга и ведения журнала. Скачать свой Анкет

Оригинал: «https://dev.to/sematext/top-10-docker-logging-gotchas-1mlk»