Мониторинг транзакций
Страница Monitoring → Transactions в web-интерфейсе ADB Control предназначена для вывода транзакций, которые выполняются в кластерах ADB, подключенных для мониторинга. Страница состоит из двух вкладок Online и History, которые подробно описаны ниже.
Список транзакций
Online
На вкладке Monitoring → Transactions → Online выводятся транзакции, которые выполняются в текущий момент времени (в статусе Active).
В верхней части вкладки содержится поле Current count, показывающее общее число активных транзакций во всех кластерах ADB, подключенных для мониторинга.
 
 
Таблица, расположенная на вкладке Monitoring → Transactions → Online, выводит следующую информацию о транзакциях.
| Поле | Описание | 
|---|---|
| Transaction ID | Уникальный идентификатор транзакции | 
| Status | Статус транзакции. Возможные значения см. выше | 
| Cluster | Название кластера, в котором запущена транзакция | 
| Database | Название базы данных, в которой запущена транзакция | 
| Resource group | Название ресурсной группы, которая используется для транзакции | 
| Username | Имя пользователя, запустившего транзакцию | 
| Started | Дата и время запуска транзакции в формате  | 
| Tags | Теги транзакции | 
Возможно добавление дополнительных столбцов в таблицу с транзакциями для отображения метрик, описание которых представлено ниже. Для добавления новых столбцов нажмите Customize table и отметьте столбцы в выпадающем списке.
 
 
Над таблицей со списком транзакций расположен фильтр Cluster, в котором можно выбрать кластер ADB и его базы данных, для которых требуется вывести данные в таблице. По умолчанию выбраны все БД кластера, отмеченного как дефолтный в настройках ADB Control.
 
 
В заголовках столбцов таблицы со списком транзакций
расположены фильтры, которые можно использовать для отбора необходимых данных. Для открытия фильтра необходимо нажать на иконку  
. Для тех столбцов, где набор возможных значений ограничен (например, Status), в фильтре можно выбрать значение из выпадающего списка.
Для некоторых столбцов (например, Username) требуется ввести искомое значение.
Для столбцов, показывающих дату и время (например, Started), временной диапазон можно выбрать из календаря.
Иконка  
 означает, что для столбца определен фильтр. Для сброса всех фильтров нажмите Reset.
History
На вкладке Monitoring → Transactions → History выводятся транзакции в следующих статусах:
- 
Committed— успешно завершенные транзакции.
- 
Aborted— прерванные транзакции.
- 
Unknown— транзакции, итоговый статус которых не был получен. Устанавливается по тайм-ауту для транзакций в статусеActive, по которым не оказалось соответствующих записей в системном представленииpg_stat_activity.
 
 
Большая часть полей в таблице со списком транзакций на вкладке History совпадает с полями, описанными выше для вкладки Online. Добавляется только одно поле Ended — дата и время завершения транзакции в формате DD/MM/YYYY HH:mm:ss. Поле заполняется как в результате успешного выполнения, так и в случае ошибки или отмены выполнения.
Как и на вкладке Online, есть возможность добавления дополнительных столбцов в таблицу с транзакциями — путем нажатия на кнопку Customize table.
Детали транзакции
Чтобы просмотреть детальную информацию о транзакции, нажмите на ее идентификатор (Transaction ID) в таблице на вкладке Monitoring → Transactions → Online либо Monitoring → Transactions → History.
 
 
Следующая страница содержит несколько секций, описанных ниже.
Заголовок
В верхней части страницы выводится следующая информация о транзакции:
- 
Уникальный идентификатор (см. Transaction ID выше). В примере ниже — 696994.
- 
Статус (см. Status выше). В примере ниже — Active.
- 
Составной идентификатор транзакции (в примере ниже — 1695219736-11866-12-7156—209077013), включающий:- 
временную метку старта кластера; 
- 
номер сессии; 
- 
номер транзакции в рамках сессии; 
- 
lxidтранзакции на мастере;
- 
хеш-код от имени кластера (может быть отрицательным). 
 
