Архитектура мониторинга в 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-кластер, изменение топологии сервисов) необходимо перезапустить сервис мониторинга, чтобы применить новую конфигурацию.