Как настроить сбор данных для дашборда мониторинга за БД СУБД Platform V Pangolin из компонента Dashboard состояния сервисов в составе продукта Platform V Monitor#

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

  1. Настроены проверки из компонента Dashboard состояния сервисов в составе продукта Platform V Monitor.

  2. Пред настроенный Datasource c метриками из компонента Dashboard состояния сервисов в составе продукта Platform V Monitor.

Дашборд мониторинга работы Базы данных СУБД Platform V Pangolin SE (PSQ)#

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

Для контроля за БД СУБД Platform V Pangolin в Indicator (INDA) используется дашборд Мониторинг баз СУБД Platform V Pangolin.

postgres_se_dashboard

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

Настройки проверок в Osiris#

1. Создание учетной записи#

В меню настроек выберите пункт «Управление учетными записями».

postgres_se_image2021-8-17_11-38-43

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

postgres_se_image2021-8-17_11-40-14

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

postgres_se_image2021-8-17_11-40-31

2. Создание сервиса#

Необходимо «Добавить систему» в список топологий.

postgres_se_image2021-8-17_11-44-22

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

postgres_se_image2021-8-17_11-45-40

postgres_se_image2021-8-17_11-46-57

3. Добавление соединения к БД (Добавление экземпляров класса)#

Нажать «Добавить инстанс» после выбора сервиса.

postgres_se_image2021-8-17_11-52-6

В поле Хост необходимо указать настройки JDBC для подключения к БД

4. Добавление SQL запроса (Проверки)#

Необходимо открыть instance (он находится внутри сервиса). У instance нажмите «Проверки». Далее отобразится список проверок и нужно будет нажать «Добавить проверку».

postgres_se_image2021-8-17_11-56-9

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

postgres_se_image2021-8-17_11-57-3

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

postgres_se_image2021-8-17_11-57-45

Нажать «Далее». Нажать «Применить изменения» (кнопка вверху страницы).

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