Привет!
Меня зовут Марк Лебедев, работаю архитектором в GlowByte. В июне 2022 года на
митапе DataPeople мы с командой рассказывали о наших планах в части GreenPlum (
запись выступления). Если коротко, тогда мы сфокусировались на развитии open-source и собирались выложить в публичный доступ наши наработки относительно мониторинга кластера и мониторинга запросов, плейбуки по инсталляции и наши подходы для нагрузочного тестирования. Собственно, про них и хотелось бы поговорить подробно. В этой статье мы подведём итоги, что нам удалось сделать за прошедшие 6 месяцев, и расскажем о планах на будущий год. В конце статьи укажем все ссылки на репозитории.
Мониторинг кластераВ репозитории “ванильного” GreenPlum пока что есть мониторинг “из коробки”, но для того, чтобы он стал удобен, необходимо тратить достаточно много времени: над метриками нужно писать набор запросов, а результаты их выполнения где-то хранить и визуализировать.
Для этих целей мы выбрали следующие популярные компоненты:
- Prometheus – для сбора и хранения метрик,
- Grafana – для визуализации и построения дашбордов,
- набор Prometheus-экспортёров:
a. Node Exporter – для сбора метрик с хостов, на которых развернута система,
b. SQL Exporter – для сбора метрик из БД,
c. API PXF – для получения метрик от PXF.
На данный момент у нас есть следующие дашборды:
- Агрегатный дашборд о здоровье кластера Greenplum:
a. статус кластера, сегментов и сервисов,
b. информация о потреблении CPU на всех хостах кластера,
c. информация о потреблении RAM на всех хостах кластера,
d. информация об использовании дисков и swap на всех хостах кластера,
e. список созданных ресурсных групп и расписание их действия,
f. информация о запущенных сессиях и пользовательской активности.
2.Детальный дашборд о состоянии хостов кластера. Тут используется стандартный дашборд Node Exporter из библиотеки Grafana.
3.Стандартный дашборд мониторинга Prometheus.
4.Дашборд для мониторинга PXF:
a. список серверов PXF,
b. текущее и историческое количество соединений,
c. количество полученных и отправленных байт,
d. использование RAM в разрезе инстанса.
5.Детальный дашборд о состоянии ресурсных групп:
a. текущее потребление CPU в разрезе ресурсной группы, а также история этого потребления,
b. текущее потребление RAM в разрезе ресурсной группы, а также история этого потребления,
c. текущее и историческое значение активных запросов в разрезе ресурсной группы,
d. текущий объём spill-файлов в разрезе ресурсной группы,
e. количество распределенных ресурсных кластера между ресурсными группами
f. актуальные квоты ресурсных групп и расписание их изменений.
Все сборщики и дашборды можно легко обогащать дополнительными метриками, что позволяет собрать свой идеальный мониторинг.
Инструкция по установке:
- Скачать собранный дистрибутив GPMonitoring.
- Установить Ansible 2.14.1 и Python 3.9 на хост, с которого будет выполняться установка.
- Заполнить файл inventory.
- Запустить Ansible-плейбук с необходимым тегом (либо без указания тега для установки всех компонент):
a. exporters – установка обоих экспортёров;
b. node_exporter – установка Node Exporter;
c. sql_exporter – установка SQL Exporter;
d. monitoring – установка Prometheus и Grafana;
e. prometheus – установка Prometheus;
f. grafana – установка Grafana.
Пример установки и настройки только экспортёров: