Установка компонента Kintsugi agent (DBDA) (опциональный)#

Цель выполнения#

Установка компонента Kintsugi agent (DBDA) необходима в случае, если необходимо получать метрики хоста (CPU, память) и обнаруживать установленные СУБД (PostgreSQL или Platform V Pangolin DB) на том же хосте, где установлен агент.

Последовательность действий#

Установка компонента Kintsugi agent (DBDA) делится на этапы:

  1. Ручная установка

  2. Настройка интеграций

  3. Проверка результата

Ручная установка#

Перед началом установки убедитесь, что выполнена подготовка окружения.

Для установки Kintsugi agent (DBDA) выполните следующие шаги из-под привилегированного пользователя:

  1. Распакуйте содержимое архива kgagent.tar.gz.

  2. Выполните установку пакета kgagent-X.X.X-XX.x86_64.rpm.

    Пример установки с помощью менеджера пакетов RPM:

    rpm -i kgagent-X.X.X-XX.x86_64.rpm
    

    Пример установки с помощью менеджера пакетов YUM:

    yum install kgagent-X.X.X-XX.x86_64.rpm
    
  3. Выполните конфигурацию сервиса KgAgent в файле /etc/kgagent/config.yml. Описание конфигурационного файла представлено в пункте Настройка интеграции Kintsugi agent (DBDA) с системой Kintsugi (DBCM).

  4. Подготовьте файл, содержащий wrapped-токен для работы KgAgent с хранилищем секретов Secret Management System (далее – SecMan), разместите его в файловой системе хоста.

    Пример формата исходных данных:

    {
       "secret_id": "<SECMAN TOKEN>"
    }
    
  5. Запустите сервис, выполнив команду:

    systemctl start kgagent
    
  6. Проверьте статус сервиса, выполнив команду:

    systemctl status kgagent
    

Вычисление контрольной суммы find_postgres.sh#

Для вычисления контрольной суммы файла find_postgres.sh, входящего в rpm-пакет KgAgent, выполните команду:

rpm -qp --dump kgagent-X.X.X-XX.x86_64.rpm | grep find_postgres.sh

, где: X.X.X-XX – версия компонента.

Настройка интеграций#

Настройка интеграции с системой управления секретами#

Для интеграции с Kintsugi agent c SecMan определите следующие параметры в файле /etc/kgagent/config.yml:

Параметр

Пример

Описание

secman.host

"https://secman-example.test:8443"

Адрес хоста SecMan

secman.path

"A/DEV/DBCM/KV/example-kintsugi-test/kintsugi-example-test"

Путь к KV-хранилищу SecMan

secman.namespace

"EXAMPLE_NAMESPACE"

Пространство имен SecMan

secman.ca_cert

"/path/to/secure_connection.crt"

Цепочка доверенных удостоверяющих центров для установления безопасного соединения с SecMan

secman.certificate_parameters.secret_name

"kgagent"

Имя объекта, хранящего данные о сертификатах ТУЗ

secman.certificate_parameters.client_secret_key

"client_cert.secret"

Имя объекта, хранящего данные о персональном сертификате ТУЗ

secman.certificate_parameters.root_secret_key

"root_cert.secret"

Имя объекта, хранящего данные о цепочке доверенных удостоверяющих центров, для установления безопасного соединения с Kintsugi (DBCM)

secman.approle.endpoint_login

"auth/approle/login"

Адрес аутентификации Kintsugi agent в сервисе SecMan

secman.approle.role_id

"roleID"

Идентификатор роли для аутентификации в сервисе SecMan

secman.wrapped.file

"/opt/tokens/wrapped.token"

Путь до файла с wrapped-токеном. При старте сервиса из этого файла cчитывается wrapped-токен для получения secret_id. В дальнейшем в данный файл будет производиться запись обновленного wrapped-токена с упакованным secret_id

secman.wrapped.key_to_get_secret_id

"secret_id"

Ключ JSON-объекта, по которому будет получено значение токена

secman.wrapped.ttl

"12h"

