Мониторинг команд

Страница Monitoring → Commands в web-интерфейсе ADB Control предназначена для вывода SQL-команд, которые выполняются в кластерах ADB, подключенных для мониторинга. Страница состоит из двух вкладок Online и History, которые подробно описаны ниже.

  • По умолчанию в ADB Control фиксируются (и отображаются на странице Monitoring → Commands) SQL-запросы продолжительностью более 5 секунд. Начиная с ADB Control 4.3.2 лимит можно изменять с помощью конфигурационного параметра queryIdCache.moveToActiveTimeoutSeconds на стороне агента.

  • Начиная с версии ADB Control 4.1.0 в системе мониторинга по умолчанию фиксируются только верхнеуровневые запросы. То есть исключаются запросы, вызываемые в процессе обработки основного запроса — в рамках функций, SPI (Server Programming Interface) и т.д. Если необходимо включить мониторинг вложенных запросов, установите значение true для следующих GUC (начиная с версии 4.7.5 их редактирование доступно в интерфейсе ADB Control):

    • adcc.monitor_utility_inner_queries — определяет необходимость мониторинга вложенных запросов для utility-команд вида COPY, VACUUM, DDL-запросов и так далее.

    • adcc.monitor_inner_queries — определяет необходимость мониторинга вложенных запросов для иных команд.

Список команд

Online

На вкладке Monitoring → Commands → Online выводятся команды в следующих статусах:

  • Queued — команды, по которым еще не пришла информация о фактическом начале выполнения.

  • Running — команды, выполняющиеся в текущий момент времени.

  • Cancelling — команды, для которых осуществляется отмена (в рамках отмены либо прерывания соответствующей транзакции).

В верхней части вкладки содержится поле Current count, показывающее общее число команд в различных статусах во всех кластерах ADB, подключенных для мониторинга.

adbc commands online dark
Вкладка Monitoring → Commands → Online
adbc commands online light
Вкладка Monitoring → Commands → Online

Таблица, расположенная на вкладке Monitoring → Commands → Online, выводит следующую информацию о командах.

Поле Описание

Command ID

Уникальный идентификатор команды, включающий:

  • временную метку старта кластера;

  • номер сессии;

  • номер команды в рамках сессии;

  • хеш-код от имени кластера (может быть отрицательным).

Command text

Первые символы текста команды. Для вывода текста полностью (в случае длинных запросов) наведите курсор мыши на ячейку таблицы со значением

SQL ID

Идентификатор, являющийся общим для SQL-команд с одинаковой структурой

Username

Имя пользователя, запустившего команду

Status

Статус команды. Возможные значения см. выше

Database

Название базы данных, в которой запущена команда

Resource group

Название ресурсной группы, которая используется для команды

Cluster

Название кластера, в котором запущена команда

Planner

Название оптимизатора запросов, используемого для построения плана выполнения команды. Возможные значения:

  • GPORCA — план запроса построен с использованием оптимизатора GPORCA (optimizer = on).

  • Fallbacked — после неудачной попытки построения плана с помощью GPORCA (optimizer = on) использован оптимизатор Postgres.

  • Legacy — план запроса построен с помощью Postgres query optimizer (optimizer = off).

Submitted

Дата и время отправки команды пользователем в формате DD/MM/YYYY HH:mm:ss

Tags

Теги команды

Run time

Общее время выполнения команды в часах, минутах и секундах

Возможно добавление дополнительных столбцов в таблицу с командами для отображения метрик, описание которых представлено ниже. Для добавления новых столбцов нажмите Customize table и отметьте столбцы в выпадающем списке.

adbc commands online2 dark
Добавление дополнительных столбцов
adbc commands online2 light
Добавление дополнительных столбцов

Над таблицей со списком команд расположен фильтр Cluster, в котором можно выбрать кластер ADB и его базы данных, для которых требуется вывести данные в таблице. По умолчанию выбраны все БД кластера, отмеченного как дефолтный в настройках ADB Control.

adbc commands online3 dark
Фильтрация по кластеру и БД
adbc commands online3 light
Фильтрация по кластеру и БД

В заголовках столбцов таблицы со списком команд расположены фильтры, которые можно использовать для отбора необходимых данных. Для открытия фильтра необходимо нажать на иконку openside dark openside light. Для тех столбцов, где набор возможных значений ограничен (например, Status), в фильтре можно выбрать значение из выпадающего списка. Для некоторых столбцов (например, Username) требуется ввести искомое значение. Для столбцов, показывающих дату и время (например, Submitted), временной диапазон можно выбрать из календаря.

