Метрики QHB

В настоящее время все метрики в QHB собираются на уровне всего кластера баз данных и относятся ко всему набору процессов QHB независимо от того, являются ли они фоновыми или поддерживающими пользовательские подключения. Также часть метрик собирается на уровне баз данных и на уровне бэкендов. Данные метрик отсылаются на коллектор и агрегатор метрик metricsd, краткое описание которого можно найти в главе Сервер метрик. Далее метрики агрегируются и записываются в Graphite, в качестве интерфейса к которому выступает Grafana.



Типы метрик

  • Gauge — неотрицательное целое значение. Может быть установлено, увеличено или уменьшено на заданное число.
  • Counter — неотрицательное целое значение. Может быть только увеличено на заданное число.
  • Timer — неотрицательное целое значение, длительность в наносекундах. Значение может быть только записано; во время агрегации вычисляется ряд статистических характеристик:
    • sum — сумма значений
    • count — количество записанных значений
    • max — максимальное из записанных значений
    • min — минимальное из записанных значений
    • mean — среднее арифметическое
    • median — медиана
    • std — стандартное квадратичное отклонение
    • при необходимости список перцентилей


Группы метрик

sys

К группе sys относятся различные системные метрики.

Сбор системных метрик регулируется двумя глобальными константами:

  • qhb_os_monitoring — логическая константа, по умолчанию значение off (выключена). При значении on выполняется периодический сбор метрик.
  • qhb_os_stat_period — период сбора системной статистики в секундах, по умолчанию 30 секунд.

Таблица 48. Метрики загрузки и ЦП

ИмяОписаниеТип
sys.load_average.1minload average за последнюю минутуgauge
sys.load_average.5minТо же, но за последние 5 минутgauge
sys.load_average.15minТо же, но за последние 15 минутgauge
sys.cpu.1minПроцент загрузки процессоров за последнюю минутуgauge
sys.cpu.5minТо же, но за последние 5 минутgauge
sys.cpu.15minТо же, но за последние 15 минутgauge

Примечание
Значения метрик load average содержат значения с точностью до сотых, однако при передаче данных в силу технических особенностей исходные значения умножаются на 100 и передаются как целые числа. Поэтому при выводе данных следует учитывать эту особенность и делить значения на 100.

load average — усредненное количество исполняемых и ожидающих потоков за заданный интервал времени (1, 5 и 15 минут). Обычно соответствующие значения выводятся с помощью команд uptime, top или cat /proc/loadavg. Подробную информацию об особенностях, связанными с этим показателем, можно найти в переводе статьи Load Average в Linux.

Если значение этого показателя за последнюю минуту больше, чем за последние 5 и 15 минут, нагрузка растет, если меньше — падает. Однако этот показатель важен не сам по себе, а относительно общего числа процессоров. Дополнительные и производные от load average метрики по загрузке процессоров sys.cpu.Nmin показывают приблизительный процент загрузки процессоров с учетом их количества и рассчитываются по следующей упрощенной формуле:

sys.cpu.<N>min = sys.load_average.<N>min / cpu_count * 100

где cpu_count — количество процессоров в системе, а N принимает значения 1, 5 или 15.

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

Thread(s) per core:              2
Core(s) per socket:              4
Socket(s):                       1

В данном случае cpu_count = 2 * 4 * 1 = 8.

Альтернативным и более простым методом может быть получение этого значения через команду nproc.

Таким образом, в данном случае загрузка в 100% будет достигнута, если величина load average будет стремиться к 8. Однако эти расчеты и значения будут иметь довольно приблизительный и даже условный характер, что показывает приведенная выше по ссылке статья.

Таблица 49. Метрики использования памяти

ИмяОписаниеТип
sys.mem.totalОбщий размер доступной памяти RAM (размер установленной за вычетом памяти, занимаемой ядром OS)gauge
sys.mem.usedИспользуемая памятьgauge
sys.mem.freeНеиспользуемая памятьgauge
sys.mem.availableПамять, доступная для запускаемых приложений (не включая swap, но учитывая потенциально освобождаемую память, занимаемую страничным кешем)gauge
sys.swap.totalОбщий размер файла подкачкиgauge
sys.swap.freeНеиспользуемая память файла подкачкиgauge

Значения метрик соответствуют полям из вывода утилиты free (значения отображаются в килобайтах, т. е. соответствуют выводу free -k).

Таблица 50. Соответствие значений метрик полям вывода утилиты free

МетрикаПоле утилиты free
sys.mem.totalMem:total
sys.mem.usedMem:used
sys.mem.freeMem:free
sys.mem.availableMem:available
sys.swap.totalSwap:total
sys.swap.freeSwap:free

Величину, соответствующую выводимому в утилите free значению Mem:buff/cache, можно рассчитать по формуле:

Mem:buff/cache = Mem:total - Mem:used - Mem:free

Таким образом, в Grafana можно, используя функцию diffSeries, рассчитывать и выводить это значение на основании других имеющихся данных.

Значение Mem:shared (данные виртуальной файловой системы tmpfs) через метрики не выводится.

Значение Swap:used можно рассчитать по формуле:

Swap:used = Swap:total - Swap:free

Это значение также можно выводить в Grafana в виде рассчитываемой величины через функцию diffSeries.

Более подробное описание этих показателей можно получить через справочную систему операционной системы для утилиты free (Для этого вызовите man free).

Таблица 51. Метрики использования дискового пространства

ИмяОписаниеТип
sys.disk_space.totalОбъем дисковой системы, на которой находится каталог с данными (в байтах)gauge
sys.disk_space.freeСвободное пространство в дисковой системе, на которой находится каталог с данными (в байтах)gauge

Метрики относятся к дисковой системе, на которой расположен каталог с файлами базы данных. Этот каталог определяется параметром командной строки -D при запуске базы данных либо переменной среды $PGDATA. Параметр data_directory в файле конфигурации qhb.conf может переопределять расположение каталога с данными.

Таблица 52. Другие системные метрики

ИмяОписаниеТип
sys.processesОбщее количество запущенных в системе процессовgauge
sys.uptimeКоличество секунд, прошедших с начала запуска системыgauge

db_stat

К группе db_stat относятся метрики чтения и записи блоков на уровне экземпляра QHB.

Таблица 53. Метрики чтения и записи блоков

