.. _counter_provider_config: Конфигурация модуля Counter-Provider (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл модуля, в котором задана его логика и порядок работы сервиса: - среда разработки; - настройка счетчика; - настройка подключения к Zookeeper, а также другие настройки необходимые для корректной работы сервиса. .. _counter_provider_application_yml: Пример файла application.yml ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ В конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml environment: name: ${ENVIRONMENT_NAME:test} http-server: port: ${HTTP_PORT:9000} counter: start-number: ${COUNTER_START_NUMBER:1} retry-after-failure: ${COUNTER_RETRY_AFTER_FAILURE:3} update-timeout: ${COUNTER_UPDATE_TIMEOUT:} increment-gap: ${INCREMENT_GAP:1} zookeeper: connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000} chroot: ${ZOOKEEPER_DS_CHROOT:/adapter} persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore | zookeeper prostore-rest-client: host: ${PS_HOST:localhost} port: ${PS_PORT:9195} http: max-pool-size: ${PS_MAX_POOL_SIZE:5} persistence-datamart: ${PERSISTENCE_DATAMART:persistence} datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора counter-prefix: ${COUNTER_PREFIX:counter_} readonly-retry-delay: ${READONLY_RETRY_DELAY:5s} spring: liquibase: enabled: ${LIQUIBASE_ENABLED:true} analytics-enabled: false change-log: classpath:/liquibase-changes/changelog.xml driver-class-name: ru.datamart.prostore.jdbc.Driver url: jdbc:prostore://${prostore-rest-client.host}:${prostore-rest-client.port}/${prostore-rest-client.persistence-datamart} database-change-log-table: counter_provider_changelog database-change-log-lock-table: counter_provider_changeloglock liquibase-schema: ${prostore-rest-client.persistence-datamart} default-schema: ${prostore-rest-client.persistence-datamart} user: "" password: "" # Настройки модуля сбора информации о компонентах витрины component-info: enabled: true # Массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте datasource: [] # Схема Prostore datamart: component_info # Имя таблицы для записи информации о компоненте table-name: component_info # Период попыток создания схемы, при неуспехе create-table-period: 60s # Период публикации health-check publish-period: 60s # Период после которого компонент считается неактивным при отсутствии health-check timeout-active: 300s # Список элементов конфига маскируемых при отправке, # если указан узловой элемент, то маскируются все вложенные в него элементы secrets: - keys - http-server.port - zookeeper.connection-string - zookeeper.chroot - prostore-rest-client.host - prostore-rest-client.port - metrics.port metrics: port: ${METRICS_PORT:9837} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации сервиса генерации уникального номера осуществляется путем редактирования параметров настроек в файле ``application.yml``, где настраиваются секции: - ``environment`` - указывается среда разработки; - ``http-server`` - указывается порт веб-сервера; - ``counter`` - указываются настройки счетчика; - ``zookeeper`` - определяет настройки подключения к Zookeeper; - ``persistence-mode`` - настройки хранения данных; - ``prostore-rest-client`` - блок параметров конфигурирования взаимодействия с Prostore; - ``spring`` - параметры для определения наименований служебных таблиц liquibase; - ``component-info`` - настройки модуля сбора информации о компонентах витрины; - ``metrics`` - настройка порта для получения метрик. Секция environment ################## В секции ``environment`` указывается среда разработки (dev, test, stable, prod). Например: .. code-block:: yaml environment: name: ${ENVIRONMENT_NAME:test} **Параметры настроек** - ``name`` - среда разработки, например ``ENVIRONMENT_NAME:test``. Секция http-server ################### В секции ``http-server`` указывается порт веб-сервера. Например: .. code-block:: yaml http-server: port: ${HTTP_PORT:9000} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``HTTP_PORT:9000``. Секция counter ############## В секции ``counter`` можно настраивать начальный номер счетчика, а также количество попыток записи счетчика после ошибки обновления. Например: .. code-block:: yaml counter: start-number: ${COUNTER_START_NUMBER:1} retry-after-failure: ${COUNTER_RETRY_AFTER_FAILURE:3} update-timeout: ${COUNTER_UPDATE_TIMEOUT:} increment-gap: ${INCREMENT_GAP:1} **Параметры настроек** - ``start-number`` - начальный номер счетчика, например ``COUNTER_START_NUMBER:1``; - ``retry-after-failure``- количество попыток записи счетчика после ошибки обновления, например ``COUNTER_RETRY_AFTER_FAILURE:3``; - ``update-timeout`` - таймаут обновления счетчика, например ``COUNTER_UPDATE_TIMEOUT:``; - ``increment-gap`` - шаг инкремента, например ``INCREMENT_GAP:1``. Секция zookeeper ################ В секции ``zookeeper`` настраиваются параметры подключения к Zookeeper. Например: .. code-block:: yaml zookeeper: connection-string: ${ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000} chroot: ${ZOOKEEPER_DS_CHROOT:/adapter} **Параметры настроек** - ``connection-string`` - Подключение к Zookeeper DS, например ``ZOOKEEPER_DS_ADDRESS:t5-adsp-01.ru-central1.internal``; - ``connection-timeout-ms`` - Zookeeper DS таймаут подключения, например ``ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000``; - ``session-timeout-ms`` - Zookeeper DS таймаут сессии, например ``ZOOKEEPER_DS_SESSION_TIMEOUT_MS:86400000``; - ``chroot`` - Zookeeper DS chroot path, например ``ZOOKEEPER_DS_CHROOT:/adapter``. Секция persistence-mode ############################ В секции ``persistence-mode`` указывается настройка хранения данных: или в Prostore, или в Zookeeper. В случае выбора Prostore автоматически создаются необходимые таблицы. Например: .. code-block:: yaml persistence-mode: ${PERSISTENCE_MODE:prostore} # prostore | zookeeper **Параметры настроек** - ``persistence-mode`` - настройка хранения данных, например ``PERSISTENCE_MODE:prostore``. Если в конфигурации задана настройка ``persistence-mode: prostore``, при запуске Counter-provider выполняется миграция счетчиков из sequence в логические таблицы Prostore (с использованием liquibase). .. attention:: Миграция из Zookeeper в логические таблицы Prostore не реализуется. При необходимости миграции счетчиков из Zookeeper необходимо выполнить последовательное обновление через одну из версий Витрины из диапазона с 1.16.х по 2.6.х Секция prostore-rest-client ############################ В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с Prostore. Например: .. code-block:: yaml prostore-rest-client: host: ${PS_HOST:localhost} port: ${PS_PORT:9195} http: max-pool-size: ${PS_MAX_POOL_SIZE:5} persistence-datamart: ${PERSISTENCE_DATAMART:persistence} datasource: ${PERSISTENCE_DATASOURCE:} # по умолчанию пусто, тогда берется единственный датасорс из настроек Простора counter-prefix: ${COUNTER_PREFIX:counter_} readonly-retry-delay: ${READONLY_RETRY_DELAY:5s} **Параметры настроек** - ``host`` - адрес Prostore, например ``PS_HOST:localhost``; - ``port`` - порт Prostore, например ``PS_PORT:9195``; - ``max-pool-size`` - максимальное число подключений к Prostore, например ``PS_MAX_POOL_SIZE:8``; - ``persistence-datamart`` - настройка хранения данных, например ``{PERSISTENCE_DATAMART:persistence}``; - ``datasource`` - источник данных, например ``PERSISTENCE_DATASOURCE:``, по умолчанию пусто, в этом случае берется единственный датасорс из настроек Простора; - ``counter-prefix`` - префикс счетчика; - ``readonly-retry-delay`` - время задержки перед повтором отправки запроса к простору в случае ошибки readonly. Секция spring #################### В секции ``spring`` указываются параметры для определения наименований служебных таблиц liquibase. Например: .. code-block:: yaml spring: liquibase: enabled: ${LIQUIBASE_ENABLED:true} analytics-enabled: false change-log: classpath:/liquibase-changes/changelog.xml driver-class-name: ru.datamart.prostore.jdbc.Driver url: jdbc:prostore://${prostore-rest-client.host}:${prostore-rest-client.port}/${prostore-rest-client.persistence-datamart} database-change-log-table: counter_provider_changelog database-change-log-lock-table: counter_provider_changeloglock liquibase-schema: ${prostore-rest-client.persistence-datamart} default-schema: ${prostore-rest-client.persistence-datamart} user: "" password: "" **Параметры настроек** - ``enabled`` - признак включения/отключения миграций; - ``analytics-enabled`` - флаг подключения статистики; - ``change-log`` - путь к файлам миграций, которые находятся внутри jar; - ``driver-class-name`` - имя JDBC-драйвера Prostore. Константа, без переопределения. - ``url`` - адрес подключения к простору в формате JDBC. Переопределять не потребуется, конструируется из параметров подключения к Prostore. - ``database-change-log-table`` - имя таблицы хранения истории выполненных миграций; - ``database-change-log-lock-table`` - имя таблицы для блокировок, константа; - ``liquibase-schema`` - имя датамарта, в которой распалагаются 2 таблицы (database-change-log-table, database-change-log-lock-table) - ``default-schema`` - имя датамарта для системных таблиц. Так же заполняется из блока конфигурации Prostore. - ``user`` - имя пользователя Prostore; - ``password`` - пароль пользователя Prostore. Секция component-info ######################### В секции ``component-info`` хранятся настройки компонента сбора информации о компонентах витрины. Например: .. code-block:: yaml # Настройки модуля сбора информации о компонентах витрины component-info: enabled: true # Массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте datasource: [] # Схема Prostore datamart: component_info # Имя таблицы для записи информации о компоненте table-name: component_info # Период попыток создания схемы, при неуспехе create-table-period: 60s # Период публикации health-check publish-period: 60s # Период после которого компонент считается неактивным при отсутствии health-check timeout-active: 300s # Список элементов конфига маскируемых при отправке, # если указан узловой элемент, то маскируются все вложенные в него элементы secrets: - keys - http-server.port - zookeeper.connection-string - zookeeper.chroot - prostore-rest-client.host - prostore-rest-client.port - metrics.port **Параметры настроек** - ``enabled`` - статус подключения компонента, указывается булево значение; - ``datasource`` - массив датасорсов типа ADP Prostore, которые нужно использовать для хранения данных о компоненте; - ``datamart`` - схема Prostore; - ``table-name`` - имя таблицы для записи информации о компоненте; - ``create-table-period`` - период попыток создания схемы, при неуспехе, указывается в секундах; - ``publish-period`` - период публикации health-check, указывается в секундах; - ``timeout-active`` - период после которого компонент считается неактивным при отсутствии health-check, указывается в секундах; - ``secrets`` - список элементов конфига маскируемых при отправке, если указан узловой элемент, то маскируются все вложенные в него элементы. Секция metrics ################ В секции ``metrics`` настраивается порт получения метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры настроек** - ``port`` - порт для получения метрик, например ``{METRICS_PORT:9837}``.