Время жизни wrapped-токена в SecMan. Поддерживаемый формат: *s/*m/*h

secman.wrapped.refresh_token_interval.min

"1h"

Минимальное значение интервала обновления wrapped-токена. Поддерживаемый формат: s/*m/*h

secman.wrapped.refresh_token_interval.max

"8h"

Максимальное значение интервала обновления wrapped-токена. Поддерживаемый формат: *s/*m/*h

Настройка работы Lua-приложений#

Для использования Lua-приложений необходимо добавить соответствующий блок конфигурации в файл /etc/kgagent/config.yml:

luavm:
  entry_point: "/kintsugi/services/kgagent/examples/plugins/init.lua"
  std_libs:
    - ""
    - "math"
    - "string"
    - "table"
    - "io"
    - "os"
    - "package"
    - "debug"
    - "channel"
    - "kgsys"
  memory_limit: 512  
  execution_timeout_sec: 300
  path:
    - "cmd/prototype/plugins"

Для настройки работы Lua-приложений в Kintsugi agent (DBDA) определите следующие параметры в файле /etc/kgagent/config.yml:

Параметр

Пример

Описание

entry_point

"/kintsugi/services/kgagent/examples/plugins/init.lua"

Корневой Lua-скрипт

std_libs

"["math", "string", "table", "io", "os", "package", "debug", "channel", "kgsys"]"

Список разрешенных Lua-библиотек

execution_timeout_sec

"300"

Максимальное время выполнения одного Lua-приложения в секундах. По истечении таймаута приложение будет принудительно остановлено

memory_limit

"512"

Ограничение памяти на lua state

path

"cmd/prototype/plugins"

Путь до директории, в которой будут находиться Lua-приложения

Настройка интеграции Kintsugi agent (DBDA) с системой Kintsugi (DBCM)#

Для настройки интеграции Kintsugi agent (DBDA) с системой Kintsugi (DBCM) определите следующие параметры в файле /etc/kgagent/config.yml:

Параметр

Пример

Описание

application.svc_shutdown_timeout_sec

10

Максимальное время (в секундах) ожидания штатного завершения работы подсистемы сервиса

application.svc_ping_period_sec

15

Период (в секундах) проверки жизни подсистем сервиса

application.svc_ping_timeout_sec

30

Максимальное время (в секундах), в течение которого сервис ожидает подтверждения работоспособности его подсистем

application.termination_timeout_sec

30

Максимальное время (в секундах) ожидания штатного завершения работы всего сервиса

certificate.inmemory.path_to_client_cert

"/path/to/client.crt"

Путь к файлу персонального сертификата технической учетной записи (ТУЗ). Параметр используется при отсутствии интеграции с сервисом SecMan

certificate.inmemory.path_to_root_cert

"/path/to/root.crt"

Путь к файлу цепочки сертификатов удостоверяющих центров. Параметр используется при отсутствии интеграции с сервисом SecMan

auth.base_url

"https://example-kintsugi-test"

Базовый URL для аутентификации Kintsugi agent в сервисе Kintsugi (DBCM)

auth.api_path

"/"

Точка подключения для аутентификации в сервисе Kintsugi (DBCM)

auth.header_client_cert

"x-forwarded-client-cert"

Заголовок, содержащий данные об общем сертификате авторизации ТУЗ в сервисе Kintsugi (DBCM)

uploader.host

"proxy-example-kintsugi-test"

Адрес хоста для отправки данных о метриках

uploader.endpoint

"/agents/stream"

Адрес для отправки данных о метриках

scanner.script.exec.path

"sudo"

Режим запуска скрипта поиска файлов СУБД PostgreSQL на хосте

scanner.script.exec.args

["-u", "postgres", "/usr/share/kgagent/find_postgres.sh"]

Команда запуска скрипта поиска файлов СУБД PostgreSQL на хосте

logging.log_level

info

Уровень логирования

metadata.hosts

- "hostname" - "10.XX.XX.XX"

Имя/IP-адрес хоста для сбора данных о метриках

logger.timezone

UTC

Настройка таймзоны

logger.logs_path

/path/to/postgres/logs

Путь до директории, где расположены логи PostgreSQL

logger.log_prefix

%t [%p]: [%l-1] app=%a,user=%u,db=%d,client=%h,type=%b

Формат строки логов. Значение необходимо взять из log_line_prefix в файле postgres.conf. Если в формате в конце строки присутствует пробел - его тоже нужно прописать

logger.print_period_sec

60s

Периодичность вывода общей статистики о доступном интервале данных лог-файлов в лог приложения

logger.release_period_sec

3600s

Периодичность освобождения ресурсов чтения лог-файлов (ридеров)

logger.process_period_sec

20s

Периодичность запуска основного цикла обработки логов

Проверка результата#

Для валидации установки Kintsugi agent (DBDA) убедитесь, что:

  1. Выполнена установка Kintsugi agent (DBDA) на хосте с наблюдаемыми БД.

  2. Выполнена интеграция Kintsugi agent (DBDA) с системой управления секретами.

  3. Выполнена интеграция Kintsugi agent (DBDA) с провайдером аутентификации.

  4. Выполнена интеграция Kintsugi agent (DBDA) с системой Kintsugi (DBCM).