ИмяОписаниеТип
qhb.db_stat.numbackendsКоличество активных серверных процессовgauge
qhb.db_stat.blocks_fetchedКоличество блоков, полученных при чтенииcounter
qhb.db_stat.blocks_hitКоличество блоков, найденных в кеше при чтенииcounter
qhb.db_stat.blocks_read_timeВремя чтения блоков, в миллисекундахcounter
qhb.db_stat.blocks_write_timeВремя записи блоков, в миллисекундахcounter
qhb.db_stat.conflicts.tablespaceКоличество запросов, отмененных из-за удаленных табличных пространствcounter
qhb.db_stat.conflicts.lockКоличество запросов, отмененных из-за тайм-аутов блокировокcounter
qhb.db_stat.checksum_failuresКоличество несовпадений контрольной суммы страницы данныхcounter
qhb.db_stat.conflicts.snapshotКоличество запросов, отмененных из-за устаревших снимков состоянияcounter
qhb.db_stat.conflicts.bufferpinКоличество запросов, отмененных из-за закрепленных буферовcounter
qhb.db_stat.conflicts.startup_deadlockКоличество запросов, отмененных из-за взаимных блокировокcounter
qhb.db_stat.tuples.returnedКоличество строк, полученных при последовательном сканированииcounter
qhb.db_stat.tuples.fetchedКоличество строк, полученных при сканировании по индексуcounter
qhb.db_stat.tuples.insertedКоличество строк, добавленных в базу данныхcounter
qhb.db_stat.tuples.updatedКоличество строк, измененных в базе данныхcounter
qhb.db_stat.tuples.deletedКоличество строк, удаленных из базы данныхcounter

Также генерируются версии этих метрик по базам данных и отдельным бэкендам. В имена метрик включается идентификатор базы данных, например, qhb.db_stat.db_16384.numbackends, или (для некоторых метрик) номер процесса, например: qhb.db_stat.34567.blocks_fetched. Данная группа метрик может генерировать большие объемы данных, поэтому администратор должен решить, действительно ли необходимо оставлять эту группу метрик включенной.

На основании метрик qhb.db_stat.blocks_fetched и qhb.db_stat.blocks_hit рассчитывается коэффициент попадания в кеш:

k = blocks_hit / blocks_fetched * 100%

Хорошим уровнем обычно считается значение более 90%. Если значение коэффициента существенно ниже этой отметки, желательно рассмотреть возможность увеличения объема буферного кеша.


bgwr

К группе bgwr относятся метрики фонового процесса записи.

Таблица 54. Метрики фонового процесса записи

ИмяОписаниеТип
qhb.bgwr.checkpoints_timedКоличество запланированных контрольных точек, которые были выполненыcounter
qhb.bgwr.checkpoints_reqКоличество запрошенных контрольных точек, выполненных вне очереди запланированныхcounter
qhb.bgwr.checkpoint_write_timeВремя, потраченное на этап обработки контрольной точки, где файлы записываются на диск, в миллисекундахcounter
qhb.bgwr.checkpoint_sync_timeВремя, потраченное на этап обработки контрольной точки, где файлы синхронизируются с диском, в миллисекундахcounter
qhb.bgwr.buffers_checkpointКоличество буферов, записанных во время контрольных точекcounter
qhb.bgwr.buffers_cleanКоличество буферов, записанных фоновым процессом записиcounter
qhb.bgwr.maxwritten_cleanСколько раз фоновый процесс записи останавливал сброс грязных страниц, поскольку записывал слишком много буферовcounter
qhb.bgwr.buffers_backendКоличество буферов, записанных непосредственно обслуживающим процессомcounter
qhb.bgwr.buffers_backend_fsyncСколько раз обслуживающий процесс вызывал fsync сам (обычно их обрабатывает фоновый процесс записи, даже когда обслуживающий процесс выполняет запись самостоятельно)counter
qhb.bgwr.buffers_allocКоличество выделенных буферовcounter

Данные по перечисленным метрикам отображаются в разделе «Контрольные точки и операции с буферами» информационной панели QHB. Обычно при выполнении запланированных контрольных точек сначала происходит запись информации о начале контрольной точки, затем в течение некоторого времени идет сброс блоков на диск и по окончании контрольной точки фиксируется информация о продолжительности записи и синхронизации данных. В случае обработки запланированной контрольной точки запись блоков равномерно распределяется во времени согласно параметрам настройки, чтобы снизить влияние этого процесса на общий ввод/вывод. При контрольных точках, запрошенных через команду, сброс блоков происходит сразу, без искусственной задержки.

Также генерируются версии этих метрик по базам данных и отдельным бэкендам. В имена метрик включается идентификатор базы данных, например: qhb.bgwr.db_16384.buffers_backend, или номер процесса, например: qhb.bgwr.11156.buffers_backend


mem_stat

К группе mem_stat относятся метрики для отслеживания размера памяти work area.

Память work area может быть приблизительно описана как память, используемая внутренними операциями сортировки и хеш-таблицами. Размер этой памяти контролируется глобальным параметром конфигурации work_mem: при превышении лимита вместо оперативной памяти начинают использоваться временные файлы на диске. Параметр work_mem ограничивает память, используемую единичной операцией.

В группу mem_stat входит три разновидности метрик с общим именем work_area:

  • qhb.mem_stat.work_area — показывает общий размер work area в байтах всего кластера
  • qhb.mem_stat.db_<номер>.work_area — показывает размер work area в байтах для одной базы данных
  • qhb.mem_stat..work_area — показывает размер work area в байтах для одного рабочего процесса

Метрики второй и третьей разновидностей создаются динамически.

Все метрики типа gauge, то есть их значения могут уменьшаться по мере освобождения ранее занятой памяти.


temp_stat

К группе temp_stat относятся метрики по временным файлам и таблицам QHB.

Таблица 55. Метрики по временным файлам и таблицам

ИмяОписаниеТип
qhb.temp_stat.temp_filesКоличество временных файлов, созданных за период агрегацииcounter
qhb.temp_stat.temp_bytesОбщий объем временных файлов, созданных за период агрегации, в байтахcounter
qhb.temp_stat.temp_tablesКоличество временных таблиц, созданных за период агрегацииcounter
qhb.temp_stat.temp_table_bytesОбщий объем временных таблиц, созданных за период агрегации, в байтахcounter

