Установка
Ссылка на публичный репозиторий: https://git.angara.cloud/gbgreenplum/greenplum.metric.hook
Предварительные требования
- g++ 7.5.0+
- CMake
- Greenplum 6.x
- GRPC 1.46+
- Ninja (опционально)
Установка через плейбук
Для установки модуля greenplum.metric.hook необходимо запустить плейбук GP_hooklib согласно инструкции на соответствующей странице.
Ручная установка
После успешной компиляции в папке сборки создается модуль hook/libgreenplum.metric.hook.so. Подробнее на странице Сборка.
Модуль hook/libgreenplum.metric.hook.so необходимо скопировать в Greenplum:
Необходимо скопировать модуль на все сегменты (мастер и сегменты). Для этого можно использовать утилиту gpscp:
gpscp -f hostfile libgreenplum.metric.hook.so =:/usr/local/greenplum/lib/postgresql/libgreenplum.metric.hook.so
Убедиться, что пользователь, под которым работает Greenplum, имеет права на доступ к библиотеке. В примере ниже предполагается, что Greenplum функционирует под пользователем gpadmin:gpadmin:
Необходимо добавить использование метрик в конфигурационный файл postgresql.conf Greenplum в переменную shared_preload_libraries.
Перед внесением изменений проверить текущее значение параметра shared_preload_libraries:
Если параметр shared_preload_libraries пуст, установить его значение:
Если параметр уже содержит другие библиотеки, добавить библиотеку libgreenplum.metric.hook в список:
После добавления библиотеки в shared_preload_libraries необходимо перезагрузить кластер Greenplum.
Установка расширения
После установки библиотеки libgreenplum.metric.hook необходимо установить расширение для удобного доступа к собираемым данным.
- Загрузить окружение:
- Скопировать файлы расширения в соответствующую директорию Greenplum:
на мастер-хосте:
cp -r ./extension/* $GPHOME/share/postgresql/extension/
//gpscp
gpscp -f <gp_host_file> extension/ =:/usr/local/greenplum/share/postgresql/extension/
//scp для каждого сегмента
scp -r extension <ssh_user>@<IP>:/usr/local/greenplum/share/postgresql/extension
-
Установка расширешия:
-
Обновление расширения:
-
Проверка установленных версий расширения:
-
Проверка схем установки расширения:
-
Создание пользователя для gbc_greenplum_metric (при необходимости):
- Настрйка прав доступа
Выполнить следующие SQL-команды от имени пользователя с правами администратора для предоставления необходимых прав доступа пользователю:
GRANT USAGE ON SCHEMA gbc_greenplum_metric TO <USERNAME>;
GRANT EXECUTE ON FUNCTION gbc_greenplum_metric.metric_version() TO <USERNAME>;
GRANT EXECUTE ON FUNCTION gbc_greenplum_metric.metric_version_segments() TO <USERNAME>;
GRANT EXECUTE ON FUNCTION gbc_greenplum_metric.getTableFilesDataByDBOID() TO <USERNAME>;
GRANT EXECUTE ON FUNCTION gbc_greenplum_metric.getFileSizeByOid(integer) TO <USERNAME>;
GRANT EXECUTE ON FUNCTION gbc_greenplum_metric.getFileInfo(integer) TO <USERNAME>;
Функции расширения
- metric_version - выводит информацию о версии установленной библиотеки хуков, на мастере
- metric_version_segments - выводит информацию о версии установленной библиотеки хуков, на каждом сегменте
- getTableFilesDataByDBOID - на вход принимает OID базы данных, отдает информацию о каждой табличке в базе в каждом сегменте
- getFileInfo - на вход принимает OID файла, отдает информацию о файле на каждом сегменте
Пример: