Описание релиза мониторинга
Описание коллекторов sql_exporter
1. Анализ ресурсных групп
Файл: gp-resgroup.collector.yml
Интервал: 10 секунд (Высокая частота)
Назначение: Детальный мониторинг потребления ресурсов (CPU, Память) каждой ресурсной группой в разрезе каждого сегмента. Примечание: Данный коллектор включается по необходимости: 1. если необходимо отклалибровать параметры ресурсных групп 2. узнать текущий профиль потребления ресурсов в рес. группе
На постоянную основу можно не включать
| Метрика | Описание |
|---|---|
| gp_resgroup_cpu_usage | Процент использования CPU указанной ресурсной группой на конкретном сегменте. |
| gp_resgroup_memory_used | Количество памяти (в МБ/байтах), фактически используемое группой на сегменте. |
| gp_resgroup_memory_available | Доступная память для группы на сегменте. |
| gp_resgroup_memory_quota_used | Использованная квота памяти (фиксированная часть). |
| gp_resgroup_memory_shared_used | Использованная разделяемая (shared) память (когда основная квота исчерпана). |
| gp_resgroup_num_running | Количество текущих выполняемых запросов в группе. |
| gp_resgroup_num_queueing | Количество запросов, стоящих в очереди на исполнение (признак нехватки слотов конкурентности). |
| gp_resgroup_num_queued | Общее количество транзакций в очереди с момента последнего запуска кластера базы данных Greenplum, исключая num_queueing. |
| gp_resgroup_num_executed | Общее количество выполненных запросов. |
2. Производительность кластера
Файл: greenplum-30-sec.collector.yml
Интервал: 30 секунд
Назначение: Агрегированная информация о сессиях, блокировках, спиллах (spill files) и общей утилизации ресурсных групп.
| Метрика | Описание |
|---|---|
| Сессии и Блокировки | |
| gp_sess_info | Общая сводка по соединениям: active (активные), idle(простаивающие), waiting (ожидающие), lock_sess (ждущие блокировки). Источник: pg_stat_activity. |
| gp_sessions_by_resgroup | Количество сессий в разрезе ресурсных групп и состояний (включая причину ожидания). |
| gp_prf_res_grp_blockers | Количество сессий, заблокированных участниками конкретной ресурсной группы. Помогает найти "виновника" тормозов. |
| gp_prf_res_grp_waiters | Количество сессий внутри ресурсной группы, которые ждут блокировок. |
| Ресурсные группы | |
| gp_resgroup_utilization | Процент использования concurrency. Рассчитывается как active_sessions / concurrency_limit * 100. |
| gp_percentage_memory_quota_used | Процент использования квоты памяти группой (агрегат по кластеру). |
| gp_percentage_cpu_quota_used | Процент использования квоты CPU. |
| Спилл-файлы (Workfiles) | |
| gp_res_grp_spill_used | Объем и количество спилл-файлов в разрезе ресурсной группы. |
| gp_prf_spill_size_total | Общий размер спилл-файлов в кластере (в байтах). |
| gp_prf_spill_size_skew_cv | Коэффициент вариации (CV) размера спиллов по сегментам. Если значение высокое, значит один сегмент спиллит сильнее других (перекос данных/вычислений). |
| gp_prf_spill_filecount_skew_cv | Коэффициент вариации количества спилл-файлов. |
3. Health & Canary
Файл: greenplum-1-min.collector.yml
Интервал: 1 минута
Назначение: Проверка доступности мастера, сегментов и канарейка.
| Метрика | Описание |
|---|---|
| greenplum_canary | Вызывает функцию do_awh_toolkit.canary_query. Замеряет время (в мс) выполнения полного цикла операций: 1. create_table (создание AO-таблицы) 2. select_table (чтение) 3. alter_table (изменение схемы) 4. truncate_table (очистка) 5. create_view/select/drop (работа с view) 6. drop_table (удаление) Если время растет — БД тормозит глобально. |
| gp_master_up | Статус Master-узла (1 - работает, 0 - лежит). Проверяет также статус репликации. (но будто бы запрос кривой) |
| gp_cluster_up_time | Время работы кластера (uptime) в секундах. |
| gp_segm_info | Сводка по сегментам: - primary_seg / mirror_seg: всего сегментов. - down_prm_seg: упавшие праймари сегменты (Критично!). - activ_sw_prm_seg: сегменты, переключившиеся на зеркало (System acting as primary but distinct from configured). |
4. Алертинг
Файл: gp-alert.collector.yml
Интервал: 5 минут
Назначение: Выявление проблем, требующих вмешательства администратора (долгие транзакции, перекосы, блокировки).
| Метрика | Описание |
|---|---|
| gp_spill_files_all_size | Общий размер всех спилл-файлов. Используется для алертинга "Место заканчивается из-за спиллов". |
| percentage_blocked_sessions | Процент заблокированных сессий от общего числа. |
| waiting_reason_resgroup_counter | Количество сессий, ждущих освобождения слота в ресурсной группе (очередь в RG). |
| gp_partitions_many | Таблицы с количеством партиций > 1000 (может вызывать тормоза каталога). |
| gp_audit_tables_skew | Перекос таблиц (Skew). Находит таблицы >100МБ с sgm_dstr_std_dev > 10. Это таблицы, данные в которых распределены неравномерно по сегментам. |
| gp_session_idle_transaction | Сессии в статусе idle in transaction дольше 1 часа. Блокируют очистку (VACUUM) и раздувают БД. |
| gp_partitions_low | Мониторинг автоматического управления партициями (ошибки или предупреждения). |
5. Services & Files
Файл: services.collector.yml
Интервал: 15 минут
Назначение: Мониторинг гигиены БД: статистика, количество файлов (inodes), shared buffers.
| Метрика | Описание |
|---|---|
| last_24h_poll_count | Количество таблиц, опрошенных аудитом за последние 24 часа. |
| polled_not_analyzed_count | Таблицы, которые были изменены, но не проанализированы (ANALYZE) более 3 дней. Критично для планировщика запросов. |
| files_count | Общее количество файлов в директории БД (через plpythonu и os.listdir). Защита от исчерпания инод при большом кол-ве append-only таблиц. |
| files_count_by_seg | То же самое, но в разрезе каждого сегмента (primary/mirror). Позволяет найти сегмент с аномальным количеством файлов. |
| gp_spill_files_users | Топ пользователей и ресурсных групп, генерирующих спилл-файлы (кто "забивает" диск). |
| gp_shared_buffers_master/ avg / max | Утилизация буферного кеша (shared_buffers) на мастере и сегментах (через расширение pg_buffercache). Помогает понять, хватает ли памяти. |
| gp_obj_count | Количество объектов по типам (Heap таблицы, AO таблицы, внешние таблицы, индексы). |
6. Daily Checks (Ежедневное обслуживание)
Файл: greenplum-20-min.collector.yml
Интервал: 20 минут (не совсем Daily, но для "медленных" метрик)
Назначение: Анализ роста данных, bloat (раздувание таблиц) и возраста статистики.
| Метрика | Описание |
|---|---|
| gp_dc_schema_bloat_percent | Процент "мертвых" строк (bloat) по схемам. Индикатор необходимости запуска VACUUM FULL. |
| gp_dc_schema_bloat_size | Объем места в ГБ, занимаемый "мертвыми" строками. |
| gp_dc_skewed_tables_top_30 | Топ-30 самых перекошенных таблиц (где данные лежат неравномерно). |
| gp_dc_stats_age_by_cat | Возраст статистики (ANALYZE) по категориям (6 часов, 24 часа, неделя, >недели). |
| gp_dc_tab_high_daily_growth | Топ таблиц с аномально высоким суточным ростом. |
| gp_dc_heavily_partitioned_tables | Еще одна метрика для поиска таблиц с большим количеством партиций. |
Используемые вспомогательные функции (Context)
В файле do_awh_monitoring_collector--1.0.sql определены функции и права, необходимые для работы коллекторов:
- do_awh_toolkit.pg_stat_activity(): Обертка с SECURITY DEFINER. Позволяет обычному пользователю мониторинга видеть процессы всех пользователей.
- do_awh_toolkit.canary_query(): Сложная PL/pgSQL функция.
- Создает временную таблицу canary_time_test_table_....
- Вставляет данные, меняет структуру, создает view, чистит, удаляет.
- Возвращает время каждого шага.
- Тест работоспособности файловой системы и каталога.
- do_awh_toolkit.count_files_in_db(): Python-функция (plpythonu).
- Идет в директорию base/\<oid_db> на сервере.
- Считает реальное количество файлов.
- Необходима, так как Greenplum создает много файлов для Append-Optimized таблиц, и можно упереться в лимиты OS.
Описание Дашбордов
Daily Checks
1. Общее назначение
Дашборд Daily Checks («Ежедневные проверки») предназначен для регулярного аудита состояния кластера Greenplum.
Основные задачи дашборда:
- Контроль актуальности статистики и аудита таблиц.
- Выявление проблем физического проектирования: перекосы данных (skew), чрезмерное партиционирование, раздувание таблиц (bloat).
- Мониторинг заполненности дисков на уровне ОС.
- Анализ скорости роста данных за последние сутки.
2. Используемые коллекторы
Для корректной работы всех панелей дашборда требуются следующие источники метрик:
- greenplum-20-min.collector.yml: Основной источник данных. Содержит «тяжелые» запросы с префиксом gp_dc_ (Daily Checks), которые выполняются редко (раз в 20 минут).
- greenplum-30-sec.collector.yml: Используется для отображения текущей сессионной нагрузки (gp_sess_info, gp_resgroup_utilization).
- node_exporter: Стандартный экспортер Linux. Необходим для метрик по дискам (node_filesystem...), сети (node_network_mtu...) и информации о хосте (node_uname_info).
3. Описание панелей
Секция 1: Audit & Statistics (Аудит и Статистика)
Эта группа панелей показывает, насколько актуальна мета-информация о данных. Устаревшая статистика ведет к плохим планам запросов.
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| DB Objects By Audit Age | Pie Chart | gp_dc_audit_age_by_cat | Возраст аудита. Показывает распределение таблиц по времени последнего опроса системой аудита. • Красный сектор (48+ hrs) сигнализирует, что часть таблиц давно не проверялась мониторингом. |
| Statistics Age | Pie Chart | gp_dc_stats_age_by_cat | Возраст статистики (ANALYZE). Показывает, как давно обновлялась статистика планировщика. • Важно: Если много таблиц в зоне 168+ hrs(неделя) или 24-168 hrs, возможна деградация производительности сложных JOIN-запросов. |
| Database Object Count | Gauge | gp_database_object_count | Общее количество объектов. Счетчик таблиц (relkind='r') в базе. Резкий рост может указывать на бесконтрольное создание таблиц пользователями или приложениями. |
| NIC MTU's | Stat | node_network_mtu_bytes | Настройка сети (MTU). Проверяет размер MTU на сетевых интерфейсах. Для Greenplum (Interconnect) обычно рекомендуется Jumbo Frames (MTU 9000). Разные значения на узлах могут привести к потере пакетов. |
| Hosts information | Table | node_uname_info | Инвентаризация хостов. Сводная таблица с именами хостов и их IP-адресами. Позволяет быстро увидеть состав кластера. |
| GreenPlum Sessions | Time Series | gp_sess_info | Динамика сессий. График текущих соединений: всего (all), активных, простаивающих (idle). Позволяет оценить нагрузку в моменте проверки. |
| Resource Groups Utilization, % | Time Series | gp_resgroup_utilization | Утилизация ресурсных групп. Процент занятых слотов конкурентности (concurrency) по каждой ресурсной группе. Помогает понять, есть ли очереди на выполнение из-за лимитов групп. |
Секция 2: Partitions, Bloat And Skew (Партиции, Раздувание и Перекосы)
Самая важная секция для администратора БД (DBA). Выявляет объекты, требующие оптимизации (VACUUM FULL, перераспределение).
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| Heavily Partitioned Tables (>100) | Bar Gauge | gp_dc_heavily_partitioned_tables | Чрезмерное партиционирование.Список таблиц, имеющих более 100 партиций. • Большое количество партиций замедляет работу каталога и планировщика. Рекомендуется объединять старые партиции. |
| Skewed Tables, Top 30 | Table | gp_dc_skewed_tables_top_30 | Топ-30 перекошенных таблиц.Таблицы с неравномерным распределением данных по сегментам (высокий Skew Degree). • Риск: Запросы к таким таблицам упираются в скорость одного (перегруженного) сегмента, тормозя весь кластер. |
| Schema Bloat, percent | Bar Gauge | gp_dc_schema_bloat_percent | Процент "мусора" (Bloat). Топ-15 схем с наибольшим процентом мертвых строк. • Индикатор того, что автовакуум не справляется или требуется ручной VACUUM FULL. |
| Schema Bloat, GB | Bar Gauge | gp_dc_schema_bloat_size | Объем "мусора" в ГБ. То же самое, но в абсолютных величинах. Показывает, сколько места на диске можно освободить после очистки. |
| Skewed Tables Count | Bar Chart | gp_dc_skewed_table_count | Гистограмма перекосов. Количество таблиц, сгруппированных по степени перекоса: • 5-10 (Желтый) — умеренный. • 10-30 (Оранжевый) — сильный. • 30+ (Красный) — критический. |
Секция 3: Storage Usage, Primary Site (Дисковая подсистема)
Мониторинг физического места на серверах сегментов.
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| /data* | Bar Gauge | node_filesystem... | Занятость данных. Показывает процент занятого места на точках монтирования /data* (обычно там лежат файлы сегментов GP). Данные берутся из node_exporter. |
| Корень и spill | Bar Gauge | node_filesystem... | Системные диски и спиллы. Занятость корневого раздела (/), места под спилл-файлы (/spill) и логов (/log). • Переполнение /spill может аварийно остановить выполнение сложных запросов. |
Секция 4: Daily growth (Суточный рост)
Секция для Capacity Planning (планирования емкости). Позволяет увидеть тренды наполнения хранилища.
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| Top Tables With High Daily Growth, GB | Bar Gauge | gp_dc_tab_high_daily_growth | Топ растущих таблиц. Таблицы, которые выросли сильнее всего за последние 24 часа (в ГБ). Позволяет найти "виновников" резкого уменьшения свободного места. |
| Daily Growth By Schema, GB | Bar Gauge | gp_dc_schema_daily_growth | Рост по схемам. Агрегированный рост данных в разрезе схем. Полезно для биллинга ресурсов или понимания, какой бизнес-домен генерирует данные. |
GreenPlum Healthcheck
1. Общее назначение
Дашборд GreenPlum Healthcheck предназначен для оперативного мониторинга (Real-time) состояния здоровья кластера.
Основные задачи дашборда:
- Высокая частота обновления: Данные обновляются каждые 10-60 секунд.
- Фокус на доступности (SLA): Показывает, работает ли мастер, целы ли сегменты, есть ли рассинхронизация времени.
2. Используемые коллекторы
Дашборд объединяет данные из нескольких источников для полной картины:
- greenplum-1-min.collector.yml: Статус мастера, сегментов и синтетические тесты ("канарейка").
- greenplum-30-sec.collector.yml: Сессии, блокировки и утилизация ресурсных групп.
- node_exporter: Нагрузка на "железо" (CPU, Disk I/O, Time Drift).
- pxf_exporter: (Опционально) Статус сервисов Platform Extension Framework.
3. Детальное описание панелей
Секция 1: Status (Статус кластера)
Критически важная секция. Если здесь что-то красное — это инцидент.
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| GP Cluster Status | Stat (Светофор) | gp_master_up | Главный индикатор. • 1 (Green): Master-процесс активен. • 0 (Red): Master недоступен, кластер лежит. |
| Cluster Uptime | Stat | gp_cluster_up_time | Время аптайма. Показывает, как долго работает экземпляр базы данных без перезагрузки. Резкий сброс означает рестарт БД. |
| Dead PXF instance count | Gauge | count(up) - sum(up) | Мертвые PXF. Считает разницу между общим числом настроенных PXF-агентов и доступных. Если > 0, значит, часть внешних таблиц не читается. |
| Current Sessions | Time Series | gp_sess_info | Активные сессии. График соединений в реальном времени: • active_sess: Выполняют запросы. • lock_sess (Purple): Ждут блокировок (Опасно, если растет!). • waiting_sess: Ждут ресурсов (не блокировок). |
| Not active Primary Segments | Stat | gp_segm_info | Упавшие Primary сегменты. Должно быть 0. Если значение > 0, часть данных недоступна или кластер работает в режиме "только чтение" (в лучшем случае). |
| Not active Mirror Segments | Stat | gp_segm_info | Упавшие Mirror сегменты. Должно быть 0. Если > 0, потеряна избыточность. При падении соответствующего Primary кластер остановится. |
| Swapped roles | Stat | gp_segm_info | Переключенные сегменты (FTS). Показывает количество зеркал, которые взяли на себя роль Primary. • Значение > 0 означает, что произошел сбой (failover), кластер работает, но требует восстановления (gprecoverseg). |
Секция 2: Operation System (Операционная система и Ресурсы)
Метрики, влияющие на стабильность распределенной системы.
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| System Clock Time Drift | Gauge | node_timex_estimated_error_seconds | Рассинхронизация времени.Критично для GP. Если часы на сегментах расходятся с мастером, транзакции могут падать, а бэкапы — быть некорректными. |
| Resource Groups Utilization | Status History | gp_resgroup_utilization | Нагрузка на ресурсные группы. Вид "Status History" позволяет увидеть плотность загрузки групп во времени. Помогает понять, какая группа "съедает" ресурсы прямо сейчас. |
| Canary test duration | Status History | greenplum_canary | Время синтетического теста.Длительность выполнения полного цикла операций (CREATE, INSERT, DROP). • Если CPU и Диски в норме, но эта метрика растет — проблема в блокировках каталога или сети интерконнекта. |
Секция 3: Primary Site / Hardware (Железо)
Мониторинг физических ресурсов всех хостов кластера.
| Панель | Визуализация | Метрика (PromQL) | Описание и назначение |
|---|---|---|---|
| CPU usage | Status History | node_cpu_seconds_total | Утилизация CPU. Показывает нагрузку (без idle) по каждому хосту. Позволяет увидеть перекос вычислений (один хост красный, остальные зеленые). |
| System Load Average (5 min), % | Status History | node_load5 / cpu_count | Нормализованный Load Average.Значение 100% означает, что очередь на CPU равна количеству ядер. Значения выше 100% говорят о серьезных тормозах. |
| Datafiles Storage Disks I/O Utilization | Status History | node_disk_io_time_seconds_total | Насыщение дисков с данными. • Фильтр: mountpoint=\~"/data.*". • Показывает только те диски, где лежат данные сегментов. • Значения, близкие к 100%, означают, что диски не справляются с потоком чтения/записи (узкое место I/O). |
GreenPlum Performance Details
1. Общее назначение
Дашборд GreenPlum Performance Details предназначен для глубокого анализа производительности и поиска узких мест (troubleshooting).
Основной фокус сделан на Resource Groups(управление ресурсами), Spill Files (сброс данных на диск) и детальной статистике дисковой подсистемы.
2. Используемые коллекторы
Дашборд наиболее требователен к набору метрик, так как использует данные из всех подключенных источников:
- gp-resgroup.collector.yml: Детальные метрики по квотам CPU/Memory и использованию ресурсов группами.
- greenplum-30-sec.collector.yml: Метрики спиллинга (gp_prf_spill...) и блокировок.
- greenplum-1-min.collector.yml: Статус сегментов и канарейка.
- node_exporter: Детальная статистика по дискам (IOPS, Queue, Bandwidth) и сети.
3. Детальное описание панелей
Секция 1: Status (Конфигурация и Здоровье)
Верхняя строка дублирует критические статусы, но добавляет информацию о квотах.
| Панель | Метрика (PromQL) | Описание и назначение |
|---|---|---|
| GP Cluster Status / Uptime | gp_master_up, gp_cluster_up_time | Базовые индикаторы доступности кластера. |
| Swapped roles / Not active Segments | gp_segm_info | Индикаторы целостности данных. Если значения > 0, производительность кластера уже деградировала из-за потери сегментов. |
| CPU / Memory Quoted For RGs | gp_res_group_qoute | Конфигурация квот. Показывает настроенные лимиты (cpu_rate_limit, memory_limit) для каждой ресурсной группы. Позволяет быстро проверить, не "зажат" ли пользователь конфигурацией. |
Секция 2: Performance (Производительность ядра)
Ключевая секция для оценки работы самого Greenplum.
| Панель | Визуализация | Метрика | Описание и Анализ |
|---|---|---|---|
| GP System Catalog Access Time | Time Series | greenplum_canary | Время доступа к системному каталогу. Резкие скачки (спайки) указывают на глобальные блокировки каталога (catalog locks), часто вызванные DDL-операциями. |
| GP Cluster Spill Total Size | Time Series | gp_prf_spill_size_total | Критическая метрика. Общий объем данных, сброшенных на диск из-за нехватки оперативной памяти (Statement Mem). Рост графика коррелирует с падением производительности. |
| GP Cluster Spill Skew (CV) | Time Series | gp_prf_spill_..._skew_cv | Коэффициент вариации спиллинга. • Показывает перекос вычислений. Если значение высокое, значит один сегмент "спиллит" намного сильнее остальных. Это указывает на плохой ключ дистрибуции в запросе (DISTRIBUTED BY). |
| GP Connection Pool Utilization | Time Series | gp_sess_info | Состояние пула соединений: сколько сессий активно, сколько простаивает, сколько ждет. |
| GP Active Connections | Time Series | gp_sess_info | Детальный вид активных сессий с разделением на active (работают), waiting (ждут ресурсов) и lock (ждут логической блокировки). |
Секция 3: Resource Groups (Управление нагрузкой)
Самая подробная секция для анализа того, кто потребляет ресурсы.
| Панель | Метрика | Описание |
|---|---|---|
| Actual Resource Group Quotas | gp_res_group_qoute | Таблица с текущими настройками групп. Справочная информация. |
| Resource Groups Concurrency Utilization | gp_resgroup_utilization | Процент занятых слотов выполнения. Если 100% — новые запросы встают в очередь (queueing). |
| CPU / Memory usage by RG | gp_percentage_..._quota_used | Реальное потребление ресурсов относительно выделенной квоты. Помогает понять, какая группа утилизирует свои лимиты полностью. |
| Session State, By Resource Group | gp_sessions_by_resgroup | Разделение сессий по состояниям внутри каждой группы. Помогает найти группу с большим количеством idle или waiting сессий. |
| Spill Usage by RG (Size/Filecount) | gp_res_grp_spill_used | Атрибуция проблем. Показывает, какая именно ресурсная группа виновата в высоком спиллинге (см. Секцию 2). |
| Session Blocked, By Resource Group | gp_prf_res_grp_blockers | Показывает, сессии какой группы создаютблокировки (blockers), мешая работать другим. |
Секция 4: Hosts Performance (Железо и Диски)
Секция сфокусирована на физическом уровне, с особым фильтром для дисков данных.
Все дисковые метрики используют фильтр mountpoint=\~"/data.*", чтобы исключить системные разделы и показывать только нагрузку от сегментов БД.
| Панель | Метрика (PromQL) | Описание и Важность |
|---|---|---|
| CPU usage / Load Average | node_cpu..., node_load5 | Стандартные метрики загрузки процессора. |
| GP Cluster Network Traffic | node_network_... | Сетевой трафик (Interconnect). Высокий трафик при простых запросах может указывать на Broadcast Motion (неоптимальный план запроса). |
| Datafiles Storage Disks I/O Utilization | node_disk_io_time_seconds_total | Утилизация диска (%). Насколько плотно загружен диск по времени. Близко к 100% — диск является бутылочным горлышком. |
| Datafiles Storage Disks Average Queue Size | node_disk_io_time_weighted... | Длина очереди диска. Самый точный индикатор перегрузки I/O. Значения > 1-2 говорят о том, что запросы встают в очередь на уровне контроллера диска. |
| Datafiles Storage Disks BW | node_disk_read/written_bytes | Пропускная способность (Bandwidth) в Байтах/сек. Помогает понять характер нагрузки (seq scan vs random access). |
| Datafiles Storage Disks IOps | node_disk_reads/writes_completed | Количество операций в секунду (IOPS). Важно для оценки нагрузки на SSD/HDD массивы. |
[GP6] - Resource Groups Detailed
1. Общее назначение
Дашборд Resource Groups Detailed ("Детальный анализ ресурсных групп") является самым низкоуровневым и наиболее оперативным (Real-time) инструментом мониторинга ресурсов.
Он предназначен для:
- Анализа в режиме Live (интервал сбора метрик 8 секунд, как в gp-resgroup.collector.yml).
- Точной локализации проблем с памятью и CPU в разрезе отдельных сегментов и ресурсных групп.
- Проверки правильности распределения нагрузки.
- Диагностики причин постановки запросов в очередь (queueing).
Этот дашборд используется при активном поиске узких мест (bottlenecks) в конкретный момент времени, когда другие дашборды (Healthcheck, Performance Details) уже показали, что проблема связана с управлением ресурсами.
2. Используемые коллекторы
Дашборд практически полностью зависит от одного источника:
- gp-resgroup.collector.yml: Основной и единственный источник данных. Он собирает метрики с высокой частотой (8 секунд) и с детализацией до каждого сегмента (segment_id).
- node_exporter: Неявно используется для получения hostname и segment_id из конфигурации.
3. Детальное описание панелей
Дашборд структурирован логически по типу ресурса (CPU, Memory, Concurrency) и использует переменные $rsgname и $segment_id для фильтрации данных.
Секция 1: CPU Usage (Использование процессора)
| Панель | Визуализация | Метрика (PromQL) | Описание и Назначение |
|---|---|---|---|
| CPU Usage by Resource Group | Time Series | gp_resgroup_cpu_usage | Использование CPU. График показывает процент использования CPU каждой ресурсной группой ($rsgname) в агрегации по всем сегментам. • Позволяет увидеть, какая группа является "потребителем" CPU. |
| CPU Usage per Segment | Time Series | gp_resgroup_cpu_usage | Нагрузка на CPU по сегментам. Отображает утилизацию CPU в разрезе каждого отдельного сегмента ($segment_id). • Важно: Помогает выявить перекос вычислений (CPU Skew): если один сегмент загружен на 90%, а остальные на 10-20%, значит, планировщик неэффективно распределил работу. |
| Running / Queueing Queries | Time Series | gp_resgroup_num_running, gp_resgroup_num_queueing | Очередь конкурентности. Показывает количество запросов, которые: • running: Выполняются (счетчик успеха). • queueing: Стоят в очереди на слот конкурентности (счетчик проблемы). |
Секция 2: Memory Usage (Использование памяти)
В Greenplum память делится на Quota (фиксированный лимит) и Shared (разделяемая память, которую можно получить сверх лимита).
| Панель | Визуализация | Метрика (PromQL) | Описание и Назначение |
|---|---|---|---|
| Memory Used by Resource Group (Bytes) | Time Series | gp_resgroup_memory_used | Фактическое использование памяти. Общий объем памяти (в байтах), используемый каждой группой. Резкий рост часто предшествует спиллингу (spill) или ошибке "Out of Memory". |
| Memory Quota Used per Segment | Time Series | gp_resgroup_memory_quota_used | Использование фиксированной квоты памяти в разрезе каждого сегмента. • Контроль за тем, чтобы сегменты не исчерпали свои гарантированные лимиты. |
| Shared Memory Used per Segment | Time Series | gp_resgroup_memory_shared_used | Использование разделяемой памяти. Если этот график растет, значит, группа исчерпала свою основную квоту и начала потреблять память из общего пула. Это может привести к конфликтам с другими группами - Resource Groups Detailed-1764855740209.json]. |
| Available Memory Quota per Segment | Time Series | gp_resgroup_memory_quota_available | Остаток доступной квоты памяти.Панель показывает, сколько еще памяти можно выделить запросам в рамках лимитов группы. |
Секция 3: Concurrency and Status (Конкурентность и Статус)
Эта секция анализирует управление потоком запросов.
| Панель | Визуализация | Метрика (PromQL) | Описание и Назначение |
|---|---|---|---|
| Total Queries Executed | Time Series (Counter) | gp_resgroup_num_executed | Общее количество выполненных запросов. Это счетчик. Изменение его скорости (rate()) показывает пропускную способность (throughput) каждой ресурсной группы. |
| Actual Concurrency (Per Segment) | Time Series | gp_resgroup_num_running (фильтр по $segment_id) | Конкурентность на сегменте.Показывает, сколько запросов фактически выполняется на отдельном сегменте. • Неравномерное распределение между сегментами здесь также указывает на Skew. |
| Queued Queries (Total) | Time Series | gp_resgroup_num_queued | Общее число запросов в очереди (на слот конкурентности). Это прямая индикация того, что concurrencyлимиты групп слишком низкие для текущей нагрузки. |
| Memory Available (Shared) | Time Series | gp_resgroup_memory_shared_available | Доступная разделяемая память. Показывает остаток памяти в общем пуле, которую могут использовать группы, исчерпавшие свои квоты. |
Services (Служебные метрики)
1. Общее назначение
Дашборд Services предназначен для мониторинга "гигиены" базы данных, ее критически важных внутренних механизмов (кеширование, статистика) и ограничений операционной системы (количество файлов).
Этот дашборд используется для:
- Оценки качества обслуживания (плановое выполнение ANALYZE).
- Проверки использования внутреннего кеша БД (shared_buffers).
- Раннего обнаружения проблем, связанных с лимитами файловой системы (inodes) из-за особенностей Append-Optimized таблиц Greenplum.
- Выявления пользователей или групп, которые генерируют наибольшее количество дискового сброса (Spill).
2. Используемые коллекторы
Дашборд практически полностью опирается на один специализированный коллектор:
- services.collector.yml: Содержит уникальные метрики, связанные с файловой системой, Shared Buffers и статистикой.
- node_exporter: Неявно может использоваться для получения информации о хостах (но основные метрики БД — из services.collector.yml).
3. Детальное описание панелей
Секция 1: Audit & Analysis (Аудит и Статистика)
Панели в этой секции следят за актуальностью метаданных, что напрямую влияет на качество планов запросов.
| Панель | Визуализация | Метрика (PromQL) | Описание и Назначение |
|---|---|---|---|
| Unanalyzed Tables (Last 3 Days Count) | Stat | polled_not_analyzed_count | Критично для планировщика.Показывает количество таблиц, которые были изменены, но не были проанализированы (ANALYZE) более 3 дней. • Высокое значение приводит к тому, что планировщик использует устаревшую статистику, генерируя неэффективные и медленные планы запросов. |
| Tables Count | Stat | gp_obj_count | Общее количество таблиц в базе данных. • Резкий рост может указывать на неконтролируемое создание временных или служебных таблиц, что увеличивает нагрузку на системный каталог. |
| File Count | Stat | files_count | Общее количество физических файловбазы данных на всех сегментах. • Важно для Greenplum: AO-таблицы (Append-Optimized) создают много файлов. Эта метрика предотвращает исчерпание инодов (inodes) в файловой системе. |
| Polled Tables Count (Last 24h) | Stat | last_24h_poll_count | Самодиагностика мониторинга.Количество таблиц, по которым мониторинг успешно собрал статистику за последние 24 часа. • Если значение резко падает до нуля, это означает, что коллектор аудита перестал работать. |
Секция 2: Caching and Memory (Кэширование и Память)
| Панель | Визуализация | Метрика (PromQL) | Описание и Назначение |
|---|---|---|---|
| Shared Buffers | Time Series | gp_shared_buffers_master(master), gp_shared_buffers_avg (segments avg), gp_shared_buffers_max (segments max) | Утилизация буферного кэша. Показывает процент использования shared_buffers на мастере и сегментах. • Если линия seg_max постоянно близка к 100%, это означает, что сегменты испытывают сильное давление на кеш, что увеличивает дисковый I/O. |
| Top Users By Spill Size | Table | gp_spill_files_users | Атрибуция проблем с памятью. Топ-пользователи и ресурсные группы, которые генерируют наибольший объем сброса данных на диск (Spill). • Spill происходит, когда запросу не хватает выделенной рабочей памяти (Work Mem), что критически замедляет его выполнение. Эта таблица помогает найти виновника. |
Секция 3: Storage Skew (Перекос данных по сегментам)
| Панель | Визуализация | Метрика (PromQL) | Описание и Назначение |
|---|---|---|---|
| Files Count By Segment | Table | files_count_by_seg | Перекос файловой системы. Таблица показывает количество файлов в директории данных для каждого отдельного сегмента (Primary и Mirror). • Высокий Skew: Если один сегмент имеет значительно больше файлов, чем остальные, это указывает на сильный перекос данных (Data Skew) или на проблему с автоматическим управлением партициями. |
| Total Objects By Type | Table | gp_obj_count | Сводная информация о количестве объектов по типам (обычные таблицы, AO, внешние и т.д.). Помогает понять общую структуру базы. |