Установка компонента 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.yaml.

    Описание конфигурационного файла представлено в разделе Настройка интеграций.

    Примечание

    Проверьте, что определены корректные:

    • Пути в блоке database_path.

    • Параметры сбора логов БД logger.

    • Параметры конфигурации Lua-приложений luavm.

  4. Настройка прав пользователя:

    • Убедитесь, что имеется доступ к исполнению pg_auth_config и pangolin-manager-ctl/patronictl. Путь к этим утилитам должен быть добавлен в переменную окружения PATH.

    • Убедитесь, что имеются права на чтение содержимого директории /pgdata, где хранятся данные PostgreSQL.

  5. Настройка KgAgent для работы с системой управления секретами:

    • Если требуется интеграция Kintsugi agent (DBDA) с хранилищем секретов Secret Management System (далее – SecMan):

      1. Сконфигурируйте параметры блока certificate.secman в файле /etc/kgagent/config.yaml.

        Описание параметров представлено в пункте Конфигурация Kintsugi agent (DBDA) для интеграции с SecMan.

      2. Запустите инициализацию локального хранилища секретов, выполнив команду:

          kgagent init -config /etc/kgagent/config.yaml -role_id <role_id> -secret_id <secret_id>
        

        , где замените значения:

        • <role_id>: идентификатор роли для аутентификации в сервисе SecMan.

        • <secret_id>: ключ JSON-объекта, по которому будет получено значение токена.

    • В случае отсутствия интеграции Kintsugi agent (DBDA) с системой управления секретами, сконфигурируйте параметры certificate.inmemory.path_to_client_cert и certificate.inmemory.path_to_root_cert в файле /etc/kgagent/config.yaml.

      Описание параметров представлено в пункте Конфигурация Kintsugi agent (DBDA) в случае отсутствия интеграции с HashiCorp Vault.

  6. Запустите сервис, выполнив команду:

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

    systemctl status kgagent
    
  8. Настройте лимиты systemd:

    1. Отредактируйте файл службы KgAgent в systemd, чтобы задать лимиты памяти и CPU:

      sudo systemctl edit kgagent
      
    2. Добавьте в открывшемся файле:

      [Service]
      MemoryMax=512M
      CPUQuota=200%
      

      Рекомендуется:

      • Установить MemoryMax лимит памяти в 512 МБ.

      • Установить CPUQuota лимит CPU в 200%.

    3. Перезапустите службу:

      sudo systemctl daemon-reload
      sudo systemctl restart 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 – версия компонента.

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

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

Настройка интеграции с системой управления секретами конфигурируется в одном из двух блоков:

  • certificate.secman – если требуется интеграция Kintsugi agent (DBDA) с хранилищем секретов Secret Management System (далее – SecMan).

  • certificate.inmemory – в случае отсутствия интеграции Kintsugi agent (DBDA) с системой управления секретами.

Конфигурация Kintsugi agent (DBDA) для интеграции с SecMan#

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

Параметр

Пример

Обязательный к заполнению параметр (Да / Нет)

Описание

certificate.secman.host

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

Да

Адрес хоста SecMan

certificate.secman.path

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

Да

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

certificate.secman.namespace

"EXAMPLE_NAMESPACE"

Да

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

certificate.secman.ca_cert

"/path/to/secure_connection.crt"

Да

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

certificate.secman.certificate_parameters.secret_name

"kgagent"

Да

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

certificate.secman.certificate_parameters.client_secret_key

"client_cert.secret"

Да

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

certificate.secman.certificate_parameters.root_secret_key

"root_cert.secret"

Да

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

certificate.secman.approle.endpoint_login

"auth/approle/login"

Да

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

certificate.secman.encrypted_storage.data_dir

./creds

Да

Директория в которую помещен файл с параметрами доступа

certificate.secman.encrypted_storage.private_key_file

"private.key"

Да

Имя приватного ключа для шифрования. Для публичного ключа добавляется суффикс .pub

certificate.secman.encrypted_storage.encrypted_creds_file

"creds.enc"

Да

Зашифрованный файл хранилища

certificate.secman.encrypted_storage.key_context

"kgagent:dev:v1.2.3"

Нет

Опциональная строка-контекст для деривации, может являться частью составного ключа шифрования

Конфигурация Kintsugi agent (DBDA) в случае отсутствия интеграции с HashiCorp Vault#

В случае отсутствия интеграции с HashiCorp Vault выполните конфигурацию следующих параметров:

Параметр

Пример

Обязательный к заполнению параметр (Да / Нет)

Описание

certificate.inmemory.path_to_client_cert

"/path/to/client.crt"

Да

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

certificate.inmemory.path_to_root_cert

"/path/to/root.crt"

Да

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

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

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

