Мониторинг транзакций

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

Список транзакций

Online

На вкладке Monitoring → Transactions → Online выводятся транзакции, которые выполняются в текущий момент времени (в статусе Active).

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

adbc transactions online dark
Вкладка Monitoring → Transactions → Online
adbc transactions online light
Вкладка Monitoring → Transactions → Online

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

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

Transaction ID

Уникальный идентификатор транзакции

Status

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

Cluster

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

Database

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

Resource group

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

Username

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

Started

Дата и время запуска транзакции в формате DD/MM/YYYY HH:mm:ss

Tags

Теги транзакции

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

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

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

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

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

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

History

На вкладке Monitoring → Transactions → History выводятся транзакции в следующих статусах:

  • Committed — успешно завершенные транзакции.

  • Aborted — прерванные транзакции.

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

adbc transactions history dark
Вкладка Monitoring → Transactions → History
adbc transactions history light
Вкладка Monitoring → Transactions → History

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

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

Над таблицей со списком транзакций расположен фильтр Cluster, описание которого было приведено выше.

Детали транзакции

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

adbc transactions online4 dark
Выбор транзакции
adbc transactions online4 light
Выбор транзакции

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

Заголовок

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

  • Уникальный идентификатор (см. Transaction ID выше). В примере ниже — 696994.

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

  • Составной идентификатор транзакции (в примере ниже — 1695219736-11866-12-7156—​209077013), включающий:

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

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

    • номер транзакции в рамках сессии;

    • lxid транзакции на мастере;

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

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

  • Кнопки Cancel и Terminate для отмены выполняющихся транзакций. Подробную информацию можно получить в разделе Отмена транзакции.

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

Overview

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

  • Ended — дата и время завершения транзакции в формате DD/MM/YYYY HH:mm:ss. Для еще не завершенных транзакций в поле выводится -.

  • Session ID — идентификатор сессии, в рамках которой запущена транзакция.

  • Process ID — идентификатор процесса, в рамках которого запущена транзакция.

adbc transaction details2 dark
Секция Overview
adbc transaction details2 light
Секция Overview
ПРИМЕЧАНИЕ

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

Performance

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

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

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

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

adbc transaction details6 dark
Вывод подробных описаний метрик
adbc transaction details6 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 transaction details4 dark
Вывод метрик по каждому сегменту в секции Performance
adbc transaction details4 light
Вывод метрик по каждому сегменту в секции Performance
ВАЖНО

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

Commands

В секции Commands выводится информация о командах, созданных внутри текущей транзакции.

Поля секции Commands
Поле Описание

Command ID

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

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

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

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

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

При нажатии на идентификатор можно перейти на страницу с детальной информацией о команде

SQL ID

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

Command text

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

CCNT

Порядковый номер команды в рамках сессии

Status

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

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

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

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

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

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

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

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

Planner

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

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

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

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

Resource group

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

Run time

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

adbc transaction details5 2 dark
Секция Commands
adbc transaction details5 2 light
Секция Commands

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

  • Search command text…​ — фильтрация по тексту команды (см. Command text выше). Поиск возможен по любой подстроке исходного SQL-запроса.

  • Search CCNT…​ — фильтрация по номеру команды в рамках сессии (см. CCNT выше). Искомое значение вводится полностью.

  • Search SQL ID…​ — фильтрация по идентификатору, объединяющему SQL-команды с одинаковой структурой (см. SQL ID выше). Искомое значение вводится полностью.

  • Status — фильтрация по статусу команды (см. Status выше). Значение следует выбрать из выпадающего списка.

Отмена транзакции

На странице с детальной информацией о выполняющейся транзакции существует возможность ее отмены путем нажатия на одну из следующих кнопок:

  • Cancel — вызывает функцию pg_cancel_backend, отменяющую транзакцию в обслуживающем процессе.

  • Terminate — вызывает функцию pg_terminate_backend, завершающую обслуживающий процесс, в котором выполняется транзакция.

После нажатия на кнопку требуется подтвердить операцию во всплывающем окне.

adbc transaction cancel dark
Подтверждение операции Cancel
adbc transaction cancel light
Подтверждение операции Cancel
adbc transaction terminate dark
Подтверждение операции Terminate
adbc transaction terminate light
Подтверждение операции Terminate

После успешной отмены транзакция приобретает статус Aborted, а входящие в ее состав команды — Cancelled.

ВАЖНО
  • Отмена транзакции доступна только при наличии соответствующих разрешений у пользователя (см. разрешения Kill self queries, Kill some queries, Kill all queries в статье Авторизация).

  • Отмена возможна только для выполняющихся транзакций. Для транзакций, открытых на вкладке History, кнопки Cancel и Terminate недоступны.

  • Отмена и прерывание транзакций фиксируются в рамках аудита операций под именами Cancel и Terminate, соответственно (тип объекта Transaction). Просмотр событий аудита доступен на странице Audit → Operations.

Смена ресурсной группы для транзакции

Чтобы изменить ресурсную группу для выбранной транзакции, выполните следующие шаги:

  1. Перейдите в окно с детальной информацией о транзакции, как описано выше.

  2. Нажмите на название ресурсной группы в секции Overview.

    adbc transaction details rg open dark
    Переход к смене ресурсной группы
    adbc transaction details rg open light
    Переход к смене ресурсной группы
  3. В открывшемся модальном окне выберите ресурсную группу из выпадающего списка Select resource group. При выборе ресурсной группы ее конфигурационные параметры отображаются в основной части окна.

  4. Нажмите Apply.

adbc transaction details rg dark
Смена ресурсной группы для транзакции
adbc transaction details rg light
Смена ресурсной группы для транзакции
ПРИМЕЧАНИЕ

Смена ресурсной группы фиксируется в рамках аудита операций под именем Resource group change (тип объекта Transaction). Просмотр событий аудита доступен на странице Audit → Operations.

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

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

ПРИМЕЧАНИЕ

На вкладке Online значения метрик выводятся на текущий момент времени, на вкладке History — на момент завершения транзакции.

Метрики транзакций
Группа Метрика Описание

CPU

CPU usage total

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

CPU avg usage %

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

CPU skew

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

RAM

RAM current

Текущая величина общего объема памяти RAM, потребляемого на уровне кластера (в байтах)

RAM max

Максимальная величина общего объема памяти RAM, использованного на уровне кластера за время выполнения транзакции (в байтах)

RAM average

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

RAM skew

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

Virtual memory

Virtual memory current

Текущая величина общего объема виртуальной памяти, потребляемого на уровне кластера (в байтах)

Virtual memory max

Максимальная величина общего объема виртуальной памяти, использованного на уровне кластера за время выполнения транзакции (в байтах)

Virtual memory average

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

Virtual memory skew

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

Read

Read per sec

Текущий показатель скорости чтения данных в секунду на уровне кластера (в байтах)

Read total

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

Read avg per sec

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

Read skew

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

Write

Write per sec

Текущий показатель скорости записи данных в секунду на уровне кластера (в байтах)

Write total

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

Write avg per sec

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

Write skew

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

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