- 
- 
Run time — время выполнения транзакции в часах, минутах, секундах. 
- 
Кнопки Cancel и Terminate для отмены выполняющихся транзакций. Подробную информацию можно получить в разделе Отмена транзакции. 
 
 
Overview
Секция Overview показывает базовую информацию о транзакции. В дополнение к полям, описанным выше, выводятся:
- 
Ended — дата и время завершения транзакции в формате DD/MM/YYYY HH:mm:ss. Для еще не завершенных транзакций в поле выводится-.
- 
Session ID — идентификатор сессии, в рамках которой запущена транзакция. 
- 
Process ID — идентификатор процесса, в рамках которого запущена транзакция. 
 
 
| ПРИМЕЧАНИЕ Нажав на название ресурсной группы в секции Overview, можно перейти в отдельное окно, где доступна смена ресурсной группы. | 
Performance
Секция Performance показывает статистику потребления системных ресурсов выбранной транзакцией. Метрики, используемые для мониторинга, приведены в разделе Метрики, собираемые для транзакций.
В верхней части секции Performance показываются текущие и усредненные значения по всем сегментам кластера с выводом "перекосов" (skew).
 
 
Можно перейти к альтернативному варианту показа метрик, переведя переключатель под названием секции Performance в активное состояние. В результате отобразится таблица, где по каждой метрике выводится не только текущее значение, но и подробное описание.
 
 
В нижней части секции Performance показываются значения метрик отдельно для каждого сегмента кластера, включая мастер-сегмент seg-1 (где Segment ID равен -1).
| Поле | Описание | 
|---|---|
| Segment ID | Уникальный идентификатор сегмента данных. Ссылается на  | 
| 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 | 
 
 
| ВАЖНО Запрос системных метрик на сегментах ADB производится агентами ADB Control только для транзакций с продолжительностью дольше 15 секунд. Поэтому для транзакций, которые успевают завершиться быстрее этого времени, секция с метриками будет пустой. | 
Commands
В секции Commands выводится информация о командах, созданных внутри текущей транзакции.
| Поле | Описание | 
|---|---|
| Command ID | Уникальный идентификатор команды, включающий: 
 При нажатии на идентификатор можно перейти на страницу с детальной информацией о команде | 
| SQL ID | Идентификатор, являющийся общим для SQL-команд с одинаковой структурой | 
| Command text | Первые символы текста команды. Для вывода текста полностью (в случае длинных запросов) наведите курсор мыши на ячейку таблицы со значением | 
| CCNT | Порядковый номер команды в рамках сессии | 
| Status | Статус команды. Возможные значения: 
 | 
| Planner | Название оптимизатора запросов, используемого для построения плана выполнения команды. Возможные значения: 
 | 
| Resource group | Название ресурсной группы, которая используется для команды | 
| Run time | Время выполнения команды в часах, минутах, секундах | 
 
 
Над таблицей со списком команд расположены фильтры, которые можно использовать для отбора необходимых данных:
- 
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, завершающую обслуживающий процесс, в котором выполняется транзакция.
После нажатия на кнопку требуется подтвердить операцию во всплывающем окне.
 
 
 
 
После успешной отмены транзакция приобретает статус Aborted, а входящие в ее состав команды — Cancelled.
| ВАЖНО 
 | 
Смена ресурсной группы для транзакции
Чтобы изменить ресурсную группу для выбранной транзакции, выполните следующие шаги:
- 
Перейдите в окно с детальной информацией о транзакции, как описано выше. 
- 
Нажмите на название ресурсной группы в секции Overview.  Переход к смене ресурсной группы Переход к смене ресурсной группы Переход к смене ресурсной группы Переход к смене ресурсной группы
- 
В открывшемся модальном окне выберите ресурсную группу из выпадающего списка Select resource group. При выборе ресурсной группы ее конфигурационные параметры отображаются в основной части окна. 
- 
Нажмите Apply. 
 
 
| ПРИМЕЧАНИЕ Смена ресурсной группы фиксируется в рамках аудита операций под именем  | 
Метрики, собираемые для транзакций
Обе рассмотренные выше вкладки Online и History позволяют посмотреть статистику потребления системных ресурсов запущенными транзакциями (на вкладке Performance в деталях транзакции). Доступные для транзакций метрики описаны ниже.
| ПРИМЕЧАНИЕ На вкладке Online значения метрик выводятся на текущий момент времени, на вкладке History — на момент завершения транзакции. | 
| Группа | Метрика | Описание | 
|---|---|---|
| CPU | CPU usage total | Общее время потребления CPU по сегментам кластера (в секундах) | 
| CPU avg usage % | Среднее потребление CPU (в процентах) процессами, участвующими в выполнении запроса на сегментах кластера. Рассчитывается как результат деления суммарного потребления CPU на всех сегментах кластера (исключая мастер и standby) на общее число процессов, обрабатывающих запрос на сегмент-хостах (исключая мастер и standby) | |
| 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) в записи данных по сегментам кластера (в процентах). Значение, отличное от нуля, говорит о том, что один из сегментов записывает на диск больший объем, чем остальные |