Статьи

Улучшите управление журналами микросервисов с помощью SPM для Docker

В динамичном мире «Микросервисов» традиционный метод статических настроек для маршрутизации и анализа журналов работает не очень хорошо; на самом деле, это создает дополнительную сложность и использование ресурсов. Это, в свою очередь, уменьшает количество микросервисов, которые могут работать на одном сервере.  Sematext придумал лучший метод.

Интегрированные функции управления журналами в SPM для Docker поддерживают микросервисный подход, уменьшая сложность настройки, время запуска и минимизируя используемые ресурсы. Агент SPM для Docker собирает метрики, события и журналы и запускается в контейнере на каждом хосте Docker. В дополнение к стандартной функциональности сбора журналов, мы недавно интегрировали автоматическое обнаружение формата журнала и извлечение полей для сообщений журнала контейнера. Обработка подключается к потоку из Docker API, где собираются журналы, в службу индексации журналов нашего централизованного средства ведения журналов Logsene., Это означает, что — и если вы имели дело с журналами до того, как узнаете, что это huuuge, — нет настройки системного журнала с драйверами журналов Docker, нет маршрутизации к сложному процессу Logstash для анализа, и нет обслуживания Elasticsearch для ведения журналов, или даже необходимость запуска собственной Kibana! SPM для Docker и Logsene предоставляет все из коробки!

Существует множество способов сбора логов из Docker (об этом вы можете узнать на нашем вебинаре Docker Logging ); Так в чем же преимущество использования Logsene для Docker Logs? Позволь мне показать тебе…

Для начала давайте рассмотрим детали новой функциональности управления журналами, которая теперь доступна пользователям Docker:

  1. Настройка — регистрация определенных параметров SPM для Docker
  2. Автоматическое обнаружение формата и анализ для журналов контейнера
  3. Корреляция с метрикой
  4. Оповещение и обнаружение аномалий для контейнерных журналов
  5. Визуализация с Логсеном и Кибаной
  6. Ищите проиндексированные журналы из пользовательского интерфейса или командной строки и обрабатывайте их с помощью инструментов UNIX

1. Настройка — параметры журнала для SPM для Docker

Прежде всего, мы упростили сбор журналов вместе с событиями Docker и метриками Docker, используя SPM для Docker. В установке не так много, просто добавьте «-e LOGSENE_TOKEN = your-logsene-token» в команду запуска Docker агента SPM Docker, и вы получите все журналы из контейнеров Docker в Logsene. Просто так!

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

  • -e MATCH_BY_NAME — регулярное выражение для имен контейнеров белого списка
  • -e MATCH_BY_IMAGE — регулярное выражение в именах изображений белого списка
  • -e SKIP_BY_NAME — регулярное выражение для имен контейнеров черного списка
  • -e SKIP_BY_IMAGE — регулярное выражение для имен изображений черного списка
  • -v PATH_TO_YOUR_FILE: /etc/logagent/patterns.yml — дополнительные, настраиваемые определения анализатора журнала для ваших приложений

Полный пример для сбора метрик, событий и журналов:

docker run --name spm-agent \
-e HOSTNAME=$HOSTNAME \
-e SPM_TOKEN=YOUR_SPM_TOKEN \
-e LOGSENE_TOKEN=YOUR_LOGSENE_TOKEN \
-e MATCH_BY_IMAGE=”nginx|mysql|mongodb|myapp” \
-v /var/run/docker.sock:/var/run/docker.sock \
sematext/spm-agent-docker

2. Автоматический парсер для контейнерных логов

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

SPM для Docker анализирует формат строки и преобразует его в JSON, чтобы сделать все поля доступными, и извлекает именованные поля из текстовых журналов. Традиционно для анализа сообщений журнала было необходимо использовать средства доставки журналов, такие как Logstash, Fluentd или rsyslog, но эти настройки обычно настроены очень статично для каждого входного источника. Это не сработает в мире динамического микросервиса! Мы видели людей, манипулирующих драйвером системного журнала, конфигурациями для анализаторов, маршрутизацией журналов и многим другим! Вот почему мы интегрировали автоматическое определение формата в SPM для Docker с использованием logagent-jsчтобы избавиться от этой боли — и растраты ресурсов — как компьютерных, так и человеческих затрат времени на такие вещи! Эта интеграция занимает мало места, не требует повторной передачи журналов внешним службам и обнаруживает типы журналов для самых популярных приложений, а также стандартные форматы JSON и линейно-ориентированные журналы прямо из коробки!

Apache_Logs
Пример: поля журнала доступа Apache, созданные агентом SPM Docker

Например, SPM Docker Agent может анализировать журналы с официальных изображений, например:

  • MongoDB, MySQL, Redis,…
  • Журналы NGINX и Apache,…
  • Любой вывод JSON со специальной поддержкой Logstash или bunyan
  • Простые текстовые сообщения с или без отметок времени в различных форматах
  • Любой формат, указанный в файле определений пользовательских шаблонов с помощью параметра монтирования: «-v /mypatterns/patterns.yml:/etc/logagent/patterns.yml»

Компонент для обнаружения и анализа сообщений журнала — logagent-js — имеет открытый исходный код, и приветствуются вклады в еще большее количество форматов журналов.

3. Соотношение с метрикой

Хранение журналов в Logsene предоставляет уникальную возможность сопоставлять показатели производительности, такие как загрузка процессора, использование памяти, сеть и дисковый ввод-вывод, с сообщениями журналаодним щелчком мыши вы можете обнаружить сообщения журнала вокруг любого скачка показателей производительности через SPM!  Если вы решаете проблемы с производительностью и другими проблемами в своей организации, вы знаете, сколько времени может сэкономить быстрый доступ к метрикам, журналам и событиям!

Docker-журналы-И-Metrics
Соотношение логов и метрик для NGINX

4. Оповещения в журналах Docker

Logsene предоставляет возможность определять предупреждения и использовать обнаружение аномалий, чтобы уведомлять вас о журналах, о которых вы, скорее всего, хотите знать (например, об ошибках или предупреждениях, проблемах безопасности и т. Д.)

Пожалуйста, проверьте соответствующие сообщения в блоге на эту тему .

5. Визуализация с использованием Kibana

Мы автоматически предоставляем доступ к Kibana в один клик для всех приложений Logsene. Поэтому, если ваши журналы содержат числовые данные — или если вы хотите генерировать статистику о частоте журналов, типах сообщений или основных ошибках — не стесняйтесь создавать панели управления Kibana в Logsene.

6. Ищите проиндексированные журналы из командной строки и обрабатывайте их с помощью инструментов UNIX

Если вы живете в консоли и любите свою командную строку, пожалуйста, проверьте интерпретатор командной строки Logsene . Для поиска не нужно переключаться на веб-интерфейс, и, что еще лучше, не нужно использовать запросы JSON. Logsene + awk + grep + sort + uniq + … все, что вам нужно для вашей задачи.

Начните через 5 минут

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