Расширение PostgreSQL: различия между версиями

Материал из Документация Ключ-АСТРОМ
Нет описания правки
Нет описания правки
Строка 2: Строка 2:
!Версия
!Версия
!Изменения
!Изменения
|-
|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
|1.2.0

Версия от 18:45, 15 сентября 2026

Версия Изменения
2.9.7
  • Версия расширения для Ключ-Астроном 1.318.0+.
  • Добавлены наборы функций SLRU, I/O, User Functions и Subscription.
  • Добавлены новые метрики репликации, конфликтов, WAL и активности PostgreSQL.
  • Добавлены описания наборов функций.
  • Добавлены шаблоны оповещений о недоступности экземпляра и переходе в режим восстановления.
  • Добавлены переходы к сущностям PostgreSQL со страницы хоста и из обзорной панели.
  • Исправлены запросы обзорной панели для анализа производительности и блокировок.
  • Исправлено создание сущностей при отсутствии обязательных измерений.
  • Для PostgreSQL 16 и новее добавлен сбор статистики ввода-вывода.
  • Сохранено использование функции astromkey.astromkey_execution_plan для получения планов выполнения.
2.6.6
  • Версия расширения для Ключ-Астроном 1.310.0+.
  • Версия основана на 2.6.5 и содержит те же функции мониторинга.
  • Схема для получения планов выполнения изменена на astromkey.
  • Функция получения планов выполнения переименована в astromkey.astromkey_execution_plan.
2.6.5
  • Версия расширения для Ключ-Астроном 1.310.0+.
  • Добавлен сбор конфигурации PostgreSQL.
  • Добавлены наборы функций Replication и Locks.
  • Добавлены метрики размера базы данных и возраста идентификатора транзакции.
  • Добавлен сбор длительных и наиболее ресурсоёмких запросов из pg_stat_activity и pg_stat_statements.
  • Добавлены отдельные интервалы сбора основных и длительных запросов.
  • Добавлен параметр Endpoint Metadata.
  • Добавлена возможность получения планов выполнения запросов.
  • Добавлена готовая обзорная панель.
  • Версия PostgreSQL добавлена в атрибуты сущности экземпляра.
  • Добавлена связь между экземпляром PostgreSQL и соответствующим процессом при наличии ЕдиногоАгента.
  • Команды ALTER исключены из сбора наиболее ресурсоёмких запросов.
  • Метрика postgres.blk_hit.count переименована в postgres.blks_hit.count.
  • Метрики привязаны к соответствующим типам сущностей.
  • Из метрик активности удалено изменчивое измерение client_port.
  • Исправлен сбор метрик фоновой записи в PostgreSQL 17.
  • Исправлен сбор размера разницы WAL для реплицируемых экземпляров.
  • Исправлен расчёт продолжительности запросов внутри транзакций.
  • Исправлены графики использования подключений и анализа запросов.
  • Исправлено значение по умолчанию для интервала сбора длительных запросов.


1.2.0 Улучшения:
  • Мониторинг баз данных был улучшен для поддержки всех версий Postgres, начиная с 11. Ранее он работал только для Postgres 14+.
  • Все показатели были привязаны к соответствующему типу сущности, чтобы обеспечить корректное отображение показателей при активации менеджмент зон и фильтрации по сущности.

Исправления ошибок:

  • client_port измерение было удалено из следующих метрик, поскольку поле не несет ценной информации и является слишком изменчивым, что приводит к созданию слишком большого количества отдельных временных рядов.
    • postgres.activity.active
    • postgres.activity.fastpath_function_call
    • postgres.activity.idle_in_transaction_aborted
    • postgres.activity.idle_in_transaction
    • postgres.activity.idle
1.1.0 Новые функции:
  • Новые наборы функций
  • Новый тип топологии: табличное пространство
  • Метрика разности WAL
  • Видимость на уровне запроса для самых длительных запросов
  • Новые метрики и диаграммы на экранах сущностей

Исправления ошибок:

  • Дублирующиеся топологические сущности
  • Неправильные типы метрик
  • Неправильная метрика восстановления
  • Ссылки на панель инструментов и экраны сущностей
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;

Для мониторинга самых популярных запросов:

Для мониторинга деталей плана исполнения:

  • В базе данных должна быть создана специальная функция 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 и более поздних версий.