Статьи

Docker + Solr How-to: Мониторинг официального изображения Solr Docker

Официальный Solr Изображение на Докер Hub было выпущено всего лишь несколько недель назад и уже 16K тянет. Почему не больше? Что ж, на Docker Hub имеется более 200 различных изображений Solr — вероятно, потому что официального изображения не было!

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

  1. Изменено развертывание Solr и его инструментов мониторинга с использованием Dockerfile, Docker Compose или различных инструментов Orchestration.
  2. Существует новый уровень для мониторинга: Метрики и события контейнеров, см. Мониторинг событий и метрик Docker и SPM для Docker.
  3. Ведение журнала изменилось: контейнеры регистрируются в консоли, и журналы необходимо извлекать из Docker-Daemon, а не получать их из файла журнала Solr. Проверьте наш пост на тему: Инновационный Docker Log Management
  4. Официальные изображения могут не предоставлять параметры для мониторинга (например, JMX). Однако официальный образ для Solr предоставляет возможность передавать параметры в среду выполнения Java. Мы будем использовать эту опцию для мониторинга Solr в этом посте.

Далее я собираюсь продемонстрировать настройку узла Solr с SPM. Окончательная установка обеспечит полный мониторинг и регистрацию пакета Solr & Docker :

  • Подробные метрики приложений для Solr, развернутые в Docker
  • Подробные метрики контейнера и события Docker
  • Централизованные журналы для всех контейнеров по SPM для Docker

Давайте сначала определимся с одним из следующих вариантов мониторинга Solr в Docker:

  1. Создайте свой собственный контейнер Solr с набором инструментов для мониторинга и оповещения с открытым исходным кодом. Я не буду вдаваться в подробности об этой опции сегодня, потому что работа с набором инструментов DevOps с открытым исходным кодом и неофициальным изображением Solr не звучит чисто; Кроме того, мы можем сделать лучше.
  2. Используйте автономный агент мониторинга, который запрашивает метрики из контейнера Solr. Это требует настройки сетевых конфигураций JMX и Docker для монитора и Solr. Метрики, собираемые удаленными агентами, ограничены, и в контексте Docker запуск процесса внешнего мониторинга плюс процессы Solr потребляют больше ресурсов. И следующий вариант…
  3. Внедрить агент мониторинга процесса SPM в Solr. Этот параметр имеет минимальное использование ресурсов и поддерживает расширенные функции мониторинга, такие как отслеживание транзакций и AppMap .

В этом сообщении мы рассмотрим вариант № 3, так как он дает лучшее представление о Solr. Sematext предоставляет клиент SPM (включая агент мониторинга и отправителя метрик), предварительно установленный в образе Docker. Мы называем этот клиент dM Dockerized SPM «Образ / контейнер клиента SPM» в следующих инструкциях. Основной трюк здесь — это смонтировать том из клиентского контейнера SPM в контейнеры Solr, чтобы загрузить библиотеку мониторинга, которая является частью клиентского контейнера SPM.

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

Solr_image_infographic

Мы будем использовать последнюю версию Docker-Compose (> v1.5), потому что тогда мы можем использовать подстановку переменных среды в Docker-Compose .

1) Сконфигурировать и запустить контейнер SPM-Client

Маркер SPM является уникальным идентификатором для отслеживаемых приложений. Если вы не создали приложение SPM для Solr, сначала создайте его здесь . Должно занять около 37 секунд.

# Set the SPM Token as Environment Variable
export SPM_TOKEN=4feb144c-4da8-4081-83b5-b0b8e06e743a
# Set the JVM Name, which appears in SPM JVM Metrics Report
# In addition we will use it as Hostname for the Solr container
export JVM_NAME=SOLR1

2) Создайте SPM Client и Solr в docker-compose.yml. Примечание. Вы можете скопировать этот файл, чтобы внести изменения в дополнительные параметры Solr; все параметры установлены как переменные среды.

spm-client-solr:
 image: sematext/spm-client
 container_name: spm-client-solr
 hostname: spm-client-solr
 environment:
 - SPM_CONFIG=${SPM_TOKEN} solr javaagent ${JVM_NAME}

SOLR1:
 image: solr
 hostname: solr1
 ports:
 - "8983:8983"
 volumes_from:
 - spm-client-solr
 environment:
 - SOLR_OPTS=-Dcom.sun.management.jmxremote -javaagent:/opt/spm/spm-monitor/lib/spm-monitor-solr.jar=${SPM_TOKEN}::${JVM_NAME}
 command: bin/solr -f

В переменной среды «SOLR_OPTS» в файле Docker-Compose выше мы видим параметры для монитора процесса SPM для добавления файла .jar из тома клиента SPM. Строка SOLR_OPTS взята из инструкции по установке SPM. Он включает в себя токен SPM (часть $ {SPM_TOKEN}) и предоставляет имя JVM, чтобы мы могли различать несколько экземпляров Solr, если мы запустим N из них на одном хосте (часть :: $ {JVM_NAME}).

3) Запустите Solr и SPM Monitor  

Теперь мы готовы запустить Solr:

    docker-compose up -d

Solr_image_code

Все сделано! Примерно через минуту в SPM появятся метрики для узлов Docker Host, JVM и Solr. Поскольку мы выбрали непротиворечивое наименование для имени хоста контейнера и имени JVM, мы можем сразу увидеть в каждой диаграмме соответствующие фильтры с именем «SOLR1». Это намного лучше, чем некоторые случайные идентификаторы контейнеров.

Solr_image_screen_4

Solr Metrics Обзор

Но как насчет моих журналов Solr и метрик контейнера?

Просто запустите SPM для Docker — он собирает журналы, а также метрики контейнера и хоста. Он также может анализировать журналы Solr и сохранять их в Logsene (см. Стек ELK в 1 щелчок Logsene ), что удивительно, потому что это означает, что вы можете иметь как метрики Solr / OS / JVM, так и журналы Solr все в одном месте! Или вы, возможно, хотели бы использовать ssh на своих серверах и в файлах журнала grep?

Журналы Докера и Шаги Метрики:

Сначала мы создаем приложение SPM с типом «Docker» для метрик, характерных для Docker, а затем мы создаем приложение Logsene для наших журналов. Затем мы используем сгенерированные токены приложений для запуска SPM для Docker .

docker run -d -name spm-agent -e SPM_TOKEN=SPM_DOCKER_APP_TOKEN -e LOGSENE_TOKEN=LOGSENE_APP_TOKEN

Через несколько минут вы получите метрики хоста и контейнера вместе с событиями и журналами в SPM, как показано здесь:

Solr_image_screen_2

Обратите внимание, что журналы из контейнеров автоматически отправляются и анализируются ! Нет настроек для грузоотправителей? Это верно — НЕТ сложной настройки системных журналов, драйверов Logstash, Docker и т. Д. Вся эта работа выполняется SPM для Docker . Например, каждая строка журнала имеет поле «имя_узла» для узла Solr. Он берет метку времени, серьезность, класс, поток и источник из журнала Solr, и каждый журнал автоматически помечается идентификатором контейнера и именем изображения. Переход от метрик SPM к подробным журналам Solr, включая исключения и анализируемые трассировки стеков, выполняется всего одним щелчком мыши! Посмотрите:

Solr-logsene

Multi-Line Exception, захватывается и анализируется из контейнера Solr

Фильтры рядом с полевой статистикой в ​​правой части экрана позволяют легко идентифицировать контейнеры с наибольшим количеством журналов, выбрав «имя_ контейнера». Это лишь небольшая деталь в пользовательском интерфейсе Logsene — не стесняйтесь исследовать его, создавая Alerts или Kibana 4 Dashboards для журналов контейнеров.

Как то, что вы видели здесь? Для мониторинга Docker и Solr с помощью SPM просто получите бесплатный аккаунт здесь! И напишите нам по электронной почте или напишите нам в Twitter с предложениями, вопросами или комментариями. Solr и Docker — темы, о которых нам нравится общаться с сообществом!