Архитектура мониторинга в ADH

Обзор

Monitoring — это сервис ADH, предназначенный для сбора, хранения и визуализации метрик кластера и отдельных ADH-сервисов. Данный сервис предоставляет единую панель управления для мониторинга работоспособности, производительности и потребления ресурсов узлами и компонентами кластера.

Сервис мониторинга построен на популярном стеке с открытым исходным кодом:

  • Prometheus. Система мониторинга и оповещения, которая собирает и хранит метрики из приложений и инфраструктуры.

  • Grafana. Платформа визуализации и мониторинга, которая позволяет визуализировать метрики, полученные из различных источников данных.

  • Экспортеры метрик (metric exporter). Легковесные агенты для сбора и передачи в Prometheus метрик операционной системы и сервисных метрик.

Основные принципы мониторинга в ADH:

  • Централизованное хранилище. Prometheus выступает в качестве центрального узла для сбора и хранения метрик.

  • Децентрализованные источники данных. Экспортеры метрик функционируют как часть ADH-сервисов (например, существуют отдельные экспортеры для HDFS, YARN, Zookeeper и других). Сервер мониторинга получает метрики от экспортеров.

  • Готовые дашборды. Сервис включает преднастроенные дашборды Grafana для ключевых ADH-сервисов.

  • Масштабируемость. Гибкая архитектура позволяет добавлять новые метрики и самостоятельно создавать дашборды без необходимости ожидания нового релиза.

Архитектура

Архитектура сервиса мониторинга представляет собой классическую реализацию стека Grafana/Prometheus, который включает в себя следующие компоненты, развернутые на одном или нескольких хостах ADH-кластера.

Архитектура мониторинга
Архитектура мониторинга
Архитектура мониторинга
Архитектура мониторинга
ПРИМЕЧАНИЕ
Установка компонентов мониторинга на хостах ADH вместе с другими ADH-сервисами считается допустимой, однако в производственной среде рекомендуется выделять отдельный хост для компонентов мониторинга.

Основные компоненты сервиса мониторинга описаны ниже.

Prometheus

Prometheus — это система мониторинга и уведомлений с открытым исходным кодом, является ключевым компонентом сервиса. Отвечает за сбор, хранение и обработку метрик.

Основные характеристики:

  • Мультидисциплинарная модель данных. Метрики идентифицируются по имени и набору пар ключ/значение (label).

  • Модель HTTP pull. Prometheus собирает метрики из целевых эндпойнтов по HTTP.

  • Мощный язык запросов PromQL. Позволяет выполнять сложные агрегации и анализ метрик.

  • Конфигурация в ADH. Дистрибутив Prometheus, входящий в состав сервиса мониторинга, преднастроен на сбор метрик от основных ADH-сервисов, а также метрик операционной системы от компонентов Node Exporter.

Grafana

Grafana — это аналитическая и мониторинговая платформа с открытым исходным кодом, предназначенная для визуализации данных. Grafana визуализирует метрики, хранящиеся в Prometheus, с помощью информативных дашбордов.

Основные характеристики:

  • Поддержка нескольких источников данных. Grafana может работать не только с Prometheus, но и с другими источниками метрик.

  • Богатые возможности визуализации. Предоставляет готовые графики, диаграммы, таблицы, тепловые карты и так далее.

  • Интерактивные дашборды. Позволяет создавать динамические дашборды с переменными и переключателями (switch).

  • Гибкие настройки. Готовые дашборды можно адаптировать под конкретные цели, а также создавать новые, соответствующие требованиям бизнеса.

  • Конфигурация в ADH. Дистрибутив Grafana, поставляемый с ADH, содержит набор преднастроенных дашбордов для мониторинга ключевых ADH-сервисов (HDFS, YARN, Zookeeper и прочих), а также дашборды для отслеживания состояния хостов кластера.

Ниже представлен веб-интерфейс Grafana. Актуальная ссылка на web UI доступна в ADCM (Services → Monitoring → Info).

Веб-интерфейс Grafana
Веб-интерфейс Grafana

Node Exporter

Node Exporter — официальный экспортер метрик Prometheus для сбора низкоуровневых аппаратных метрик и метрик операционной системы. Это небольшие агенты, которые запускаются на каждом хосте ADH-кластера и собирают метрики для Prometheus.

Основные характеристики:

  • Сбор метрик ОС. Node Exporter предоставляет метрики по использованию CPU, RAM, дисковому I/O, использованию дискового пространства, сетевому трафику и многим другим показателям.

  • Доступ по API. Предоставляет метрики внешним системам через HTTP-эндпойнт.

  • Расширяемость. Используя подключаемые коллекторы (collector), можно настроить Node Exporter для сбора специальных метрик.

  • Установка в ADH. Компоненты Node Exporter работают как системные демоны на каждом узле ADH-кластера, обеспечивая единообразный сбор метрик с хостов.

Сервисные экспортеры

Сервисные экспортеры (service exporter) — это агенты, функционирующие как часть ADH-сервиса (HDFS, YARN, Hive и другие) и отвечающие за предоставление метрик Prometheus, специфичных для конкретного сервиса. Некоторые сервисы ADH имеют JMX-экспортеры, которые передают метрики напрямую из JVM сервиса, используя JMX. Другие сервисы предоставляют метрики через фиксированный HTTP-эндпойнт.

