Расширение PostgreSQL: различия между версиями
Новая страница: «== Обзор == Решение для мониторинга '''PostgresSQL''' основано на подходе удалённого мониторинга,...» |
Нет описания правки |
||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
{| class="wikitable" | |||
!Версия | |||
!Изменения | |||
|- | |||
|2.9.7 | |||
| | |||
* Версия расширения для Ключ-АСТРОМ <code>1.318.0+</code>. | |||
* Добавлены наборы функций <code>SLRU</code>, <code>I/O</code>, <code>User Functions</code> и <code>Subscription</code>. | |||
* Добавлены новые метрики репликации, конфликтов, WAL и активности PostgreSQL. | |||
* Добавлены описания наборов функций. | |||
* Добавлены шаблоны оповещений о недоступности экземпляра и переходе в режим восстановления. | |||
* Добавлены переходы к сущностям PostgreSQL со страницы хоста и из обзорной панели. | |||
* Исправлены запросы обзорной панели для анализа производительности и блокировок. | |||
* Исправлено создание сущностей при отсутствии обязательных измерений. | |||
* Для PostgreSQL 16 и новее добавлен сбор статистики ввода-вывода. | |||
* Сохранено использование функции <code>astromkey.astromkey_execution_plan</code> для получения планов выполнения. | |||
|- | |||
|2.6.6 | |||
| | |||
* Версия расширения для Ключ-АСТРОМ <code>1.310.0+</code>. | |||
* Версия основана на 2.6.5 и содержит те же функции мониторинга. | |||
* Схема для получения планов выполнения изменена на <code>astromkey</code>. | |||
* Функция получения планов выполнения переименована в <code>astromkey.astromkey_execution_plan</code>. | |||
|- | |||
|2.6.5 | |||
| | |||
* Версия расширения для Ключ-АСТРОМ <code>1.310.0+</code>. | |||
* Добавлен сбор конфигурации PostgreSQL. | |||
* Добавлены наборы функций <code>Replication</code> и <code>Locks</code>. | |||
* Добавлены метрики размера базы данных и возраста идентификатора транзакции. | |||
* Добавлен сбор длительных и наиболее ресурсоёмких запросов из <code>pg_stat_activity</code> и <code>pg_stat_statements</code>. | |||
* Добавлены отдельные интервалы сбора основных и длительных запросов. | |||
* Добавлен параметр <code>Endpoint Metadata</code>. | |||
* Добавлена возможность получения планов выполнения запросов. | |||
* Добавлена готовая обзорная панель. | |||
* Версия PostgreSQL добавлена в атрибуты сущности экземпляра. | |||
* Добавлена связь между экземпляром PostgreSQL и соответствующим процессом при наличии ЕдиногоАгента. | |||
* Команды <code>ALTER</code> исключены из сбора наиболее ресурсоёмких запросов. | |||
* Метрика <code>postgres.blk_hit.count</code> переименована в <code>postgres.blks_hit.count</code>. | |||
* Метрики привязаны к соответствующим типам сущностей. | |||
* Из метрик активности удалено изменчивое измерение <code>client_port</code>. | |||
* Исправлен сбор метрик фоновой записи в PostgreSQL 17. | |||
* Исправлен сбор размера разницы WAL для реплицируемых экземпляров. | |||
* Исправлен расчёт продолжительности запросов внутри транзакций. | |||
* Исправлены графики использования подключений и анализа запросов. | |||
* Исправлено значение по умолчанию для интервала сбора длительных запросов. | |||
|- | |||
|1.2.0 | |||
|Улучшения: | |||
* Мониторинг баз данных был улучшен для поддержки всех версий Postgres, начиная с 11. Ранее он работал только для Postgres 14+. | |||
* Все показатели были привязаны к соответствующему типу сущности, чтобы обеспечить корректное отображение показателей при активации менеджмент зон и фильтрации по сущности. | |||
Исправления ошибок: | |||
* <code>client_port</code> измерение было удалено из следующих метрик, поскольку поле не несет ценной информации и является слишком изменчивым, что приводит к созданию слишком большого количества отдельных временных рядов. | |||
** <code>postgres.activity.active</code> | |||
** <code>postgres.activity.fastpath_function_call</code> | |||
** <code>postgres.activity.idle_in_transaction_aborted</code> | |||
** <code>postgres.activity.idle_in_transaction</code> | |||
** <code>postgres.activity.idle</code> | |||
|- | |||
|1.1.0 | |||
|Новые функции: | |||
* Новые наборы функций | |||
* Новый тип топологии: табличное пространство | |||
* Метрика разности WAL | |||
* Видимость на уровне запроса для самых длительных запросов | |||
* Новые метрики и диаграммы на экранах сущностей | |||
Исправления ошибок: | |||
* Дублирующиеся топологические сущности | |||
* Неправильные типы метрик | |||
* Неправильная метрика восстановления | |||
* Ссылки на панель инструментов и экраны сущностей | |||
|- | |||
|1.0.3 | |||
| | |||
* Исправление изменения схемы | |||
|- | |||
|1.0.2 | |||
| | |||
* Исправлена ссылка на конфигурации в обзорной панели. | |||
|- | |||
|1.0.1 | |||
|Начало поддержки расширения PostgreSQL | |||
|} | |||
== Обзор == | == Обзор == | ||
Решение для мониторинга '''PostgresSQL''' основано на подходе удалённого мониторинга, реализованном в виде расширения Ключ-АСТРОМ АктивногоШлюза. Расширение запрашивает ключевые показатели производительности и работоспособности баз данных '''Postgres'''. Затем искусственный интеллект от Ключ-АСТРоМ анализирует эти показатели для выявления отклонений и проблем. | Решение для мониторинга '''PostgresSQL''' основано на подходе удалённого мониторинга, реализованном в виде расширения Ключ-АСТРОМ АктивногоШлюза. Расширение запрашивает ключевые показатели производительности и работоспособности баз данных '''Postgres'''. Затем искусственный интеллект от Ключ-АСТРоМ анализирует эти показатели для выявления отклонений и проблем. | ||
Текущая версия от 19:16, 15 сентября 2026
| Версия | Изменения |
|---|---|
| 2.9.7 |
|
| 2.6.6 |
|
| 2.6.5 |
|
| 1.2.0 | Улучшения:
Исправления ошибок:
|
| 1.1.0 | Новые функции:
Исправления ошибок:
|
| 1.0.3 |
|
| 1.0.2 |
|
| 1.0.1 | Начало поддержки расширения PostgreSQL |
Обзор
Решение для мониторинга PostgresSQL основано на подходе удалённого мониторинга, реализованном в виде расширения Ключ-АСТРОМ АктивногоШлюза. Расширение запрашивает ключевые показатели производительности и работоспособности баз данных Postgres. Затем искусственный интеллект от Ключ-АСТРоМ анализирует эти показатели для выявления отклонений и проблем.
Варианты использования
- Контролируйте состояние работоспособности и производительность своей настройки PostgreSQL.
- Обнаруживайте аномалии и оповещайте о них.
- Примите превентивные меры для предотвращения проблем в обслуживании.
Мониторинг популярных запросов
Если мониторинг логов Ключ-АСТРОМ включён и pg_stat_statements представление доступно, Ключ-АСТРОМ будет собирать 100 самых популярных запросов (отсортированных по общему времени выполнения) каждые 5 минут и сохранять их в виде логов. Эти логи доступны либо на экране экземпляра базы данных, либо в приложении Базы данных в разделе Топ-запросов по общему времени выполнения.
Чтобы отфильтровать эти запросы на дашборде или в блокноте, можно использовать фильтры по dt.extension.name = com.astromkey.extension.postgres и event.group = top_queries. Ниже представлен пример DQL-запроса:
fetch logs | filter dt.extension.name=="com.astromkey.extension.postgres" and event.group=="top_queries" | sort total_exec_time desc
Независимо от того, pg_stat_statements доступно это или нет, Ключ-АСТРОМ все равно будет собирать запросы pg_stat_activity как часть набора функций Queries, которые аналогичным образом поступают в виде логов с event.group = longest_queries.
Получение деталей плана выполнения
Для пользователей SaaS, имеющих доступ к приложению Базы данных и включённых функциях мониторинга самых популярных запросов (см. предыдущий раздел), доступна функция получения планов выполнения для этих запросов. Это можно сделать в приложении Базы данных в разделе Statement performance, щёлкнув Request по плану выполнения конкретного запроса.
Для этого query расширение попытается выполнить следующее:
SELECT * from astromkey.astromkey_execution_plan({query})
и затем загрузить в Ключ-АСТРОМ первую строку столбца с именем explain. Эти планы выполнения загружаются в виде логов с event.group = execution_plans.
Начать
Активация
Действия по активации удаленного мониторинга (версия 1.255+):
- Активируйте расширение в Ключ-АСТРОМ, перейдя по ссылке:
- Ключ-АСТРОМ → Расширения → PostgreSQL → Добавить в среду
- Добавить новую конфигурацию мониторинга
Требования
- Должно быть установлено соединение между АктивнымШлюзом, где развернуто расширение, и базой данных Postgres.
- Необходимо предоставить пользователю базы данных соответствующие разрешения.
Пример:
CREATE USER astromkey WITH PASSWORD '<PASSWORD>' INHERIT; GRANT pg_monitor TO astromkey;
Для мониторинга самых популярных запросов:
pg_stat_statementsпросмотр (должен быть включен) [ https://www.postgresql.org/docs/current/pgstatstatements.html#PGSTATSTATEMENTS ].pg_stat_statements.track_planningдолжен быть включен, чтобы разрешить выборку планов.
Для мониторинга деталей плана исполнения:
- В базе данных должна быть создана специальная функция
astromkey.astromkey_execution_plan, к которой вы будете подключаться и из которой будут извлекаться планы выполнения.
CREATE SCHEMA astromkey;
CREATE OR REPLACE FUNCTION astromkey.astromkey_execution_plan(
query text,
OUT explain JSON
) RETURNS SETOF JSON
LANGUAGE plpgsql
VOLATILE
RETURNS NULL ON NULL INPUT
SECURITY DEFINER
ROWS 1
SET plan_cache_mode = force_generic_plan
AS
$$DECLARE
arg_count integer;
open_paren text;
close_paren text;
explain_cmd text;
json_result json;
BEGIN
/* reject statements containing a semicolon in the middle */
IF pg_catalog.strpos(
pg_catalog.rtrim(astromkey_execution_plan.query, ';'),
';'
) OPERATOR(pg_catalog.>) 0 THEN
RAISE EXCEPTION 'query string must not contain a semicolon';
END IF;
/* get the parameter count */
SELECT count(*) INTO arg_count
FROM pg_catalog.regexp_matches( /* extract the "$n" */
pg_catalog.regexp_replace( /* remove single quoted strings */
astromkey_execution_plan.query,
'''[^'']*''',
'',
'g'
),
'\$\d{1,}',
'g'
);
IF arg_count OPERATOR(pg_catalog.=) 0 THEN
open_paren := '';
close_paren := '';
ELSE
open_paren := '(';
close_paren := ')';
END IF;
/* construct a prepared statement */
EXECUTE
pg_catalog.concat(
'PREPARE _stmt_',
open_paren,
pg_catalog.rtrim(
pg_catalog.repeat('unknown,', arg_count),
','
),
close_paren,
' AS ',
astromkey_execution_plan.query
);
/* construct an EXPLAIN statement */
explain_cmd :=
pg_catalog.concat(
'EXPLAIN (FORMAT JSON, ANALYZE FALSE) EXECUTE _stmt_',
open_paren,
pg_catalog.rtrim(
pg_catalog.repeat('NULL,', arg_count),
','
),
close_paren
);
/* get and return the plan */
EXECUTE explain_cmd INTO json_result;
RETURN QUERY SELECT json_result;
/* delete the prepared statement */
DEALLOCATE _stmt_;
END;$$;
- Обратите внимание, что функция выше определена с
SECURITY DEFINER, то есть она выполняется с привилегиями пользователя, который её определил, а не того, кто её выполняет. Это связано с тем, что для запросаEXPLAINтребуются те же разрешения, что и для его выполнения, то есть пользователь, с которым определена эта функция, должен иметь достаточные привилегии для запускаPREPAREиEXPLAINдля запросов, которые она будет объяснять. Поэтому для полной функциональности убедитесь, что функция определена с соответствующим пользователем. - Пользователю, осуществляющему мониторинг, необходимо иметь
USAGEгрант наastromkeyсхему.
GRANT USAGE ON SCHEMA astromkey to <username>
- В некоторых конфигурациях PostgreSQL вам также может потребоваться настроить
search_pathдля пользователя мониторинга:
ALTER USER astromkey SET search_path to astromkey, public;
Подробности
Ограничения
Популярные запросы:
- Из соображений безопасности
ALTERутверждения исключены из коллекции самых популярных запросов.
Подробности плана выполнения:
- Доступно только для пользователей SaaS с установленным приложением DB. Разрешение
extensions:configuration.actions:writeтребуется для запуска загрузки плана выполнения. - План выполнения можно получить только из базы данных, в которой была создана функция
astromkey.astromkey_execution_plan.
Лицензирование
Метрики, собираемые с помощью этого расширения, используют единицы данных Ключ-АСТРОМ ИИ (см. DDU для метрик).
Грубую оценку количества DDU, потребляемых метрическим методом, можно получить с помощью следующей формулы:
( (11 * number of instances) + (29 * number of databases) + (1 * number of tablespaces) ) * 525.6 DDUs/year
Для логов действует стандартное потребление DDU для мониторинга логов. В зависимости от вашей модели лицензирования, см. потребление DDU для мониторинга логов.
Если ваша лицензия включает пользовательские метрики. Каждая пользовательская метрика эквивалентна 525,6 DDU/год. См. документацию Расчёт стоимости метрики.
Информация о совместимости
Расширение предназначено для работы с PostgreSQL версии 11 и более поздних версий.