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

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

Установка компонента Kintsugi agent (DBDA) необходима, чтобы:

  • Получать метрики хоста (CPU, память, и другие).

  • Просматривать логи.

  • Находить установленные СУБД (PostgreSQL или Platform V Pangolin DB) на том же хосте, где установлен агент.

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

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

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

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

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

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

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

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

    unzip /path/to/standard/DBDA-bin-X.X.X-XX_std-distrib.zip && \
    tar -xvf /path/to/standard/package/bh/kgagent-std.tar.gz
    
  2. Скопируйте пакет kgagent-X.X.X-XX.x86_64.rpm на хост с наблюдаемой БД и выполните его установку:

    rpm -i /path/to/standard/kgagent-X.X.X-XX.x86_64.rpm
    
  3. Если используются самоподписанные сертификаты, скопируйте сертификаты agent.crt и root_cert.crt из /path/to/standard/package/conf/conf/secrets/ssl на хост с наблюдаемой БД в директорию /etc/kgagent.

  4. Выполните конфигурацию компонента kgagent:

    • Запустите /etc/kgagent/configure.sh и ответьте на вопросы мастера установки:

      sudo /etc/kgagent/configure.sh
      Enter path to kgagent client certificate [kgagent.crt]: /Абсолютный/путь/к/agent.crt
      Enter path to root certificate [ca.crt]: /Абсолютный/путь/к/root_cert.crt
      Enter kintsugi host address [kintsugi.localhost]: ДОМЕН-ИЛИ-IP-АДРЕС-KINTSUGI
      
    • Заполните файл /etc/kgagent/config.yaml:

      Название

      Значение

      Описание

      certificate.inmemory.path_to_client_cert

      /etc/kgagent/agent.crt

      Путь до файла сертификата agent.crt

      certificate.inmemory.path_to_root_cert

      /etc/kgagent/root_cert.crt

      Путь до файла сертификата удостоверяющего центра

      auth.base_url

      https://<KINTSUGI_ADDRESS>

      URL аутентификации

      auth.api_path

      /

      Путь к ресурсу аутентификации

      auth.header_client_cert

      x-forwarded-client-cert

      Заголовок запроса с сертификатом технического пользователя

      uploader.host

      <KINTSUGI_ADDRESS>

      Адрес хоста загрузки метрик

      uploader.port

      443

      Порт хоста загрузки метрик

      uploader.endpoint

      /agents/stream

      Endpoint для загрузки метрик

      uploader.ssl_enabled

      true

      Режим работы SSL

      metadata.hosts

      <OBSERVED_DB_HOST>

      Перечень адресов хостов наблюдаемых БД

      luavm.memory_limit

      512

      Максимальный объем памяти (в МБ), выделяемый для Lua-машины

      luavm.execution_timeout_sec

      300

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

      Примечание

      Для запуска компонента kgagent из конфигурации по умолчанию необходимо исключить конфигурацию внешнего хранилища секретов certificate.secman.

  5. Выполните запуск компонента kgagent:

    systemctl start kgagent
    
  6. Убедитесь, что запуск прошел штатно и журнал событий не содержит ошибок:

    systemctl status kgagent
    journalctl -u kgagent
    
  7. Выполните вход в веб-интерфейс Kintsugi (DBCM) и на вкладке Метрики создайте объект мониторинга для заданной БД.

    На дашборде Метрики отобразится информация по собранным метрикам хоста.

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

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

Для интеграции Kintsugi agent (DBDA) с HashiCorp Vault/Secret Management System (далее – SecMan) определите следующие параметры в файле /etc/kgagent/config.yaml:

Параметр

Пример

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

Описание

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

""

Нет

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

secman.root_secret_key

"root_cert.secret"

Нет

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

secman.encrypted_storage.data_dir

"./creds"

Да

Каталог для хранения зашифрованных креденшелов

secman.encrypted_storage.private_key_file

"private.key"

Да

Файл приватного ключа для шифрования креденшелов

secman.encrypted_storage.encrypted_creds_file

"creds.enc"

Да

Файл зашифрованных креденшелов

secman.encrypted_storage.key_context

"kgagent:dev:v1.2.3"

Да

Контекст ключа шифрования

Настройка интеграции 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.log_level

info

Да

Максимальный уровень логирования. Иерархия: error < warn < info < debug

logging.fluent_config.inuse

false

Да

Включение параллельной отправки логов во Fluentd

logging.fluent_config.port

24224

Нет

Порт Fluentd/Fluent Bit

logging.fluent_config.async

false

Нет

Асинхронная отправка (рекомендуется для production)

logging.fluent_config.buffer_limit

8192

Нет

Размер буфера в байтах. Для production рекомендуется 8388608 (8 МБ) или 16777216 (16 МБ)

logging.fluent_config.force_stop_async_send

false

Нет

Принудительно останавливать отправку при закрытии, даже если буфер не пуст

logging.output.type

"file"

Да

Тип вывода: "stdout" или "file"

logging.output.log_file

"kgagent.log"

Да, если у параметра logging.output.type установлено значение file

Имя активного лог-файла. Не должно содержать / или \ (защита от Path Traversal)

logging.output.log_path

"/var/log/kgagent"

Да, если у параметра logging.output.type установлено значение file

Путь к директории для хранения логов. Директория должна существовать и быть доступна на запись

logging.output.log_rotate_limit_mb

10

Да, если у параметра logging.output.type установлено значение file

Максимальный размер файла в МБ до ротации. Должен быть > 0

logging.output.log_rotate_interval_days

30

Да, если у параметра logging.output.type установлено значение file

Максимальный возраст архива в днях. Должен быть > 0

logging.output.log_rotate_max_backups

30

Да, если у параметра logging.output.type установлено значение file

Максимальное количество хранимых архивов. Должен быть > 0

logging.output.log_rotate_compress

true

Нет

Сжимать архивы в gzip (экономит ~60% места)

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

"/etc/kgagent/runtime/"

Да

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

luavm.logger.log_prefix

%m [%p]

Да

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

luavm.logger.logs_path

/pgdata/logs

Да

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

luavm.logger.print_period_sec

3600s

Нет

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

luavm.logger.process_period_sec

10s

Нет

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

luavm.logger.release_period_sec

3600s

Нет

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

luavm.logger.timezone

Europe/Moscow

Нет

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

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.endpoint

"/agents/stream"

Да

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

uploader.host

"proxy-example-kintsugi-test"

Да

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

uploader.max_sec_for_reconnect

180

Нет

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

uploader.base_retry_interval_sec

10

Нет

Базовый интервал (в секундах) для экспоненциального backoff с джиттер при повторном подключении к agentway

cert_cache_file

cert_cache.enc

Нет

Имя файла для диск-кеша сертификата. Расположен в директории, указанной в secman.encrypted_storage.data_dir

cert_cache_ttl

6h

Нет

Время жизни сертификата в кеше (память + диск). Если кеш старше TTL, выполняется фоновое обновление из SecMan

min_secman_interval

1h

Нет

Минимальный интервал (в часах) между обращениями к SecMan за сертификатом. Предотвращает «шторм» запросов при повторных reconnect’ах

uploader.min_sec_for_reconnect

10

Нет

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

uploader.port

443

Да

Порт agentway

uploader.ssl_enabled

true

Нет

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

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

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

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

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

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