Иконка filtered dark filtered light означает, что для столбца определен фильтр. Для сброса всех фильтров нажмите Reset.

History

На вкладке Monitoring → Commands → History выводятся команды в следующих статусах:

  • Done — успешно завершенные команды.

  • Cancelled — отмененные команды (в рамках отмены либо прерывания соответствующей транзакции).

  • Error — команды, во время выполнения которых произошла ошибка.

  • Unknown — команды, итоговый статус которых не был получен. Устанавливается по тайм-ауту для запросов в статусах Queued, Running, Cancelling, по которым не оказалось соответствующих записей в системном представлении pg_stat_activity.

adbc commands history dark
Вкладка Monitoring → Commands → History
adbc commands history light
Вкладка Monitoring → Commands → History

Большая часть полей в таблице со списком команд на вкладке History совпадает с полями, описанными выше для вкладки Online. Добавляется только следующее поле:

  • Ended — дата и время завершения команды в формате DD/MM/YYYY HH:mm:ss. Поле заполняется как в результате успешного выполнения, так и в случае ошибки или отмены выполнения.

Как и на вкладке Online, есть возможность добавления дополнительных столбцов в таблицу с командами — путем нажатия на кнопку Customize table.

Над таблицей со списком команд расположены фильтры, которые можно использовать для отбора необходимых данных. Наряду с описанным выше фильтром Cluster, на вкладке History доступны еще два фильтра:

  • Relation — фильтрация по названию используемого в запросе отношения. Искомое значение вводится полностью.

  • Schema — фильтрация по названию схемы БД, которой принадлежит используемое в запросе отношение. Искомое значение вводится полностью.

adbc commands history2 dark
Фильтры на вкладке Monitoring → Commands → History
adbc commands history2 light
Фильтры на вкладке Monitoring → Commands → History

Детали команды

Чтобы просмотреть детальную информацию о команде, нажмите на ее идентификатор (Command ID) в таблице на вкладке Monitoring → Commands → Online либо Monitoring → Commands → History.

adbc commands online4 dark
Выбор команды
adbc commands online4 light
Выбор команды

Следующая страница содержит несколько секций, описанных ниже.

Заголовок

В верхней части страницы выводится следующая информация о команде:

  • Уникальный идентификатор (см. Command ID выше). В примере ниже — 1695219736-11866-3—​209077013.

  • Статус (см. Status выше). В примере ниже — Running.

  • Порядковый номер в ADB Control (начиная с 1). Ведется сквозная нумерация по всем кластерам с самой первой зафиксированной команды. В примере ниже — 2683.

  • Transaction ID — идентификатор транзакции, при нажатии на который можно перейти к просмотру деталей транзакции.

  • Run time — время выполнения команды в часах, минутах, секундах.

adbc command details1 1 dark
Заголовок страницы с деталями команды
adbc command details1 1 light
Заголовок страницы с деталями команды

Overview

Секция Overview показывает базовую информацию о команде. В дополнение к полям, описанным выше, выводятся:

  • Run time — длительность выполнения команды в часах, минутах, секундах.

  • Est. progress — прогресс выполнения команды в процентах от спрогнозированного времени, рассчитываемый по формуле:

    где:

    • Est.Cost(x) — оценка стоимости узла плана запроса, сделанная планировщиком.

    • NodeProgress(x) — прогресс для каждого узла плана запроса, рассчитываемый по следующей формуле:

      где:

      • ActualRows — реальное количество извлеченных строк (кортежей).

      • EstimatedRows — предположение планировщика о количестве строк (кортежей), которое будет извлечено для текущего узла плана.

adbc command details1 2 dark
Секция Overview
adbc command details1 2 light
Секция Overview

Performance

Секция Performance показывает статистику потребления системных ресурсов выбранной командой. Метрики, используемые для мониторинга, приведены в разделе Метрики, собираемые для команд.

В верхней части секции Performance показываются усредненные значения по всем сегментам кластера с выводом "перекосов" (skew).

adbc command details2 dark
Вывод средних значений по кластеру в секции Performance
adbc command details2 light
Вывод средних значений по кластеру в секции Performance

Можно перейти к альтернативному варианту показа метрик, переведя переключатель под названием секции Performance в активное состояние. В результате отобразится таблица, где по каждой метрике выводится не только текущее значение, но и подробное описание.

adbc command details9 dark
Вывод подробных описаний метрик
adbc command details9 light
Вывод подробных описаний метрик

В нижней части секции Performance показываются значения метрик отдельно для каждого сегмента кластера, включая master-сегмент seg-1 (где Segment ID равен -1).

Поля таблицы с метриками по каждому сегменту
Поле Описание

Segment ID

Идентификатор сегмента. Ссылается на gp_segment_configuration.content. Дополнительную информацию можно получить в разделе Таблицы системного каталога → gp_segment_configuration статьи Таблицы

Hostname

Название хоста

CPU

Объем потребляемого CPU в сегменте (в процентах). На основе значений метрики для всех сегментов рассчитывается средняя величина CPU avg usage %

RAM

Объем потребляемой памяти RAM в сегменте (в байтах). На основе значений метрики для всех сегментов рассчитывается средняя величина RAM average

Read (per sec)

Скорость чтения данных в секунду в сегменте (в байтах). На основе значений метрики для всех сегментов рассчитывается средняя величина Read avg per sec

Write (per sec)

Скорость записи данных в секунду в сегменте (в байтах). На основе значений метрики для всех сегментов рассчитывается средняя величина Write avg per sec

Virtual memory

Объем потребляемой виртуальной памяти в сегменте (в байтах). На основе значений метрики для всех сегментов рассчитывается средняя величина Virtual memory average

adbc command details3 dark
Вывод метрик по каждому сегменту в секции Performance
adbc command details3 light
Вывод метрик по каждому сегменту в секции Performance
ВАЖНО

Запрос системных метрик на сегментах ADB производится агентами ADB Control только для команд с продолжительностью дольше 15 секунд. Поэтому для команд, которые успевают завершиться быстрее этого времени, секция с метриками будет пустой.

Command text

Секция Command text показывает текст запроса, который можно скопировать нажав на иконку copy hover dark copy hover light в верхнем правом углу фрагмента с кодом.

adbc command details4 1 dark
Секция Command text
adbc command details4 1 light
Секция Command text

Секции с планом выполнения

Под секцией Command text расположены несколько вкладок, показывающих детали выполнения запроса:

  • Plan & progress

  • Text

  • Relations

Первая вкладка Plan & progress содержит графическое представление плана запроса в виде дерева. Выполнение производится снизу вверх — от дочерних узлов к корневому. Выполняющиеся узлы плана отмечаются иконкой running plan, завершенные — finished plan. В каждом узле плана отображается тип выполняемой операции, а также следующая информация:

  • Если запрос к БД выполняется:

    • Фактическое число извлеченных кортежей на текущий момент. Параметр обновляется в процессе выполнения.

  • Если запрос к БД завершен:

    • Общее фактическое время выполнения узла плана.

    • Общее фактическое число извлеченных кортежей.

    • Отношение времени обработки узла плана к общему времени выполнения запроса (в процентах).

Узлы плана, относящиеся к одному слайсу, выделяются одинаковым цветом.

adbc command details4 2 dark
Вкладка Plan & progress
adbc command details4 2 light
Вкладка Plan & progress

При нажатии на узел плана в правой части экрана открывается панель с дополнительной информацией.

Информация об узле плана
Поле Описание

Cost

Коэффициент трудоемкости выполнения узла плана

Relation

Используемое отношение

Row skew

"Перекос" в данных (skew). Разность между единицей и отношением среднего значения количества кортежей, полученных с сегментов, к максимальному:

Est.tuples

Прогнозируемое количество кортежей, которое потребуется извлечь на текущем этапе выполнения плана

Actual tuples

Реальное количество извлеченных кортежей

Prediction accuracy

Отношение реального количества извлеченных кортежей к спрогнозированному (в процентах). Значение, превышающее 100%, указывает на то, что планировщик сделал неправильное предположение о количестве кортежей, которое потребуется извлечь при выполнении узла плана (их оказалось больше)

Operation keys

Дополнительные условия, используемые при выполнении некоторых операций. Например, Hash Key, Join Filter, Merge Key, Filter

Execution time

Время выполнения узла плана в часах, минутах, секундах

adbc command details5 dark
Информация об узле плана
adbc command details5 light
Информация об узле плана

Следующая вкладка Text выводит текстовое представление плана запроса, которое является результатом выполнения команды EXPLAIN. Текст можно скопировать нажав на иконку copy hover dark copy hover light в верхнем правом углу фрагмента с кодом.

adbc command details6 2 dark
Вкладка Text
adbc command details6 2 light
Вкладка Text

Кнопка PlanChecker открывает текст плана в web-интерфейсе сервиса PlanChecker, где можно получить детальную информацию о возможных проблемах производительности при выполнении текущего SQL-запроса.

