Как настроить сбор данных для дашборда мониторинга за БД СУБД Platform V Pangolin из компонента Dashboard состояния сервисов в составе продукта Platform V Monitor#
Для функционирования поставляемого сервиса необходимо выполнение следующих условий:
Настроены проверки из компонента Dashboard состояния сервисов в составе продукта Platform V Monitor.
Пред настроенный Datasource c метриками из компонента Dashboard состояния сервисов в составе продукта Platform V Monitor.
Дашборд мониторинга работы Базы данных СУБД Platform V Pangolin SE (PSQ)#
Дашборд является общедоступным для пользователей. Его необходимо импортировать (см. инструкцию) Как импортировать дашборды.
Для контроля за БД СУБД Platform V Pangolin в Indicator (INDA) используется дашборд Мониторинг баз СУБД Platform V Pangolin.

На данном дашборде отражается общая информация по БД (Время старта БД, версия, использование CPU и памяти) Также можно посмотреть настройки для БД, топ запросов, мониторинг фоновых процессов, статус репликации. Чтобы на дашборде появилась БД необходимо настроить проверки для БД в Osiris.
Настройки проверок в Osiris#
1. Создание учетной записи#
В меню настроек выберите пункт «Управление учетными записями».

Выберите пункт «Добавить учетную запись» для подключения к БД.

Укажите параметры учетной записи и нажать «Создать».

2. Создание сервиса#
Необходимо «Добавить систему» в список топологий.

Выбрать пункт «Добавить Сервис».


3. Добавление соединения к БД (Добавление экземпляров класса)#
Нажать «Добавить инстанс» после выбора сервиса.

В поле Хост необходимо указать настройки JDBC для подключения к БД
4. Добавление SQL запроса (Проверки)#
Необходимо открыть instance (он находится внутри сервиса). У instance нажмите «Проверки». Далее отобразится список проверок и нужно будет нажать «Добавить проверку».

Выберите тип проверки «DB».

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

Нажать «Далее». Нажать «Применить изменения» (кнопка вверху страницы).
5. Список проверок SQL#
Список проверок был утвержден с командой Pangolin, в основу вошли запросы и метрики позволяющие отслеживать состояние БД Postgres SQL SE.
Описание и примеры query#
pg_tablespace_size — Статистика по размеру табличных пространств.
SELECT t.spcname as tablespace, d.datname as database, pg_tablespace_size(t.spcname) as size FROM pg_tablespace t JOIN pg_database d ON (t.oid = d.dattablespace)"
pg_stat_statements — Статистика по запросам.
SELECT t2.rolname, t3.datname, queryid, calls, total_time / 1000 as total_time_seconds, min_time / 1000 as min_time_seconds, max_time / 1000 as max_time_seconds, mean_time / 1000 as mean_time_seconds, stddev_time / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid)"
pgse_vacuum — Процессы vacuum.
select count(query) as regular FROM pg_stat_activity where query ~* '^autovacuum*(?:(?!.*\bwraparound\b))'```
pgse_vacuum_user — Количество инициированных пользователем процессов vacuum в момент опроса.
select count(query) as user
FROM pg_stat_activity
where query ~* '^vacuum'
pgse_vacuum_wraparound — Количество процессов vacuum запущенных, чтобы избежать wraparound в момент опроса
select count(query) as wraparound
FROM pg_stat_activity where query ~* '^autovacuum.*to prevent wraparound'
pgse_autovacuum_limit — Текущее значение Transaction ID на момент сбора метрик.
SELECT datname, 2147483647 — age(datfrozenxid) AS to_limit
FROM pg_database
ORDER BY age(datfrozenxid) DESC
pgse_replication — Количество и статус активных слотов репликации
select client_addr,
pg_wal_lsn_diff(pg_current_wal_lsn(),
replay_lsn)::bigint as total_lag_bytes,
extract(epoch from replay_lag) as replay_lag_seconds,
extract(epoch from write_lag) as write_lag_seconds,
extract(epoch from flush_lag) as flush_lag_seconds,
pg_wal_lsn_diff(pg_current_wal_lsn(),sent_lsn)::bigint as pending_bytes,
pg_wal_lsn_diff(sent_lsn,write_lsn)::bigint as write_bytes,
pg_wal_lsn_diff(write_lsn,flush_lsn)::bigint as flush_bytes,
pg_wal_lsn_diff(flush_lsn,replay_lsn)::bigint as replay_bytes
from pg_stat_replication"
pgse_stat_statements_cpu — ТОП запросов с максимальным процессорным временем, обогащен текстом запроса
select t2.rolname,t3.datname,(total_time-blk_read_time-blk_write_time)/calls::numeric(20, 2) as time,
left(query,32) as query,queryid
from pg_stat_statements t1 JOIN pg_roles t2 ON t1.userid=t2.oid JOIN pg_database t3 ON t1.dbid=t3.oid
ORDER by time DESC LIMIT 5
pgse_stat_statements_io — ТОП запросов с максимальным дисковым временем, обогащен текстом запроса
select t2.rolname,t3.datname, ((blk_read_time+blk_write_time)/calls)::numeric(20, 2) as time,
left(query,32) as query,queryid
from pg_stat_statements t1 JOIN pg_roles t2 ON t1.userid=t2.oid
JOIN pg_database t3 ON t1.dbid=t3.oid
ORDER by time DESC LIMIT 5