Архитектура мониторинга в 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).
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) доступны следующие параметры:
|
Zookeeper |
Предоставляет метрики в формате Prometheus через HTTP-эндпойнт |
В разделе настроек zoo.cfg (Services → Zookeeper → Primary configuration) доступны следующие параметры:
|
Принцип работы
-
Компоненты Node Exporter работают на каждом физическом или виртуальном хосте ADH-кластера и собирают метрики ОС (CPU, RAM, дисковые показатели, сетевой ввод-вывод).
-
На каждом хосте кластера, где развернуты ADH-сервисы, запускаются соответствующие сервисные экспортеры (например, JMX-экспортер для компонента HDFS DataNode).
-
Prometheus, который работает на выделенном хосте, периодически опрашивает (scrape) все экспортеры метрик, отправляя HTTP-запросы на их эндпойнты (например, http://<ADH_host_name>>:9100/metrics для Node Exporter).
-
Prometheus получает метрики в текстовом формате, шифрует их и сохраняет в базе данных на локальном диске.
-
Grafana подключается к API Prometheus для получения и визуализации данных метрик.
-
Метрики отображаются в веб-интерфейсе Grafana в виде дашбордов.
Рекомендации по использованию
Для лучшей стабильности и более высокой производительности сервиса мониторинга учитывайте следующие рекомендации:
-
Разделение ролей. Для повышения отказоустойчивости и улучшения производительности в больших кластерах рекомендуется устанавливать сервис мониторинга на выделенных узлах ADH, на которых не размещены основные вычислительные сервисы.
-
Настройка оповещений. Используйте встроенный Prometheus Alertmanager для настройки оповещений. Вы можете интегрировать оповещения с популярными каналами уведомлений, такими как электронная почта, Slack и другими, чтобы быстро реагировать на инциденты. Данные компоненты не входят в дистрибутив ADH и требуют отдельной настройки.
-
Хранение данных мониторинга. Отслеживайте объем дискового пространства, выделенного под данные Prometheus. Настройте политики хранения в соответствии с вашими требованиями к размеру хранимых метрик.
-
Кастомизация дашбордов. Используя в качестве шаблонов преднастроенные дашборды Grafana, входящие в состав ADH, вы можете создавать свои дашборды для отслеживания специфичных показателей, имеющих критическое значение для ваших рабочих нагрузок и бизнес-процессов.
-
Следите за состоянием сервиса мониторинга. Отслеживайте работоспособность и производительность сервиса мониторинга. Для этого можно использовать метрики, которые Prometheus собирает о себе.
-
Настройка сервисов. При изменении конфигурации сервисных экспортеров (добавление новых сервисов в ADH-кластер, изменение топологии сервисов) необходимо перезапустить сервис мониторинга, чтобы применить новую конфигурацию.