adbc command details7 dark
PlanChecker
adbc command details7 light
PlanChecker

Последняя вкладка Relations выводит список отношений, используемых в запросе. Для каждого отношения наряду с именем отображается название соответствующей схемы БД.

ПРИМЕЧАНИЕ

Нажав на конкретную строку в таблице со списком отношений, можно перейти к просмотру деталей аудита обращений к выбранному отношению. Этот функционал доступен для пользователей ADB Control с соответствующими разрешениями (см. View secured relation audit в статье Авторизация).

adbc command details8 2 dark
Вкладка Relations
adbc command details8 2 light
Вкладка Relations

Метрики, собираемые для команд

Обе рассмотренные выше вкладки Online и History позволяют посмотреть статистику потребления системных ресурсов запущенными командами (на вкладке Performance в деталях команды). Доступные для команд метрики описаны ниже.

ПРИМЕЧАНИЕ
  • На вкладке Online значения метрик выводятся на текущий момент времени, на вкладке History — на момент завершения команды.

  • На вкладке Online не рассчитываются следующие метрики: Spill files max и Spill files skew.

  • При расчете средних значений и "перекосов" (skew) не учитывается master-сегмент (где Segment ID равен -1).

Метрики команд
Группа Метрика Описание

CPU

CPU usage total

Общее время потребления CPU по сегментам кластера (в секундах)

CPU avg usage %

Средний объем потребляемого CPU по сегментам кластера (в процентах). Потребление CPU в каждый конкретный момент рассчитывается на основе информации о процессорном времени из /proc/[pid]/stat операционной системы как дельта между текущим и предыдущим значением

CPU skew

Показатель, отражающий "перекос" (skew) в потреблении CPU по сегментам кластера (в процентах). Значение, отличное от нуля, говорит о том, что один из сегментов использует больший объем CPU, чем остальные

RAM

RAM average

Средний объем потребляемой памяти RAM по сегментам кластера (в байтах). Потребление RAM в каждый конкретный момент рассчитывается на основе метрики rss (Resident Set Size) из операционной системы

RAM skew

Показатель, отражающий "перекос" (skew) в потреблении RAM по сегментам кластера (в процентах). Значение, отличное от нуля, говорит о том, что один из сегментов использует больший объем RAM, чем остальные

Virtual memory

Virtual memory average

Средний объем потребляемой виртуальной памяти по сегментам кластера (в байтах). Потребление виртуальной памяти в каждый конкретный момент рассчитывается на основе метрики vsize (Virtual Memory Size) из операционной системы

Virtual memory skew

Показатель, отражающий "перекос" (skew) в потреблении виртуальной памяти по сегментам кластера (в процентах). Значение, отличное от нуля, говорит о том, что один из сегментов использует больший объем виртуальной памяти, чем остальные

Read

Read total

Общий объем прочитанных данных по сегментам кластера (в байтах). Для расчета используется следующая формула:

Read avg per sec

Усредненный показатель скорости чтения данных в секунду по сегментам кластера (в байтах). Скорость чтения в каждый конкретный момент рассчитывается на основе информации об I/O Read из /proc/[pid]/stat операционной системы как дельта между текущим и предыдущим значением

Read skew

Показатель, отражающий "перекос" в чтении данных по сегментам кластера (в процентах). Значение, отличное от нуля, говорит о том, что один из сегментов считывает больший объем с диска, чем остальные

Write

Write total

Общий объем записанных данных по сегментам кластера (в байтах). Для расчета используется следующая формула:

Write avg per sec

Усредненный показатель скорости записи данных в секунду по сегментам кластера (в байтах). Скорость записи в каждый конкретный момент рассчитывается на основе информации об I/O Write из /proc/[pid]/stat операционной системы как дельта между текущим и предыдущим значением

Write skew

Показатель, отражающий "перекос" (skew) в записи данных по сегментам кластера (в процентах). Значение, отличное от нуля, говорит о том, что один из сегментов записывает на диск больший объем, чем остальные

Spill files

Spill files host

Общий объем spill-файлов на хостах кластера (в байтах)

Spill files max

Максимальный объем использованных spill-файлов по сегментам кластера (в байтах) за время выполнения команды

Spill files skew

Показатель, отражающий "перекос" (skew) в объеме созданных на хостах кластера spill-файлов (в процентах) на момент времени, в который наблюдалась величина Spill Files (max). Значение, отличное от нуля, говорит о том, что один из сегментов использовал больший объем spill-файлов, чем остальные. Вычисление производится на основе следующей формулы:

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней