Официальный Solr Изображение на Докер Hub было выпущено всего лишь несколько недель назад и уже 16K тянет. Почему не больше? Что ж, на Docker Hub имеется более 200 различных изображений Solr — вероятно, потому что официального изображения не было!
Быстро растущее число организаций используют Solr и Docker в производстве, и они, вероятно, рады новому официальному имиджу. Излишне говорить, что мониторинг Solr необходим в производстве. Docker подрывает во многих отношениях, и есть много вещей, которые немного отличаются и заслуживают упоминания. Они включают:
- Изменено развертывание Solr и его инструментов мониторинга с использованием Dockerfile, Docker Compose или различных инструментов Orchestration.
- Существует новый уровень для мониторинга: Метрики и события контейнеров, см. Мониторинг событий и метрик Docker и SPM для Docker.
- Ведение журнала изменилось: контейнеры регистрируются в консоли, и журналы необходимо извлекать из Docker-Daemon, а не получать их из файла журнала Solr. Проверьте наш пост на тему: Инновационный Docker Log Management
- Официальные изображения могут не предоставлять параметры для мониторинга (например, JMX). Однако официальный образ для Solr предоставляет возможность передавать параметры в среду выполнения Java. Мы будем использовать эту опцию для мониторинга Solr в этом посте.
Далее я собираюсь продемонстрировать настройку узла Solr с SPM. Окончательная установка обеспечит полный мониторинг и регистрацию пакета Solr & Docker :
- Подробные метрики приложений для Solr, развернутые в Docker
- Подробные метрики контейнера и события Docker
- Централизованные журналы для всех контейнеров по SPM для Docker
Давайте сначала определимся с одним из следующих вариантов мониторинга Solr в Docker:
- Создайте свой собственный контейнер Solr с набором инструментов для мониторинга и оповещения с открытым исходным кодом. Я не буду вдаваться в подробности об этой опции сегодня, потому что работа с набором инструментов DevOps с открытым исходным кодом и неофициальным изображением Solr не звучит чисто; Кроме того, мы можем сделать лучше.
- Используйте автономный агент мониторинга, который запрашивает метрики из контейнера Solr. Это требует настройки сетевых конфигураций JMX и Docker для монитора и Solr. Метрики, собираемые удаленными агентами, ограничены, и в контексте Docker запуск процесса внешнего мониторинга плюс процессы Solr потребляют больше ресурсов. И следующий вариант…
- Внедрить агент мониторинга процесса SPM в Solr. Этот параметр имеет минимальное использование ресурсов и поддерживает расширенные функции мониторинга, такие как отслеживание транзакций и AppMap .
В этом сообщении мы рассмотрим вариант № 3, так как он дает лучшее представление о Solr. Sematext предоставляет клиент SPM (включая агент мониторинга и отправителя метрик), предварительно установленный в образе Docker. Мы называем этот клиент dM Dockerized SPM «Образ / контейнер клиента SPM» в следующих инструкциях. Основной трюк здесь — это смонтировать том из клиентского контейнера SPM в контейнеры Solr, чтобы загрузить библиотеку мониторинга, которая является частью клиентского контейнера SPM.
Давайте посмотрим на желаемую настройку и как туда добраться:
Мы будем использовать последнюю версию 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
Все сделано! Примерно через минуту в SPM появятся метрики для узлов Docker Host, JVM и Solr. Поскольку мы выбрали непротиворечивое наименование для имени хоста контейнера и имени JVM, мы можем сразу увидеть в каждой диаграмме соответствующие фильтры с именем «SOLR1». Это намного лучше, чем некоторые случайные идентификаторы контейнеров.
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, как показано здесь:
Обратите внимание, что журналы из контейнеров автоматически отправляются и анализируются ! Нет настроек для грузоотправителей? Это верно — НЕТ сложной настройки системных журналов, драйверов Logstash, Docker и т. Д. Вся эта работа выполняется SPM для Docker . Например, каждая строка журнала имеет поле «имя_узла» для узла Solr. Он берет метку времени, серьезность, класс, поток и источник из журнала Solr, и каждый журнал автоматически помечается идентификатором контейнера и именем изображения. Переход от метрик SPM к подробным журналам Solr, включая исключения и анализируемые трассировки стеков, выполняется всего одним щелчком мыши! Посмотрите:
Multi-Line Exception, захватывается и анализируется из контейнера Solr
Фильтры рядом с полевой статистикой в правой части экрана позволяют легко идентифицировать контейнеры с наибольшим количеством журналов, выбрав «имя_ контейнера». Это лишь небольшая деталь в пользовательском интерфейсе Logsene — не стесняйтесь исследовать его, создавая Alerts или Kibana 4 Dashboards для журналов контейнеров.
Как то, что вы видели здесь? Для мониторинга Docker и Solr с помощью SPM просто получите бесплатный аккаунт здесь! И напишите нам по электронной почте или напишите нам в Twitter с предложениями, вопросами или комментариями. Solr и Docker — темы, о которых нам нравится общаться с сообществом!