Функция предназначена для регулярной автоматической отправки актуального состояния представления pg_stat_statements указанной базы PostgreSQL в сервис holistic.dev для дальнейшего анализа.
Функция может быть использована для интеграции как managed PostgreSQL, так и для on-premise экземпляров PostgreSQL.
После окончания процесса настройки вы сможете увидеть все DML-запросы в соответствующем разделе клиентского кабинета.
Функция разработана для использования в окружении SberCloud в среде выполнения nodejs12. Функция выполняет запрос в базу данных, параметры подключения к которой будут переданы в переменной окружения. Функция выбирает исходный код и метрики всех записей из pg_stat_statements и отправляет на API holistic.dev
- зарегистрируйтесь в личном кабинете
- создайте новый проект
- загрузите DDL проекта
- из аккаунта настроек скопируйте API-key
Экземпляр базы данных должен быть доступен для подключения из функции, который происходит через внешний IP. Для того, чтобы иметь возможность подключаться к PostgreSQL из вне, необходимо привязать внешний IP в сервисе Elastic IP
Убедитесь, что текущая Security Group экземпляра базы допускает подключение из внешних источников.
Для активации расширения pg_stat_statements требуется выполнить команду
select control_extension('create','pg_stat_statements');
Подробное описание в документации
Для активации расширения выполните команду в базе, для которой производится интеграция
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
pg_stat_statements имеет несколько настроек, с которыми можно ознакомиться в документации к расширению
- скачайте архив из данного репозитория с исходным кодом функции
- в сервисе FunctionGraph перейдите к диалогу создания новой функцию
- укажите Runtime Node.js 12
- Code Entry Mode - Upload ZIP file, выберете скаченный архив с исходным кодом функции
- точка входа - index.handler
- после создания функции в закладке Configuration создайте переменные окружения:
- HOLISTICDEV_API_KEY - API-key из настроек в личном кабинете
- HOLISTICDEV_PROJECT_NAME - имя вашего проекта
- PG_CONNECTION_STRING - строка подключения из настроек кластера managed PostgreSQL или on-premise экземпляра в формате
postgres://<user>:<password>@<host>:<port>/<dbname>
.
- в верхнем меню нажмите "Test"
- в закладке "Logs" через несколько секунд появятся данные. Если все параметры функции указаны верно, в логах вы увидите сериализованный объект вида
{ status: 'OK', data: { pgss: { income: 100, new: 100 } } }
- в закладке Triggers создайте новый триггер с типом Timer
- в разделе Rule укажите Fixed Rate 15 минут. Это значение позволит запускать отправку каждые 15 минут. Не рекомендуется устанавливать данное значение для излишне частого срабатывания, т.к. история хранения метрик pg_stat_statements в сервисе holistic.dev имеет конечную глубину.