Данные собираются за период агрегации коллектора метрик. Обновление данных происходит по окончании соответствующей операции, например, при создании временной таблицы с указанием DROP ON COMMIT обновление статистики произойдет после выполнения команды COMMIT при удалении временной таблицы. В некоторых случаях объем, занимаемый временными файлами и таблицами, может быть весьма существенным.

Также генерируются версии этих метрик по базам данных и отдельным бэкендам. В имена метрик включается идентификатор базы данных, например: qhb.temp_stat.db_16384.temp_bytes, или номер процесса, например: qhb.temp_stat.22810.temp_bytes.


wal

К группе wal относятся метрики процесса архивации журнала упреждающей записи.

Таблица 56. Метрики процесса архивации WAL

ИмяОписаниеТип
qhb.wal.archivedКоличество успешно выполненных операций архивации файлов журнала упреждающей записиcounter
qhb.wal.failedКоличество попыток архивации, завершившихся сбоемcounter
qhb.wal.archive_timeВремя, потраченное на копирование файлов журналов, в наносекундахcounter

Эти метрики работают в том случае, если настроена архивация журнала упреждающей записи. Для этого необходимо установить параметр archive_mode в значение on (включен) и определить команду архивации в параметре archive_command.


transaction

К группе transaction относятся метрики по транзакциям.

Таблица 57. Метрики по транзакциям

ИмяОписаниеТип
qhb.transaction.commitКоличество фиксаций транзакцийcounter
qhb.transaction.rollbackКоличество откатов транзакцийcounter
qhb.transaction.deadlocksКоличество взаимоблокировокcounter

Данные метрик собираются непосредственно при выполнении команд завершения и отмены транзакций на уровне всего кластера баз данных (метрика с именем qhb.transaction.commit), на уровне отдельных баз данных (метрики с идентификаторами баз данных, например, qhb.transaction.db_16384.commit) и на уровне бэкендов (метрики с идентификаторами процессов бэкендов, например, qhb.transaction.9411.commit).

Коэффициент подтверждения транзакций рассчитывается как процентное отношение фиксаций транзакций к сумме фиксаций и откатов транзакций:

k = commit/(commit + rollback)*100%

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

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


wait

К группе wait относятся метрики событий ожидания.

Данный набор метрик полностью соответствует набору стандартных событий ожидания. Метрики имеют префикс qhb.wait. Далее в наименовании идет класс события ожидания и через точку название события ожидания. Все метрики по событиям ожидания имеют тип counter, однако значение отражает промежуток времени в микросекундах, который эти ожидания заняли в совокупности во всех сеансах за период сбора.

Примечание
Если в течение периода наблюдения работало множество пользовательских подключений, которые находились в состоянии ожидания, суммарное значение времени ожидания может многократно превысить этот период. Например, если в течение 10 секунд 1000 сеансов провели в ожиданиях по одной секунде, суммарное время ожидания составит 1000 секунд.

Метрики с типами событий ожидания Lock, LWLock, IO и IPC отображаются в разделе «События ожидания» информационной панели QHB. Значения метрик выводятся в микросекундах (автоматически переводясь в другие единицы при увеличении значений). На существующих графиках выводятся не все события ожиданий, а только по пять самых значимых по величине на каждом графике. Разные события ожиданий могут иметь сильно отличающиеся по величине продолжительности. Значительные колебания значений могут отражать возникающие проблемы.

Таблица 58. Наиболее значимые события ожидания

Имя события ожиданияОписание
Lock.extendОжидание расширения отношения. Становится заметным при активном росте таблиц. Необходимость выделения новых блоков приводит к некоторым задержкам, которые отражаются в этой метрике.
Lock.transactionidОжидание завершения транзакции. Событие ожидания возникает в том случае, если транзакция вынуждена ждать окончания обработки предыдущих транзакций, которые также получают подтверждение своего окончания.
Lock.tupleОжидание получения блокировки для кортежа. Возникает в случае одновременной работы с теми же данными нескольких транзакций.
LWLock.WALWriteLockОжидание записи буферов WAL на диск. Часто является лидером среди событий ожиданий этого типа, так как операции с диском являются наиболее медленными в этой группе событий ожидания.
LWLock.wal_insertОжидание вставки WAL в буфер памяти.
LWLock.buffer_contentОжидание чтения или записи страницы данных в памяти. Возникает и становится существенным при интенсивном вводе/выводе.
LWLock.buffer_mappingОжидание связывания блока данных с буфером в буферном пуле.
LWLock.lock_managerОжидание добавления или проверки блокировок для обслуживающих процессов. Событие становится значимым при частых транзакциях.

bufmgr

К группе bufmgr относятся метрики буферного менеджера, касающиеся механизмов управления памятью. Сбор метрик проводится при операциях чтения данных.

Таблица 59. Метрики буферного менеджера

ИмяОписаниеТипАгрегат
qhb.bufmgr.BufferAllocСколько раз проводился поиск буфераtimercount
qhb.bufmgr.BufferAllocОбщее время, потраченное на поиск буфераtimersum
qhb.bufmgr.happy_pathСколько раз буфер нашелся сразуtimercount
qhb.bufmgr.happy_pathОбщее время, потраченное на поиск, когда буфер нашелся сразуtimersum
qhb.bufmgr.cache_missКоличество промахов кеша буферовtimercount
qhb.bufmgr.cache_missОбщее время, потраченное на обработку промахов кеша буферовtimersum
qhb.bufmgr.disk_readКоличество чтений страницы с диска (асинхронно)timercount
qhb.bufmgr.flush_dirtyКоличество выгрузок страницы на диск (асинхронно)timercount
qhb.bufmgr.retry_counterКоличество повторных обработок промахаcounter
qhb.bufmgr.strategy_pop_cntСколько раз срабатывала специальная стратегия получения или вытеснения буфераcounter
qhb.bufmgr.strategy_reject_cntКоличество забракованных буферов, предложенных специальной стратегиейcounter
tarq_cache.allocateСколько раз проводился поиск в TARQtimercount
tarq_cache.allocateОбщее время, потраченное на поиск в TARQtimersum
tarq_cache.allocate_newСколько раз выбирался исключаемый блок в TARQtimercount
tarq_cache.rollbackКоличество откатов вытеснения в TARQtimercount
tarq_cache.rollbackОбщее время, потраченное на откаты вытеснения в TARQtimersum
tarq_cache.touchОбщее время, потраченное на учет популярных страниц в TARQtimersum