В отличие от компонентов Node Exporter, сервисные экспортеры не являются частью Monitoring-сервиса, однако являются критически важными элементами для его работы. Сервисные экспортеры автоматически устанавливаются и настраиваются при добавлении сервисов ADH в кластер. Например, при установке компонентов HDFS NameNode/Datanode также устанавливается и настраивается экспортер HDFS.

ПРИМЕЧАНИЕ
При добавлении нового сервиса ADH необходимо перезапустить сервис мониторинга, чтобы получать метрики от нового сервиса.

Ниже приведен список преднастроенных сервисных экспортеров ADH.

Сервис ADH Тип экспортера Расположение настроек (ADCM)

HDFS

jmx-exporter

Раздел настроек Monitoring в сервисных компонентах DataNode, JournalNode и NameNode

Ozone

Предоставляет метрики в формате Prometheus через HTTP-эндпойнт

Services → Ozone → Primary Configuration → ozone-site.xml → hdds.prometheus.endpoint.enabled

Impala

Предоставляет метрики в формате Prometheus через HTTP-эндпойнт (/metrics_prometheus)

 — 

Trino

jmx-exporter

Раздел настроек Monitoring для каждого компонента сервиса

Hive

jmx-exporter

Раздел настроек Monitoring для сервисных компонентов Hive HiveServer2 и Hive Metastore

YARN

jmx-exporter

Раздел настроек Monitoring для сервисных компонентов Node Manager и Resource Manager

HUE

Предоставляет метрики в формате Prometheus через HTTP-эндпойнт

Services → HUE → Components → HUE Server → Primary Configuration → hue.ini → desktop.enable_prometheus

Zeppelin

Предоставляет метрики в формате Prometheus через HTTP-эндпойнт

Services → Zeppelin → Primary Configuration → zeppelin-site.xml → zeppelin.metric.enable.prometheus

HBase

jmx-exporter

Раздел настроек Monitoring для каждого компонента сервиса

Solr

solr-exporter

Конфигурации экспортеров находятся в настройках компонента Solr prometheus exporter

Kyuubi

Предоставляет метрики в формате Prometheus через HTTP-эндпойнт

В разделе настроек kyuubi-defaults.conf (Services → Kyuubi → Components → Kyuubi Server) доступны следующие параметры:

  • kyuubi.metrics.enabled

  • kyuubi.metrics.reporters

  • kyuubi.metrics.prometheus.port

  • kyuubi.metrics.prometheus.path

Zookeeper

Предоставляет метрики в формате Prometheus через HTTP-эндпойнт

В разделе настроек zoo.cfg (Services → Zookeeper → Primary configuration) доступны следующие параметры:

  • metricsProvider.className

  • metricsProvider.httpPort

Принцип работы

  1. Компоненты Node Exporter работают на каждом физическом или виртуальном хосте ADH-кластера и собирают метрики ОС (CPU, RAM, дисковые показатели, сетевой ввод-вывод).

  2. На каждом хосте кластера, где развернуты ADH-сервисы, запускаются соответствующие сервисные экспортеры (например, JMX-экспортер для компонента HDFS DataNode).

  3. Prometheus, который работает на выделенном хосте, периодически опрашивает (scrape) все экспортеры метрик, отправляя HTTP-запросы на их эндпойнты (например, http://<ADH_host_name>>:9100/metrics для Node Exporter).

  4. Prometheus получает метрики в текстовом формате, шифрует их и сохраняет в базе данных на локальном диске.

  5. Grafana подключается к API Prometheus для получения и визуализации данных метрик.

  6. Метрики отображаются в веб-интерфейсе Grafana в виде дашбордов.

Рекомендации по использованию

Для лучшей стабильности и более высокой производительности сервиса мониторинга учитывайте следующие рекомендации:

  • Разделение ролей. Для повышения отказоустойчивости и улучшения производительности в больших кластерах рекомендуется устанавливать сервис мониторинга на выделенных узлах ADH, на которых не размещены основные вычислительные сервисы.

  • Настройка оповещений. Используйте встроенный Prometheus Alertmanager для настройки оповещений. Вы можете интегрировать оповещения с популярными каналами уведомлений, такими как электронная почта, Slack и другими, чтобы быстро реагировать на инциденты. Данные компоненты не входят в дистрибутив ADH и требуют отдельной настройки.

  • Хранение данных мониторинга. Отслеживайте объем дискового пространства, выделенного под данные Prometheus. Настройте политики хранения в соответствии с вашими требованиями к размеру хранимых метрик.

  • Кастомизация дашбордов. Используя в качестве шаблонов преднастроенные дашборды Grafana, входящие в состав ADH, вы можете создавать свои дашборды для отслеживания специфичных показателей, имеющих критическое значение для ваших рабочих нагрузок и бизнес-процессов.

  • Следите за состоянием сервиса мониторинга. Отслеживайте работоспособность и производительность сервиса мониторинга. Для этого можно использовать метрики, которые Prometheus собирает о себе.

  • Настройка сервисов. При изменении конфигурации сервисных экспортеров (добавление новых сервисов в ADH-кластер, изменение топологии сервисов) необходимо перезапустить сервис мониторинга, чтобы применить новую конфигурацию.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней