Рубрики
Uncategorized

Где хранятся журналы Docker?

Есть короткий ответ и длинный ответ. Краткий ответ, который удовлетворит ваши потребности в огромных … Tagged with Docker, DevOps, журналы, ShowDev.

Есть короткий ответ и длинный ответ. Краткий ответ, который удовлетворит ваши потребности в подавляющем большинстве случаев, таково:

/var/lib/docker/containers//-json.log

Отсюда вам нужно Корабль журналы к Центральное расположение и Включите вращение журнала Для ваших контейнеров Docker. Позвольте мне уточнить Почему с длинным ответом ниже.

Где журналы контейнеров Docker хранятся по умолчанию?

Вы видите, по умолчанию контейнеры Docker излучают журналы в stdout и Stderr Выходные потоки. Контейнеры без сохранения состояния и Журналы хранятся на хосте Docker в файлах JSON по умолчанию .

Почему?

Драйвер ведения журнала по умолчанию json-file Анкет Что такое драйвер журнала?

Драйвер журнала — это механизм получения информации из ваших беговых контейнеров. Вот более сложное объяснение из Docker Docs Анкет Есть несколько различных драйверов журнала, которые вы можете использовать, за исключением по умолчанию JSON-файла, например, Syslog, Journald , fluentd, или logagent Анкет

Эти журналы испускаются из выходных потоков, аннотируются с источником журнала, либо stdout или Stderr и метка времени. Каждый файл журнала содержит информацию только об одном контейнере и находится в формате JSON. Помните, Один файл журнала на контейнер Анкет

Вы находите эти файлы журнала JSON в /var/lib/docker/containers/ каталог на хосте Linux Docker. Вот идентификатор работающего контейнера.

/var/lib/docker/containers//-json.log

Если вы не уверены, какой идентификатор связан с каким контейнером, вы можете запустить Docker PS Команда, чтобы перечислить все запущенные контейнеры. Идентификатор контейнера находится в первом столбце.

docker ps

[Output]
CONTAINERID  IMAGE     COMMAND       CREATED    STATUS    PORTS    NAMES
cf74b6fce535 foo_image "node app.js" X min ago  Up X min  3000/tcp foo_app

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

Вот где регистрация вступает в игру. Вы собираете журналы с помощью журнала и храните их в месте, где они будут доступны навсегда. Опасно держать журналы на хосте Docker, потому что они могут со временем нарастать и есть в вашем диске. Вот почему вы должны использовать Центральное расположение для ваших журналов и Включите вращение журнала Для ваших контейнеров Docker.

Отладка выпусков Docker с журналами контейнеров

Докер имеет Выделенный API Для работы с журналами. Но имейте в виду, это будет работать только в том случае, если вы используете драйвер журнала JSON-файла. Я настоятельно рекомендую не менять драйвер журнала! Давайте начнем отладку.

Прежде всего, чтобы перечислить все работающие контейнеры, используйте Docker PS командование

docker ps

Тогда с Журналы Docker Команда вы можете перечислить журналы для конкретного контейнера.

docker logs 

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

Используя ---следовать или -f флаг будет хвост -f (Следуйте) Журналы контейнеров Docker:

docker logs  -f

--треск Флаг покажет последнее количество линий журналов, которые вы указываете:

docker logs  --tail N

-t или -TimeStamp Флаг покажет временные метки линий журналов:

docker logs  -t

-Details Флаг покажет дополнительные подробности о строках журналов:

docker logs  --details

Но что, если вы хотите увидеть только конкретные журналы? К счастью, Grep работает и с журналами Docker.

docker logs  | grep pattern

Эта команда покажет только ошибки:

docker logs  | grep -i error

Как только приложение начинает расти, вы начинаете использовать Docker Compose. Не волнуйтесь, у него также есть команда журналов.

docker-compose logs

Это отобразит журналы из всех служб в приложении, определенном в файле конфигурации Docker Compose.

Хранение журналов контейнеров Docker в центральном месте с использованием грузоподъемника

С ростом вашей инфраструктуры вы можете полагаться на использование API Docker для устранения неисправностей журналов. Вам необходимо хранить все журналы в безопасном месте, чтобы вы могли анализировать и устранить любые проблемы после факта.

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

Хранив журналы в одном месте, вы также можете настроить оповещения, которые уведомляют вас, если что -то сломается, или когда вы испытываете неожиданное поведение.

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

Хотя драйверы журналов Docker могут отправлять журналы в Инструменты управления журналами , большинство из них не позволяют вам разрабатывать журналы контейнеров. Вам нужен отдельный инструмент, называемый грузовиком, например, Logagent , Logstash или rsyslog структурировать и обогатить бревна перед доставкой их.

Решение состоит в том, чтобы иметь контейнер, посвященный исключительно ведению журналов и сбора журналов. Вы развертываете выделенный контейнер для регистрации в вашей среде Docker. Он будет автоматически Совокупные журналы Из всех контейнеров, а также монитора, анализировать, и хранить или пересылать их в центральное место.

Это облегчает перемещение контейнеров между хостами и легко масштабировать вашу инфраструктуру. Он также позволяет собирать журналы через различные потоки, включая события журнала, данные Docker API, статистику и т. Д.

Это то, что я бы посоветовал вам использовать. Безусловно, наиболее надежный и удобный способ сбора журналов-использовать драйвер JSON-файла и настроить грузовик для отправки журналов. У вас всегда есть локальная копия журналов на вашем сервере, и вы получаете Преимущество централизованного управления журналами .

Если бы вы использовали Sematext Logagent Есть Несколько простых шагов Чтобы следовать, чтобы начать отправку журналов в Sematext. После Создание приложения журналов Запустите эти команды в терминале.

docker pull sematext/logagent

docker run -d --restart=always --name st-logagent \
  -e LOGS_TOKEN=YOUR_LOGS_TOKEN \
  -e LOGS_RECEIVER_URL="https://logsene-receiver.sematext.com" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  sematext/logagent

Это начнет отправлять все журналы контейнеров в Sematext.

Вы можете прочитать больше о том, как работает Logagent и как его использовать для мониторинга журналов в нашем посте на Мониторинг контейнера Docker с Sematext Анкет

Вывод

Там мы идем, как короткий, так и длинный ответ на то, где хранятся журналы контейнеров Docker. По умолчанию Docker использует драйвер журнала JSON-файла, который хранит журналы в выделенных каталогах на хосте:

/var/lib/docker/containers//-json.log

Длинный ответ, и то, что я бы предложил вам сделать, — это настроить выделенный контейнер для регистрации, который будет структурировать и обогатить ваши журналы контейнеров, а затем отправить их в центральное место. Это значительно облегчает поиск и поиск через журналы. Но вы также получаете предупреждение который является главным. Вы хотите знать, что перерывается, прежде чем ваши пользователи.

Надеюсь, вы, ребята и девушки, любили читать это так же, как мне понравилось писать. Если вам это понравилось, не стесняйтесь нажать кнопку «Поделиться», чтобы все больше людей увидели этот урок. До следующего раза, будьте любопытны и повеселитесь.

Оригинал: «https://dev.to/sematext/where-are-docker-logs-stored-349d»