lmgr

К группе lmgr относятся метрики менеджера блокировок. Блокировки бывают основные и предикатные. Предикатные блокировки называются «блокировками» по историческим причинам; сейчас они ничего не блокируют, а используются для отслеживания зависимостей по данным между транзакциями, работающими с уровнем изоляции Serializable.

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

Сбор метрик производится непрерывно, в фоновом режиме.

Таблица 60. Метрики менеджера блокировок

ИмяОписаниеТип
qhb.lmgr.locksКоличество занятых блокировокgauge
qhb.lmgr.locks_availableКоличество блокировок, которые еще можно создатьgauge
qhb.lmgr.pred_locksКоличество занятых предикатных «блокировок»gauge
qhb.lmgr.pred_locks_availableКоличество предикатных «блокировок», которые еще можно создатьgauge

queryid

К группе queryid относятся метрики, предоставляющие возможность отслеживать статистику планирования и выполнения сервером всех (почти) операторов SQL.

Эта группа отличается тем, что входящие в нее метрики создаются динамически при начале обработки движком нового оператора. В имена новых метрик добавляется уникальное имя или ID запроса. Например, метрика qhb.queryid.c92e145f160e7b9e.exec_calls отражает количество исполнений некоторого оператора SQL. Текст самого оператора можно получить из новой системной таблицы qhb_queryid запросом вида SELECT * FROM qhb_queryid WHERE qid = 'c92e145f160e7b9e'.

Подробнее настройка метрик группы queryid описана в разделе Настройка метрик queryid.

Таблица 61. Метрики queryid

ИмяОписаниеТип
qhb.queryid.id.plan_callsЧисло планирований оператораcounter
qhb.queryid.id.total_plan_timeОбщее время, затраченное на планирование оператора, в наносекундахcounter
qhb.queryid.id.min_plan_timeМинимальное время, затраченное на планирование оператора, в наносекундахgauge
qhb.queryid.id.max_plan_timeМаксимальное время, затраченное на планирование оператора, в наносекундахgauge
qhb.queryid.id.mean_plan_timeСреднее время, затраченное на планирование оператора, в наносекундахgauge
qhb.queryid.id.stddev_plan_timeСтандартное отклонение времени, затраченного на планирование оператора, в наносекундахgauge
qhb.queryid.id.exec_callsЧисло выполнений оператораcounter
qhb.queryid.id.total_exec_timeОбщее время, затраченное на выполнение оператора, в наносекундахcounter
qhb.queryid.id.min_exec_timeМинимальное время, затраченное на выполнение оператора, в наносекундахgauge
qhb.queryid.id.max_exec_timeМаксимальное время, затраченное на выполнение оператора, в наносекундахgauge
qhb.queryid.id.mean_exec_timeСреднее время, затраченное на выполнение оператора, в наносекундахgauge
qhb.queryid.id.stddev_exec_timeСтандартное отклонение времени, затраченного на выполнение оператора, в наносекундахgauge
qhb.queryid.id.shared_blks_hitОбщее количество попаданий в разделяемый кеш блоков для этого оператораcounter
qhb.queryid.id.shared_blks_readОбщее количество прочтений разделяемых блоков для этого оператораcounter
qhb.queryid.id.shared_blks_dirtiedОбщее количество разделяемых блоков, «загрязненных» этим операторомcounter
qhb.queryid.id.shared_blks_writtenОбщее количество разделяемых блоков, записанных этим операторомcounter
qhb.queryid.id.local_blks_hitОбщее количество попаданий в локальный кеш блоков для этого оператораcounter
qhb.queryid.id.local_blks_readОбщее количество прочтений локальных блоков для этого оператораcounter
qhb.queryid.id.local_blks_dirtiedОбщее количество локальных блоков, «загрязненных» этим операторомcounter
qhb.queryid.id.local_blks_writtenОбщее количество локальных блоков, записанных этим операторомcounter
qhb.queryid.id.temp_blks_readОбщее количество прочтений временных блоков для этого оператораcounter
qhb.queryid.id.temp_blks_writtenОбщее количество временных блоков, записанных этим операторомcounter
qhb.queryid.id.exec_rowsОбщее количество строк, полученных или затронутых этим операторомcounter
qhb.queryid.id.blk_read_timeОбщее время, затраченное оператором на чтение блоков, в миллисекундах (если включен track_io_timing; иначе 0)counter
qhb.queryid.id.blk_write_timeОбщее время, затраченное оператором на запись блоков, в миллисекундах (если включен track_io_timing; иначе 0)counter
qhb.queryid.id.wal_recordsОбщее количество записей WAL, сгенерированных этим операторомcounter
qhb.queryid.id.wal_fpiОбщее количество образов полных страниц WAL, сгенерированных этим операторомcounter
qhb.queryid.id.wal_bytesОбщий объем WAL, сгенерированный этим оператором, в байтахcounter

qss

К группе qss относятся метрики, связанные с процессами шифрования/дешифрования при работе с таблицами, обработанными QSS.

Таблица 62. Метрики для qss-таблиц

ИмяОписаниеТип
qhb.qss2.wals.encrypt.countКоличество зашифрованных сообщений WALcounter
qhb.qss2.wals.encrypt.bytesКоличество зашифрованных байтов сообщений WALcounter
qhb.qss2.wals.encrypt.timeВремя, затраченное на шифрование сообщения WALtimer
qhb.qss2.wals.decrypt.countКоличество расшифрованных сообщений WALcounter
qhb.qss2.wals.decrypt.bytesКоличество расшифрованных байтов сообщений WALcounter
qhb.qss2.wals.decrypt.timeВремя, затраченное на расшифрование сообщения WALtimer
qhb.qss2.pages.encrypt.countКоличество зашифрованных страниц с даннымиcounter
qhb.qss2.pages.encrypt.bytesКоличество зашифрованных байтов страниц с даннымиcounter
qhb.qss2.pages.encrypt.timeВремя, затраченное на шифрование страницы с даннымиtimer
qhb.qss2.pages.decrypt.countКоличество расшифрованных страниц с даннымиcounter
qhb.qss2.pages.decrypt.bytesКоличество расшифрованных байтов страниц с даннымиcounter
qhb.qss2.pages.decrypt.timeВремя, затраченное на дешифровку страницы с даннымиtimer
qhb.qss2.blobs.encrypt.countКоличество зашифрованных объектов нефиксированного размера (Rbytea)counter
qhb.qss2.blobs.encrypt.bytesКоличество зашифрованных байтов объектов нефиксированного размера (Rbytea)counter
qhb.qss2.blobs.encrypt.timeВремя, затраченное на шифрование объектов нефиксированного размера (Rbytea)timer
qhb.qss2.blobs.decrypt.countКоличество расшифрованных объектов нефиксированного размера (Rbytea)counter
qhb.qss2.blobs.decrypt.bytesКоличество расшифрованных байтов объектов нефиксированного размера (Rbytea)counter
qhb.qss2.blobs.decrypt.timeВремя, затраченное на расшифрование объектов нефиксированного размера (Rbytea)timer

Данные метрики формируются, если на сервере запущен QSS и создана шифрованная таблица (CREATE TABLE <имя таблицы> USING qss).


Метрики пула соединений QCP

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

Таблица 63. Метрики пула соединений QCP

ИмяОписаниеТип
qcp.queueКоличество запросов в очереди на данный моментgauge
qcp.obtain_backendВремя ожидания назначения обслуживающего процесса для исполнения запроса клиентаtimer
qcp.obtain_backend_failedПревышено максимальное время ожидания назначения обслуживающего процесса для исполнения запроса клиентаtimer
<адрес субд>.in_useКоличество используемых подключений (обслуживающих процессов) к СУБДgauge


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

В QHB имеется механизм, который позволяет включать и выключать отправку метрик отдельно по группам и категориям. В каталоге данных расположен файл конфигурации metrics_config.toml, в котором каждая строка соответствует группе метрик:

[is_enabled]
bgwr = { basic = true, dbid = false, pid = false }
bufmgr = { basic = true, dbid = false, pid = false }
db_stat = { basic = true, dbid = false, pid = false }
default = { basic = true, dbid = false, pid = false }
lmgr = { basic = true, dbid = false, pid = false }
mem_stat = { basic = false, dbid = false, pid = false }
queryid = { basic = false, dbid = false, pid = false }
sys = { basic = true, dbid = false, pid = false }
temp_stat = { basic = true, dbid = false, pid = false }
transaction = { basic = true, dbid = false, pid = false }
wait = { basic = true, dbid = false, pid = false }
wal = { basic = true, dbid = false, pid = false }

Переменные принимают значения true (отправка метрик группы разрешена) или false (отправка запрещена).

Примечание
Метрики qss включены в группу bgwr.

Таблица 64. Настройка записи значений для групп метрик

Группа метрикОписаниеЗначение по умолчанию
defaultГруппа по умолчанию (различные метрики, не выделенные в отдельные группы)true
sysМетрики операционной системыtrue
db_statМетрики чтения и записи блоковtrue
bgwrМетрики фонового процесса записиtrue
mem_statМетрики размера памяти «work area»false
temp_statМетрики по данным временных файлов и таблицtrue
walМетрики архивации файлов WALtrue
transactionМетрики транзакцийtrue
waitМетрики событий ожиданияtrue
bufmgrМетрики механизмов управления памятьюtrue
lmgrМетрики механизмов блокировок (основных и предикатных)true
queryidМетрики планирования и выполнения сервером операторов SQLfalse

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

Для просмотра списка групп метрик и их текущего состояния можно воспользоваться SQL-функцией metrics_config_show. Пример вызова этой функции:

SELECT * FROM metrics_config_show();
 group_name  | glob  | dbid | pid
-------------+-------+------+-----
 bgwr        | t     | f    | f
 bufmgr      | t     | f    | f
 db_stat     | t     | f    | f
 default     | t     | f    | f
 lmgr        | t     | f    | f
 mem_stat    | f     | f    | f
 queryid     | f     | f    | f
 sys         | t     | f    | f
 temp_stat   | t     | f    | f
 transaction | t     | f    | f
 wait        | t     | f    | f
 wal         | t     | f    | f
(12 rows)

Для просмотра текущего состояния метрик отдельного процесса можно воспользоваться SQL-функцией metrics_transient_config_show. В качестве аргумента передается целое число — идентификатор нужного процесса. Пример вызова этой функции:

SELECT * FROM metrics_transient_config_show(1843);

Если для этого процесса не менялась конфигурация метрик, вывод не отличается от вывода функции metrics_config_show.

Помимо задания значений настроек через файл параметров, имеется возможность менять эти значения через функции. Функции могут вызываться с разным количеством аргументов. Если опущен аргумент параметра kind, то функция применяется ко всем категориям метрик. Если опущен аргумент параметра respect_transient_settings, то его значение по умолчанию равно false.

Изменения сразу же отображаются в файле конфигурации.


Функции включения и выключения отправки метрик

metrics_config_enable_group ( group_name: cstring ) → void
metrics_config_enable_group ( group_name: cstring, respect_transient_settings: boolean ) → void
metrics_config_enable_group ( group_name: cstring, kind: cstring, respect_transient_settings: boolean ) → void

Включает отправку значений для метрик заданной группы/категории.

metrics_config_disable_group ( group_name: cstring ) → void
metrics_config_disable_group ( group_name: cstring, respect_transient_settings: boolean ) → void
metrics_config_disable_group ( group_name: cstring, kind: cstring, respect_transient_settings: boolean ) → void

Выключает отправку значений для метрик заданной группы/категории.

metrics_config_transient_set ( backend_pid: int4, group_name: cstring, option_value: boolean ) → void
metrics_config_transient_set ( backend_pid: int4, group_name: cstring, kind: cstring, option_value: boolean ) → void

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

Категории метрик выражаются следующими значениями параметра kind: 'basic', 'dbid', 'pid'.

С помощью параметра respect_transient_settings (второго или третьего в зависимости от варианта функции) в функциях metrics_config_enable_group и metrics_config_disable_group можно указать, отдавать ли приоритет параметрам отправки групп метрик, установленным на уровне отдельных обслуживающих процессов.

С помощью функции metrics_config_transient_set можно включить или выключить отправку значений заданной группы и категории метрик для конкретного обслуживающего процесса. Настройка будет действовать в течение всего времени жизни обслуживающего процесса либо до вызова функции metrics_config_enable_group или metrics_config_disable_group с параметром respect_transient_settings = false, который в данном случае распространит действие команды также на те обслуживающие процессы, в которых устанавливалось собственное значение параметров.

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

Примечание
Все сказанное о выключении записи групп метрик не касается метрик, которые передаются через SQL-функции. При использовании этих функций метрики записываются всегда.



Информационные панели метрик QHB для Grafana

Информационные панели (dashboards) QHB для Grafana расположены в репозитории по следующей ссылке.

QHB поставляется совместно с сервером метрик, который записывает данные метрик в Graphite. Интерфейсом к этим метрикам служит Grafana. Текущий набор информационных панелей для Grafana поставляется в качестве самодокументируемых образцов, на основе которых пользователи при необходимости могут самостоятельно создать панели, более соответствующие их потребностям. Разумеется, поставляемые панели можно использовать и в исходном виде.


Импорт информационных панелей

Экспорт JSON-описания информационных панелей выполнен в Grafana 6.7.2.

Перед импортом JSON-описания необходимо решить, будут ли названия метрик содержать в качестве префикса имя хоста. Именно таким образом устроены наименования метрик внутри панелей, и этот вариант рекомендуется оставить. В начале имен метрик добавлена переменная $server_name, по умолчанию для нее выбрано значение your_host_name. Перед импортом можно заменить в JSON-файлах это значение на наименование одного из хостов. В дальнейшем в этой переменной через интерфейс Grafana можно будет добавить через запятую все имена хостов, с которых будут собираться метрики. Это позволит быстро переключаться при просмотре метрик с одного хоста на другой. Если такая схема использоваться не будет (в случае, если будут просматриваться метрики с единственного хоста), можно удалить в файлах JSON во всех именах метрик префикс $server_name до проведения импорта описания JSON. Однако это более трудоемкий вариант и его выбирать не рекомендуется.

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

  1. В меню Dashboards вашего сайта Grafana выбрать пункт Manage.
  2. В открывшемся списке папок и панелей выбрать существующую или создать новую папку.
  3. Находясь в выбранной папке, выбрать в правой верхней части страницы пункт Import.
  4. На открывшейся странице можно либо нажать справа вверху кнопку Upload json file и загрузить файл, либо вставить содержимое JSON-файла в поле под заголовком Or paste JSON и нажать кнопку Load.
  5. После этого нужно заполнить необходимые параметры и выполнить загрузку JSON-описания.
  6. При необходимости, отредактируйте наименование источника данных в модели JSON, заменив в описаниях информационных панелей значение поля datasource с Graphite на корректное значение. Более простым вариантом может быть смена имени источника данных на Graphite. Такой вариант будет предпочтительным, если источник данных до этого нигде больше не использовался.

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

Информационная панель «Операционная система»

Информационная панель представляет основные системные показатели:

  • Время работы экземпляра QHB;
  • Средняя загрузка;
  • Использование ОЗУ;
  • Использование памяти;
  • Использование дисковой системы, на которой расположен каталог баз данных.

Информационная панель «QHB»

Информационная панель содержит несколько разделов:

  • Транзакции;
  • Чтение и запись блоков;
  • События ожидания;
  • Контрольные точки и операции с буферами;
  • Архивация WAL.

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

Примечание
По умолчанию теги различных событий не заданы, поэтому необходимо самостоятельно настроить вывод дополнительных аннотаций:

  • добавить необходимые комментарии к данным метрик функцией qhb_annotation (см. раздел Аннотации);
  • настроить вывод доступных аннотаций в информационной панели Grafana.


QHB-мониторинг для Zabbix

Пример использования сервера Zabbix 6.2 для мониторинга узла сети с QHB и агентом Zabbix.

Необходимые файлы:

  • template_db_qhb.yaml — файл шаблона «QHB by Zabbix agent», который нужно импортировать на сервер Zabbix 6.2;
  • template_db_qhb.conf — файл с пользовательскими параметрами агента Zabbix для опроса QHB;
  • каталог qhb/, содержащий SQL-файлы, к которым обращаются пользовательские параметры.

Архив для Zabbix 6.2 или выше расположен в репозитории по следующей ссылке.


Установка

Примечание
Более подробную информации см. в документации Zabbix по работе с шаблонами агента.

  1. Установите Zabbix-агент на узле сети с QHB

  2. Скопируйте каталог qhb/ в домашний каталог Zabbix-агента /var/lib/ zabbix. Если в /var/lib/ отсутствует каталог zabbix/, то его необходимо создать. Каталог qhb/ содержит SQL-файлы, необходимые для получения метрик из QHB:

    # mkdir -p /var/lib/zabbix/qhb
    # cd /var/lib/zabbix/qhb
    # wget <сервер>/zabbix/qhb/qhb.tar
    # tar -xvf qhb.tar
    # chmod -R 707 /var/lib/zabbix/qhb
    # rm -rf qhb.tar
    
  3. Скопируйте файл template_db_qhb.conf в конфигурационную директорию Zabbix-агента /etc/zabbix/zabbix_agentd.d/:

    # wget <сервер>/zabbix/template_db_qhb.conf
    
  4. Создайте пользователя zbx_monitor с правами «только чтение» и доступом к кластеру QHB:

    CREATE USER zbx_monitor WITH PASSWORD '<PASSWORD>' INHERIT;
    GRANT pg_monitor TO zbx_monitor;
    
  5. Отредактируйте файл qhb_hba.conf, чтобы разрешить подключение к Zabbix. Для этого откройте его в текстовом редакторе nano и вставьте в него следующие строки:

    host all zbx_monitor 127.0.0.1/32 trust
    
  6. Перезагрузите QHB и Zabbix-агент:

    # systemctl restart qhb
    # systemctl restart zabbix_agentd   
    
  7. Импортируйте файл template_db_qhb.yaml шаблона «QHB by Zabbix agent» на сервере Zabbix. Подробнее об импорте шаблонов см. в документации Zabbix по работе с импортом шаблонов.

  8. Установите параметры макроса {$PG.HOST}, {$PG.PORT}, {$PG.USER}, {$PG.PASSWORD}, {$PG.DB} для узла сети с QHB.

  9. Присоедините шаблон «QHB by Zabbix agent» к узлу сети с QHB.


Собираемые параметры

Таблица 65. Собираемые параметры

ГруппаНазваниеОписание
QHBBgwriter: Buffers allocated per secondКоличество буферов, выделенных за секунду
QHBBgwriter: Buffers written directly by a backend per secondКоличество буферов, записанных за секунду непосредственно обслуживающим процессом
QHBBgwriter: Buffers backend fsync per secondСколько раз за секунду обслуживающему процессу пришлось самому выполнять вызов fsync (обычно этим занимается фоновый процесс записи, даже когда обслуживающий процесс проводит свои операции записи)
QHBBgwriter: Buffers written during checkpoints per secondКоличество буферов, записанных за секунду во время контрольных точек
QHBBgwriter: Buffers written by the background writer per secondКоличество буферов, записанных за секунду фоновым процессом записи
QHBBgwriter: Requested checkpoints per secondКоличество запрошенных контрольных точек, которые были выполнены за секунду
QHBBgwriter: Scheduled checkpoints per secondКоличество запланированных контрольных точек, которые были выполнены за секунду
QHBBgwriter: Checkpoint sync timeОбщее количество времени, затраченное на синхронизацию файлов с диском при обработке контрольных точек
QHBBgwriter: Checkpoint write timeОбщее количество времени, затраченное на запись файлов на диск при обработке контрольных точек, в миллисекундах
QHBBgwriter: Max written per secondСколько раз за секунду фоновый процесс записи останавливал очищающее сканирование из-за того, что записал слишком много буферов
QHBStatus: Cache hit ratio %Доля попаданий в кеш
QHBStatus: Config hashХеш конфигурации QHB
QHBConnections sum: ActiveОбщее количество соединений, выполняющих запросы
QHBConnections sum: IdleОбщее количество соединений, ожидающих от клиента новой команды
QHBConnections sum: Idle in transactionОбщее количество соединений в состоянии транзакции, но не выполняющих запрос
QHBConnections sum: PreparedОбщее количество подготовленных транзакций
QHBConnections sum: TotalОбщее количество соединений
QHBConnections sum: Total %Общее количество соединений в процентах
QHBConnections sum: WaitingОбщее количество ожидающих транзакций
QHBStatus: Ping timeВремя ответа
QHBStatus: PingПроверка связи
QHBReplication: standby countКоличество резервных серверов
QHBReplication: lag in secondsЗадержка репликации с основного сервера в секундах
QHBReplication: recovery roleРоль репликации: 1 — восстановление еще продолжается (режим резервного сервера), 0 — режим основного сервера
QHBReplication: statusСтатус репликации: 0 — потоковая передача снижается, 1 — потоковая передача возрастает, 2 — режим основного сервера
QHBTransactions: Max active transaction timeТекущая максимальная продолжительность активной транзакции
QHBTransactions: Max idle transaction timeТекущая максимальная продолжительность простаивающей транзакции
QHBTransactions: Max prepared transaction timeТекущая максимальная продолжительность подготовленной транзакции
QHBTransactions: Max waiting transaction timeТекущая максимальная продолжительность ожидающей транзакции
QHBStatus: UptimeПолное время работы системы
QHBStatus: VersionВерсия QHB
QHBWAL: Segments countКоличество сегментов WAL
QHBWAL: Bytes writtenОбъем записей WAL в байтах
QHBDB {#DBNAME}: Database sizeРазмер этой базы данных
QHBDB {#DBNAME}: Blocks hit per secondСколько раз дисковые блоки были обнаружены уже в буферном кеше, благодаря чему в чтении не было необходимости
QHBDB {#DBNAME}: Disk blocks read per secondОбщее количество дисковых блоков, прочитанных в этой базе данных
QHBDB {#DBNAME}: Detected conflicts per secondОбщее количество запросов, отмененных из-за конфликтов с восстановлением в этой базе данных
QHBDB {#DBNAME}: Detected deadlocks per secondОбщее количество выявленных взаимоблокировок в этой базе данных
QHBDB {#DBNAME}: Temp_bytes written per secondОбщий объем данных, записанных во временные файлы запросами в этой базе данных
QHBDB {#DBNAME}: Temp_files created per secondОбщее количество временных файлов, созданных запросами в этой базе данных
QHBDB {#DBNAME}: Tuples deleted per secondОбщее количество строк, удаленных запросами в этой базе данных
QHBDB {#DBNAME}: Tuples fetched per secondОбщее количество строк, выбранных запросами в этой базе данных
QHBDB {#DBNAME}: Tuples inserted per secondОбщее количество строк, добавленных запросами в этой базе данных
QHBDB {#DBNAME}: Tuples returned per secondОбщее количество строк, возвращенных запросами в этой базе данных
QHBDB {#DBNAME}: Tuples updated per secondОбщее количество строк, измененных запросами в этой базе данных
QHBDB {#DBNAME}: Commits per secondКоличество зафиксированных транзакций в этой базе данных
QHBDB {#DBNAME}: Rollbacks per secondОбщее количество откатившихся транзакций в этой базе данных
QHBDB {#DBNAME}: Frozen XID before autovacuum %Доля замороженных идентификаторов транзакций перед автоочисткой, в процентах
QHBDB {#DBNAME}: Frozen XID before stop %Доля замороженных идентификаторов транзакций перед остановкой, в процентах
QHBDB {#DBNAME}: Locks totalОбщее количество блокировок в этой базе данных
QHBDB {#DBNAME}: Queries slow maintenance countСчетчик медленных обслуживающих запросов
QHBDB {#DBNAME}: Queries max maintenance timeМаксимальная продолжительность обслуживающего запроса
QHBDB {#DBNAME}: Queries sum maintenance timeСуммарная продолжительность обслуживающих запросов
QHBDB {#DBNAME}: Queries slow query countСчетчик медленных запросов
QHBDB {#DBNAME}: Queries max query timeМаксимальная продолжительность запроса
QHBDB {#DBNAME}: Queries sum query timeСуммарная продолжительность запросов
QHBDB {#DBNAME}: Queries slow transaction countСчетчик медленных транзакционных запросов
QHBDB {#DBNAME}: Queries max transaction timeМаксимальная продолжительность транзакционного запроса
QHBDB {#DBNAME}: Queries sum transaction timeСуммарная продолжительность транзакционных запросов
QHBDB {#DBNAME}: Index scans per secondКоличество сканирований по индексу в этой базе данных
QHBDB {#DBNAME}: Sequential scans per secondКоличество последовательных сканирований в этой базе данных
Исходные элементы ZabbixQHB: Get bgwriterСтатистика по активности фонового процесса записи
Исходные элементы ZabbixQHB: Get connections sumСбор всех метрик из pg_stat_activity
Исходные элементы ZabbixQHB: Get dbstatСбор всех метрик из pg_stat_database для каждой базы данных
Исходные элементы ZabbixQHB: Get locksСбор всех метрик из pg_locks для каждой базы данных
Исходные элементы ZabbixQHB: Get queriesСбор всех метрик по времени выполнения запросов
Исходные элементы ZabbixQHB: Get transactionsСбор метрик по времени выполнения транзакций
Исходные элементы ZabbixQHB: Get WALОсновной элемент для сбора метрик WAL
Исходные элементы ZabbixDB {#DBNAME}: Get frozen XIDКоличество замороженных идентификаторов транзакций
Исходные элементы ZabbixDB {#DBNAME}: Get scansКоличество сканирований, проведенных для таблицы/индекса в этой базе данных

Триггеры

Таблица 66. Триггеры

НазваниеОписание
QHB: Required checkpoints occurs too frequentlyЗапрашиваемые контрольные точки происходят слишком часто
QHB: Cache hit ratio too lowСлишком низкая доля попаданий в кеш
QHB: Configuration has changedИзменилась конфигурация
QHB: Total number of connections is too highОбщее количество соединений слишком велико
QHB: Response too longСлишком большое время отклика
QHB: Service is downQHB не функционирует
QHB: Streaming lag with {#MASTER} is too highЗадержка репликации с основного сервера слишком велика
QHB: Replication is downРепликация не функционирует
QHB: Service has been restartedВремя функционирования QHB меньше 10 минут
QHB: Version has changedВерсия QHB изменилась
DB {#DBNAME}: Too many recovery conflictsСлишком много конфликтов между основным и резервным серверами при восстановлении
DB {#DBNAME}: Deadlock occurredПроизошла взаимоблокировка
DB {#DBNAME}: VACUUM FREEZE is required to prevent wraparoundДля предотвращения зацикливания идентификаторов транзакций требуется выполнить команду VACUUM FREEZE
DB {#DBNAME}: Number of locks is too highКоличество блокировок слишком велико
DB {#DBNAME}: Too many slow queriesСлишком много медленных запросов
QHB: Failed to get itemsZabbix не получал данные для элементов в течение последних 30 минут


Настройка сбора метрик

Для того чтобы информационной панели отображали данные метрик, необходимо выполнить некоторые настройки.

Настройка сервера метрик

Настройка сервера метрик описана в главе Сервер метрик.

Рекомендуется в параметре prefix конфигурационного файла /etc/metricsd/config.yaml сервера метрик прописать имя хоста, на котором он работает. Если сделать это для каждого сервера, все метрики будут организованы иерархически, и первый уровень иерархии будет уровнем серверов. В именах метрик в предлагаемых панелях для этих целей присутствует переменная $server_name. Подразумевается, что на хосте работает только один кластер баз данных.


Настройка параметров базы данных

Для настройки отправки метрик до релиза QHB 1.3.0 необходимо в qhb.conf установить параметр metrics_collector_id в значение, с которым запускается коллектор метрик, например 1001. Начиная с релиза QHB 1.3.0 вместо metrics_collector_id используется параметр metrics_collector_path, который по умолчанию имеет значение @metrics-collector (представляет собой путь к сокету домена Unix); сервер метрик по умолчанию запускается именно на этом адресе.

Для настройки отправки аннотаций необходимо в qhb.conf прописать следующие параметры:

  • grafana.address — адрес Grafana, например http://localhost:3000
  • grafana.token — необходимо указать токен, полученный в Grafana по адресу http://localhost:3000/org/apikeys

Пример настроек в qhb.conf для отправки метрик и аннотаций:

# До релиза QHB 1.3.0
# metrics_collector_id = 1001  

# С релиза QHB 1.3.0:
metrics_collector_path = '@metrics-collector'

grafana.address = 'http://localhost:3000'
grafana.token = 'eyJrIjoiNGxTaloxMUNTQkFUMTN0blZqUTN6REN6OWI5YjM1MzMiLCJuIjoidGVzdCIsImlkIjoxfQ=='

Примечание
При необходимости записи данных метрик в CSV-файлы в качестве значения параметра metrics_collector_path нужно указать путь к файлу сокета домена Unix, например /tmp/metrics-collector.sock. Это же значение нужно указать в параметре bind_addr раздела collection в настройках сервера метрик (/etc/metricsd/config.yaml).

Для сбора системных метрик (информационная панель «Операционная система») необходимо установить параметр qhb_os_monitoring в значение on (включен). Можно также задать период сбора системной статистики qhb_os_stat_period (значение по умолчанию — 30 секунд). Не рекомендуется задавать для этого параметра слишком низкое значение, поскольку сбор системной статистики требует некоторых затрат.

В файле параметров можно прописать:

qhb_os_monitoring = on
qhb_os_stat_period = 60 # если период по умолчанию в 30 секунд не устраивает

Либо выполнить команды:

ALTER SYSTEM SET qhb_os_monitoring = ON;
ALTER SYSTEM SET qhb_os_stat_period = 60;
SELECT pg_reload_conf();


Примеры использования метрик в функциях SQL

Помимо встроенных метрик пользователи могут использовать свои метрики через следующие функции SQL.

Тип метрик Timer

Используется при фиксации промежутка времени, единицы измерения — наносекунды.

SELECT qhb_timer_report('qhb.timer.nano',10000000000 /* 10 секунд в наносекундах */);

Тип метрик Counter

Используется, когда нужно зафиксировать количество произошедших за промежуток времени событий.

SELECT qhb_counter_increase_by('qhb.example.counter',10);

Тип метрик Gauge

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

SELECT qhb_gauge_update('qhb.gauge_example.value', 10); /* Установка значения */
SELECT qhb_gauge_add('qhb.gauge_example.value',1); /* Увеличение значения */
SELECT qhb_gauge_sub('qhb.gauge_example.value',1); /* Уменьшение значения */

Аннотации

Используются, если нужно добавить комментарий к данным метрик. Первый параметр функции — текст комментария, последующие параметры — теги.

SELECT qhb_annotation('Начало выполнения теста', 'test','billing'); /* Текст аннотации и два тега */