Статьи

Как централизовать журналы из Docker-контейнеров

Как централизовать логи из Docker контейнеров Loggly

Джейсон Сковронски, менеджер по продукции Loggly

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

Используя  #Docker  и  #AWS ? Вас ждет приятный сюрприз на Re: Invent!

— Джефф Барр (@jeffbarr)  4 ноября 2014 г.

Я расскажу о нескольких способах входа в Docker и приведу пример отправки syslog из таких приложений, как Nginx.

Loggly Docker контейнерная схема

Loggly добавляет мощность в Docker Logging

Docker предлагает встроенную функцию ведения журнала, но он предоставляет вам только доступ к вашим самым последним журналам в текстовом формате. Управление вашими журналами Docker в Loggly предлагает вам несколько больших преимуществ:

  • Вы получаете журналы из всех ваших контейнеров в одном месте без необходимости запуска команды docker logs.
  • Вы можете анализировать свои журналы Docker намного быстрее и эффективнее с помощью нашего поиска. инструменты,  Loggly Dynamic Field Explorer  и визуальные тренды.
  • Вы можете настроить оповещения так, чтобы вы сразу знали, когда происходят ошибки или когда число событий достигает определенного порога, который может сигнализировать о неполадке.

У вас есть несколько вариантов отправки журналов Docker в Loggly

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

  1. Системный журнал:
    Используйте  контейнер Loggly Docker,   который теперь доступен. Он также размещен на  Docker Hub . Этот метод был рекомендован нам лабораторией SendGrid.

Журналы пользовательских приложений:


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

  1. Ведение журнала файлов и сокетов:
    Сделайте  явное  присоединение к хосту: вам нужно будет прочитать rsyslog с этого подключенного тома и затем перенаправить события журнала в Loggly. Я сохраню детали этого в другой раз.

Я сосредоточусь на этом посте на первом варианте, который будет хорошо работать, если ваше приложение создает syslog-совместимые события журнала. К Syslog-совместимым приложениям относятся Apache, Nginx и Java, которые используют logback или Log4j для syslog.

Вот преимущества использования контейнера:

  • Вы поддерживаете разделение процессов (один контейнер для одного процесса) и независимость от хоста.
  • Вы можете использовать свои ресурсы более эффективно. Один докер-контейнер Loggly может поддерживать десятки других контейнеров на хосте.
  • Вы можете поддерживать производительность и надежность вашего основного приложения. Поскольку контейнер Loggly работает как отдельный процесс, вы можете гарантировать, что ваши журналы попадут в Loggly надежным способом, не блокируя обработку вашего приложения.
  • У вас есть единственная точка, чтобы контролировать, какие журналы вы отправляете в Loggly. Например, вы можете настроить шифрование TLS, так как журналы покидают вашу сеть или фильтруют журналы, если вы хотите, чтобы только определенные уровни журналов отправлялись в Loggly.

Как работает Loggly Docker Container

Контейнер Loggly Docker доступен на  изображении,  предоставленном SendGrid. Изображение создает контейнер Docker для вас. Внутри контейнера rsyslog работает как процесс, который открывает порт 514, который является портом rsyslog. Docker отображает этот порт на порт с высоким номером на хосте. Когда вы устанавливаете ссылку на другой контейнер, Docker вставит переменные среды, сообщающие ему, как отправить syslog в контейнер Loggly. Любое количество контейнеров Docker может ссылаться на него. Это отношение многие-к-одному показано на диаграмме выше.

Как это использовать

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

sudo docker run -d -p 514/udp --name loggly-docker -e TOKEN=TOKEN -e TAG=Docker sendgridlabs/loggly-docker

Документация также включает в себя пример, показывающий, как отправлять тестовые данные с помощью netcat и настраивать контейнер Nginx для syslog и отправлять его в Loggly. Как только данные попадают в Loggly, вы можете использовать наш интерфейс поиска, тренды и многое другое.

nignx_docker

Выиграй в Docker Logging Now

  1. Отправка журналов Docker в Loggly сделает вашу операционную команду намного счастливее, а разработчики — более продуктивными в выявлении первопричин. Так что получите Контейнер Loggly Docker от  GitHub ; или если у вас еще нет Loggly,  подпишитесь на бесплатную пробную версию  ! Это очень быстро настроить.

Хотите больше отличного контента, как это? 
Посетите блог Loggly, чтобы узнать о  последних тенденциях DevOps и лучших практиках управления журналами .