Параметр

Пример

Обязательный к заполнению параметр (Да / Нет)

Описание

application.svc_ping_period_sec

15

Нет

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

application.svc_ping_timeout_sec

30

Нет

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

application.svc_shutdown_timeout_sec

10

Нет

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

application.termination_timeout_sec

30

Нет

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

auth.api_path

"/"

Да

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

auth.base_url

"https://example-kintsugi-test"

Да

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

auth.header_client_cert

"x-forwarded-client-cert"

Да

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

collector.collector_buffer_size

10

Нет

Размер буфера для сбора метрик

collector.collector_period_to_collect_sec

10

Нет

Период сбора метрик

logging.fluent_config.inuse

false

Да

Включение / отключение отправки логов в Fluent Bit

logging.log_level

info

Да

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

luavm.database_path.db_address

"localhost:5432"

Да

Адрес базы данных на хосте (IP/hostname + порт)

luavm.database_path.df_pg_path

"/pg*"

Да

Список путей к директориям pg*, где будет выполняться Lua-приложение df для измерения использования диска

luavm.database_path.du_pg_path

"/pgdata*"

Да

Список путей к директориям pgdata*, где будет выполняться Lua-приложение du для анализа объема данных

luavm.database_path.pangolin_manager_config_path

"/etc/pangolin-manager/postgres.yml"

Да

Путь до конфигурации PostgreSQL под управлением Pangolin Manager

luavm.database_path.patroni_config_path

"/etc/patroni/postgres.yml"

Да

Путь до конфигурации PostgreSQL под управлением Patroni

luavm.execution_timeout_sec

300

Да

Максимальное время (в секундах) выполнения Lua-функции

luavm.logger.log_index_database_directory

"/var/log/kgagent/index_db"

Да

Путь к директории, где хранится база данных индексов агента для обработки логов. Если значение не указано, то в логах будет ошибка empty log index database directory

luavm.logger.log_prefix

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

Да

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

luavm.logger.logs_path

/path/to/postgres/logs

Да

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

luavm.logger.print_period_sec

60s

Нет

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

luavm.logger.process_period_sec

20s

Нет

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

luavm.logger.release_period_sec

3600s

Нет

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

luavm.logger.timezone

UTC

Нет

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

luavm.max_concurrency

10

Нет

Максимальное количество одновременно инициализированных LuaVM, используемых для параллельного выполнения Lua-функций. Значение подбирается индивидуально в зависимости от нагрузки и ресурсов хост-системы

luavm.memory_limit

512

Нет

Ограничение памяти на lua state. Рекомендуемое значение 256

luavm.std_libs

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

Нет

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

metadata.hosts

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

Да

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

scanner.scanner_buffer_size

10

Нет

Размер буфера для сбора информации о БД

scanner.scanner_period_to_collect_sec

50

Нет

Период сбора информации о БД

scanner.script.exec.args

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

Да

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

scanner.script.exec.path

"sudo"

Да

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

session.batch_size

30

Нет

Размер пакета

session.read_limit_bytes

32769

Нет

Лимит чтения байтов

uploader.agent_message_buffer

10

Нет

Максимальное количество сообщений, которое может быть сохранено одновременно в канале сообщений агента

uploader.collector_period_to_send_sec

30

Нет

Период отправки собранных метрик

uploader.endpoint

"/agents/stream"

Да

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

uploader.host

"proxy-example-kintsugi-test"

Да

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

uploader.max_sec_for_reconnect

10

Нет

Максимальное значение (в секундах) попытки подключения к agentway

uploader.min_sec_for_reconnect

1

Нет

Минимальное значение (в секундах) попытки подключения к agentway

uploader.period_to_connection_check_sec

5

Нет

Период проверки WebSocket-соединения с agentway

uploader.port

5050

Да

Порт agentway

uploader.scanner_period_to_send_sec

40

Нет

Период отправки собранной информации о БД

uploader.ssl_enabled

false

Нет

Использование защищенного соединения с agentway

uploader.system_message_buffer

10

Нет

Максимальное количество сообщений от agentway, которое может быть сохранено одновременно в канале системных сообщений

uploader.waiting_response_from_server_sec

2

Нет

Время ожидания ответа от agentway при проверке WebSocket-соединения

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

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

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

    При выполнении команды systecmtl status kgagent в ответ получаем успешный статус запуска службы.

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

    В логе KgAgent присутствует запись о корректном получении секретов из SecMan.

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

    В логе KgAgent присутствует запись об успешном подключении к системе Kintsugi (DBCM).

  4. Лимиты службы KgAgent (MemoryMax и CPUQuota) установлены в соответствии с рекомендациями.

    При выполнении команды systemctl status значения Memory и CPU не превышают установленные лимиты.