Skip to content

Описание релиза мониторинга

Описание коллекторов 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 определены функции и права, необходимые для работы коллекторов:

  1. do_awh_toolkit.pg_stat_activity(): Обертка с SECURITY DEFINER. Позволяет обычному пользователю мониторинга видеть процессы всех пользователей.
  2. do_awh_toolkit.canary_query(): Сложная PL/pgSQL функция.
  3. Создает временную таблицу canary_time_test_table_....
  4. Вставляет данные, меняет структуру, создает view, чистит, удаляет.
  5. Возвращает время каждого шага.
  6. Тест работоспособности файловой системы и каталога.
  7. do_awh_toolkit.count_files_in_db(): Python-функция (plpythonu).
  8. Идет в директорию base/\<oid_db> на сервере.
  9. Считает реальное количество файлов.
  10. Необходима, так как Greenplum создает много файлов для Append-Optimized таблиц, и можно упереться в лимиты OS.

Описание Дашбордов

Daily Checks

1. Общее назначение

Дашборд Daily Checks («Ежедневные проверки») предназначен для регулярного аудита состояния кластера Greenplum.

Основные задачи дашборда:

  • Контроль актуальности статистики и аудита таблиц.
  • Выявление проблем физического проектирования: перекосы данных (skew), чрезмерное партиционирование, раздувание таблиц (bloat).
  • Мониторинг заполненности дисков на уровне ОС.
  • Анализ скорости роста данных за последние сутки.

2. Используемые коллекторы

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

  1. greenplum-20-min.collector.yml: Основной источник данных. Содержит «тяжелые» запросы с префиксом gp_dc_ (Daily Checks), которые выполняются редко (раз в 20 минут).
  2. greenplum-30-sec.collector.yml: Используется для отображения текущей сессионной нагрузки (gp_sess_info, gp_resgroup_utilization).
  3. 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. Используемые коллекторы

Дашборд объединяет данные из нескольких источников для полной картины:

  1. greenplum-1-min.collector.yml: Статус мастера, сегментов и синтетические тесты ("канарейка").
  2. greenplum-30-sec.collector.yml: Сессии, блокировки и утилизация ресурсных групп.
  3. node_exporter: Нагрузка на "железо" (CPU, Disk I/O, Time Drift).
  4. 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. Используемые коллекторы

Дашборд наиболее требователен к набору метрик, так как использует данные из всех подключенных источников:

  1. gp-resgroup.collector.yml: Детальные метрики по квотам CPU/Memory и использованию ресурсов группами.
  2. greenplum-30-sec.collector.yml: Метрики спиллинга (gp_prf_spill...) и блокировок.
  3. greenplum-1-min.collector.yml: Статус сегментов и канарейка.
  4. 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. Используемые коллекторы

Дашборд практически полностью зависит от одного источника:

  1. gp-resgroup.collector.yml: Основной и единственный источник данных. Он собирает метрики с высокой частотой (8 секунд) и с детализацией до каждого сегмента (segment_id).
  2. 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. Используемые коллекторы

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

  1. services.collector.yml: Содержит уникальные метрики, связанные с файловой системой, Shared Buffers и статистикой.
  2. 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, внешние и т.д.). Помогает понять общую структуру базы.