Функция предназначена для регулярной автоматической отправки актуального состояния представления pg_stat_statements указанной базы PostgreSQL в сервис holistic.dev для дальнейшего анализа.
Функция может быть использована для интеграции как managed PostgreSQL, так и для on-premise экземпляров PostgreSQL.
После окончания процесса настройки вы сможете увидеть все DML-запросы в соответствующем разделе клиентского кабинета.
Функция разработана для использования в окружении Selectel в среде выполнения nodejs12. Функция выполняет запрос в базу данных, параметры подключения к которой будут переданы в переменной окружения. Для подключения требуется сертификат, предоставляемый Selectel, который поставляется вместе с функцией. Функция выбирает исходный код и метрики всех записей из pg_stat_statements и отправляет на API holistic.dev
- зарегистрируйтесь в личном кабинете
- создайте новый проект
- загрузите DDL проекта
- из аккаунта настроек скопируйте API-key
Экземпляр базы данных должен быть доступен для подключения из функции. Для managed PostgreSQL при создании кластера необходимо создать публичную подсеть для хоста, который будет источником данных для анализа.
В кластере PostgreSQL для выбранной базы данных в пункте Базы данны -> Расширения выбрать "pg_stat_statements".
Для активации расширения выполните команду в базе, для которой производится интеграция
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
pg_stat_statements имеет несколько настроек, с которыми можно ознакомиться в документации к расширению
- скачайте архив из данного репозитория с исходным кодом функции
- в разделе Функции создайте новую функцию и укажите среду выполнения NodeJS 12
- В закладке Код функции -> Загрузить -> Архив, выберете скаченный архив с исходным кодом функции
- Пусть к файлу /faas_selectel_pg/index.js. Обратите внимание, что сначала следует имя архива!
- Вызываемая функция - main
- Укажите переменные окружения:
- HOLISTICDEV_API_KEY - API-key из настроек в личном кабинете
- HOLISTICDEV_PROJECT_NAME - имя вашего проекта
- PG_CONNECTION_STRING - строка подключения из настроек кластера managed PostgreSQL или on-premise экземпляра в формате
postgres://<user>:<password>@<host>:<port>/<dbname>
.
- Нажмите "Сохранить и развернуть"
- в разделе "Тестирование" нажмите "Вызвать". После запуска должен получится Результат: SUCCESS, в поле под результатом
{ "body": null }
, Логи: сообщение в формате stdout: { status: 'OK', data: { pgss: { income: 64, new: 19 } } } - в закладке "Логи" через несколько секунд появятся те же данные.
- в закладке функции Триггеры создайте новый триггер с типом "Cron-таймер"
- в параметре Cron-выражение укажите
*/15 * * * *
. Это значение позволит запускать отправку каждые 15 минут. Не рекомендуется устанавливать данное значение для излишне частого срабатывания, т.к. история хранения метрик pg_stat_statements в сервисе holistic.dev имеет конечную глубину. - Нажмите "Сохранить"