.. _rest_uploader_config: Конфигурация модуля REST-Uploader (application.yml) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл ``application.yml`` – основной конфигурационный файл модуля, в котором задана его логика и порядок работы модуля: асинхронная загрузка данных из источников, настройка подключения к ядру витрины (секция: ``prostore``), а также другие настройки необходимые для корректной работы модуля. .. _rest_uploader_application_yml: Пример файла application.yml ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Приведем типовую структуру файла и возможные настройки **REST-uploader**. Следует учитывать, что в конфигурационном файле следует задавать только те настройки, которые необходимы для решения текущих бизнес-задач. .. code-block:: yaml http-server: port: ${SERVER_PORT:8081} executor: reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20} send: file-size-restriction: ${SEND_FILE_SIZE_RESTRICTION:512} environment: # Название окружения name: ${ENVIRONMENT_NAME:test} conditions: # включение ФЛК и поведение при обнаружении ошибок mode: warning # период хранения журналов ошибок save-time: 1d # путь хранения журналов ошибок на общем диске: save-path: /tmp/rest-uploader/reports # путь к хранению правил в Zookeeper zookeeper-path: rest-uploader/conditions # таймаут обработки запроса. 0 - таймаут отключен rest-timeout: 60s # период жизни группы save_group_time: 1d validation: # таймаут выполнения асинхронной проверки validation-timeout: 1h # таймаут получения сообщений из redis poll-timeout: 30s # количество корутин асинхронной валидации max-concurrent-handle: 1 # размер порции вычитки сообщений из redis batch-size: 1 # признак выполнения проверки кодировки charset-check-enabled: true # допустимые кодировки для механизма автоопределения valid-charsets: [ UTF-8, US-ASCII, TIS-620] health-check: # период жизни флага активности timeout-active: 3m # период обновления статуса publish-period: 30s zookeeper: connection-string: ${ZOOKEEPER_DS_ADDRESS:localhost} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000} chroot: ${ZOOKEEPER_DS_CHROOT:/adapter} retry-count: 3 retry-base-sleep-time-ms: 1_000 prostore-rest-client: # Признак использования rest-api для взаимодействия с простором. enabled: ${PS_REST_CLIENT_ENABLED:true} host: ${PS_HOST:t5-prostore-01.ru-central1.internal} port: ${PS_PORT:9195} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} redis: type: ${REDIS_TYPE:STANDALONE} connection-string: ${REDIS_CONNECTION_STRING:redis://localhost:6379} password: ${REDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81} max-pool-size: ${REDIS_MAX_POOL_SIZE:6} max-pool-waiting: ${REDIS_MAX_POOL_WAITING:24} max-waiting-handlers: ${REDIS_MAX_WAITING_HANDLERS:32} auth: secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C} enabled: ${AUTH_ENABLED:true} access-list-path: rest-uploader/ids metrics: port: ${METRICS_PORT:9837} scheduler: redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60} csv-parser: separator: ${CSV_PARSER_SEPARATOR:;} quote-char: ${CSV_PARSER_QUOTE_CHAR:"} escape-char: ${CSV_PARSER_ESCAPE_CHAR:'} field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS} backup: zk-path: ${REST_UPLOADER_BACKUP_ZK_PATH:/${environment.name}/rest-uploader} commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command} backupTopic: ${BACKUP_TOPIC:adapter.backup} statusTopic: ${STATUS_TOPIC:adapter.status} kafka: consumer: property: bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} group.id: ${REST_UPLOADER_BACKUP_GROUP_ID:rest-uploader_adapter_command} auto.offset.reset: latest producer: property: bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} Параметры конфигурации ^^^^^^^^^^^^^^^^^^^^^^ Настройка конфигурации **REST-uploader** осуществляется путем редактирования параметров настроек в файле ``application.yml``. Пример конфигурации файла ``application.yml`` для **REST-uploader** см. в разделе :ref:`rest_uploader_application_yml` Руководства администратора. В файле конфигурации **REST-uploader** могут быть настроены следующие секции: - ``http-server`` - указывается порт сервера; - ``executor`` - настраивается размер пула для запросов; - ``send`` - настраиваются ограничения на размер загружаемого файла; - ``environment`` - настройки окружения; - ``conditions`` - включение форматно-логического контроля и поведение при обнаружении ошибок; - ``zookeeper`` - настройки подключения к Zookeeper; - ``prostore-api-client`` - блок параметров конфигурирования взаимодействия с :term:`ProStore`. Если false - будет использоваться JDBC-драйвер; - ``prostore`` - настройка подключения к серверу и базе данных :term:`ProStore`; - ``redis`` - настройка подключения к redis; - ``auth``- указывается секрет для валидации токенов; - ``metrics`` - настройка получения метрик; - ``scheduler`` - настройка таймаута отправки запроса в Redis; - ``csv-parser`` - настройка парсинга CSV; - ``backup`` - настройки бекапирования. Секция http-server ################### В секции ``http-server`` указывается порт веб-сервера. Например: .. code-block:: yaml http-server: port: ${SERVER_PORT:8081} **Параметры настроек** - ``port`` - порт веб-сервера, например: ``SERVER_PORT:8081``. Секция executor ############### Секция ``executor`` предназначена для указания размера пула для запросов. Например: .. code-block:: yaml executor: reader-pool-size: ${EXECUTOR_READER_POOL_SIZE:20} **Параметры настроек** - ``reader-pool-size`` - Размер пула для запросов, например ``EXECUTOR_READER_POOL_SIZE:20`` Секция send ########### В секции ``send`` можно настраивать ограничения на размер загружаемого файла. Например: .. code-block:: yaml send: file-size-restriction: ${SEND_FILE_SIZE_RESTRICTION:512} **Параметры настроек** - ``file-size-restriction`` - ограничение на размер загружаемого файла, например ``SEND_FILE_SIZE_RESTRICTION:512`` Секция environment ################## Секция ``environment`` предназначена для настройки среды окружения Например: .. code-block:: yaml environment: name: ${ENVIRONMENT_NAME:test} **Параметры настроек** - ``name`` - Название окружения, например ``ENVIRONMENT_NAME:test`` Секция conditions ################# В секции ``conditions`` - реализована возможность включения форматно-логического контроля и настройки поведения при обнаружении ошибок. Например: .. code-block:: yaml conditions: mode: warning save-time: 1d save-path: /tmp/rest-uploader/reports zookeeper-path: rest-uploader/conditions rest-timeout: 60s save_group_time: 1d validation: validation-timeout: 1h poll-timeout: 30s max-concurrent-handle: 1 batch-size: 1 charset-check-enabled: true health-check: timeout-active: 3m publish-period: 30s **Параметры настроек** - ``mode`` - включение ФЛК и поведение при обнаружении ошибок, например ``warning``; - ``save-time`` - период хранения журналов ошибок, например ``1d``; - ``save-path`` - путь хранения журналов ошибок на общем диске, например ``/tmp/rest-uploader/reports``; - ``zookeeper-path`` - путь к хранению правил в Zookeeper, например ``rest-uploader/conditions``; - ``rest-timeout`` - таймаут обработки запроса, например ``60s``, ``0`` - таймаут отключен; - ``save_group_time`` - период жизни группы, например ``1d``; - ``validation-timeout`` - таймаут выполнения асинхронной проверки, например ``1h``; - ``poll-timeout`` - таймаут получения сообщений из redis, например ``30s``; - ``max-concurrent-handle`` - количество корутин асинхронной валидации, например ``1``; - ``batch-size`` - размер порции вычитки сообщений из redis, например ``1``; - ``charset-check-enabled`` - признак выполнения проверки кодировки, например ``true``; - ``timeout-active`` - период жизни флага активности, например ``3m``; - ``publish-period`` - период обновления статуса, например ``30s``; Секция zookeeper ################# В секции ``zookeeper`` указываются параметры настроек к Zookeeper. Например: .. code-block:: yaml zookeeper: connect-string: ${ZOOKEEPER_DS_ADDRESS:localhost} connection-timeout-ms: ${ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000} session-timeout-ms: ${ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000} retry-count: 3 retry-base-sleep-time-ms: 1_000 **Параметры настроек** - ``connect-string`` - Подключение к Zookeeper DS, например ``ZOOKEEPER_DS_ADDRESS:localhost``; - ``connection-timeout-ms`` - Zookeeper DS таймаут подключения, например ``ZOOKEEPER_DS_CONNECTION_TIMEOUT_MS:30000``; - ``session-timeout-ms`` - Zookeeper DS таймаут сессии, например ``ZOOKEEPER_DS_SESSION_TIMEOUT_MS:40000``; - ``retry-count`` - количество попыток подключения, например ``3``. Секция prostore-rest-client ########################### В секции ``prostore-rest-client`` реализован блок параметров конфигурирования взаимодействия с ProStore. Например: .. code-block:: yaml prostore-rest-client: # Признак использования rest-api для взаимодействия с простором. enabled: true host: ${PS_HOST:t5-prostore-01.ru-central1.internal} port: ${PS_PORT:9195} http: max-pool-size: ${PS_MAX_POOL_SIZE:8} **Параметры настроек** - ``host`` - адрес Prostore, например ``PS_HOST:t5-prostore-01.ru-central1.internal``; - ``port`` - порт Prostore, например ``PS_PORT:9195``; - ``max-pool-size`` - максимальное число подключений к Prostore, например ``PS_MAX_POOL_SIZE:8``. Секция redis ############ Секция ``redis`` определяет настройки подключения к redis. Например: .. code-block:: yaml redis: type: ${REDIS_TYPE:STANDALONE} connection-string: ${REDIS_CONNECTION_STRING:redis://localhost:6379} password: ${REDIS_PASSWORD:eYVX7EwVmmxKPCDmwMtyKVge8oLd2t81} max-pool-size: ${REDIS_MAX_POOL_SIZE:6} max-pool-waiting: ${REDIS_MAX_POOL_WAITING:24} max-waiting-handlers: ${REDIS_MAX_WAITING_HANDLERS:32} **Параметры настроек** - ``type`` - тип подключения к Redis (STANDALONE/CLUSTER); - ``connection-string`` - указывается список серверов для подключения (перечисление через запятую); - ``password`` - пароль для подключения; - ``max-pool-size`` - устанавливается максимальный размер пула; - ``max-pool-waiting`` - устанавливается максимальный размер пула ожидающих команд; - ``max-waiting-handlers`` - устанавливается максимальный размер ожидающих обработчиков. Секция auth ########### Секция ``auth`` служит для хранения секрета валидации токена. Например: .. code-block:: yaml auth: secret: ${AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C} enabled: ${AUTH_ENABLED:true} **Параметры настроек** - ``secret`` - cекрет для валидации токенов, например ``AUTH_SECRET:gPHaT%ACXGQaQ30%1id%K7@C``; - ``enabled`` - включение/отключение аутентификации, например ``AUTH_ENABLED:true``. Секция metrics ############## Секция ``metrics`` предназначена для настройки параметров метрик. Например: .. code-block:: yaml metrics: port: ${METRICS_PORT:9837} **Параметры конфигурации** - ``port`` - Порт для метрик, например ``METRICS_PORT:9837``. Секция scheduler ################ Секция ``scheduler`` предназначена для настройки таймаута отправки запроса в Redis. Например: .. code-block:: yaml scheduler: redis-check-request-timeout: ${REDIS_CHECK_REQUEST_TIMEOUT:60} **Параметры конфигурации** - ``redis-check-request-timeout`` - таймаут отправки запроса в Redis, например ``REDIS_CHECK_REQUEST_TIMEOUT:60``. Секция csv-parser ################# .. attention:: При загрузке файлов с форматно-логическим контролем, важно, чтобы настройки секции csv-parser были одинаковы в модулях CSV-Uploader(если используется его UI),REST-Uploader и DATA-Uploader. Секция ``csv-parser`` - настройка парсинга CSV. Например: .. code-block:: yaml csv-parser: separator: ${CSV_PARSER_SEPARATOR:;} quote-char: ${CSV_PARSER_QUOTE_CHAR:"} escape-char: ${CSV_PARSER_ESCAPE_CHAR:'} field-as-null: ${CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS} **Параметры конфигурации** - ``separator`` - символ разделителя полей, например ``CSV_PARSER_SEPARATOR:;``; - ``quote-char`` - символ кавычки, например ``CSV_PARSER_QUOTE_CHAR:"``; - ``escape-char`` - символ экранирования, например ``CSV_PARSER_ESCAPE_CHAR:'``; - ``field-as-null`` - способ определения null поля, например ``CSV_PARSER_FIELD_AS_NULL:EMPTY_SEPARATORS``. Дополнительное описание параметров ################################## 1. Параметр ``CSV_PARSER_ESCAPE_CHAR`` работает следующим образом: если символ экранирования и символ кавычки равны ``"``, то будет использован RFC4180Parser, который считывает все символы между двумя двойными кавычками, при этом двойная кавычка в тексте поля должна быть экранирована двойной кавычкой (Например ``"поле, ""содержащее двойную кавычку"""`` будет считано как ``поле, "содержащее двойную кавычку"``). В противном случае будет использован CSVParser, использующий символ экранирования для обозначения "непечатаемых символов". 2. Параметр ``CSV_PARSER_FIELD_AS_NULL`` может принимать следующие значения: - ``EMPTY_SEPARATORS`` - два разделителя полей (см. csv-parser/separator) подряд считаются null. Например: строка [aaa,,ccc] содержит значения ["aaa", null, "bbb"], а строка строка [aaa,"",ccc] содержит значения ["aaa", "", "bbb"]. - ``EMPTY_QUOTES`` - два "ограничителя строки" (см. csv-parser/escape-char) подряд считаются null. Например: строка [aaa,"",ccc] содержит значения ["aaa", null, "bbb"], а строка строка [aaa,,ccc] содержит значения ["aaa", "", "bbb"]. - ``BOTH`` - оба варианта (см. ``EMPTY_SEPARATORS`` и ``EMPTY_QUOTES``) считаются null. Например: обе строки [aaa,"",ccc] и [aaa,,bbb] содержат одинаковое значение ["aaa", null, "bbb"]. - ``NEITHER`` - ни один из вариантов (см. ``EMPTY_SEPARATORS`` и ``EMPTY_QUOTES``) не считается null. Например: обе строки [aaa,"",ccc] и [aaa,,bbb] содержат одинаковое значение ["aaa", "", "bbb"]. Секция backup ############## Секция ``backup`` предназначена для настроек бекапирования модуля. Например: .. code-block:: yaml backup: zk-path: ${COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters} commandTopic: ${BACKUP_COMMAND_TOPIC:adapter.command} backupTopic: ${BACKUP_TOPIC:adapter.backup} statusTopic: ${STATUS_TOPIC:adapter.status} kafka: consumer: property: bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} group.id: ${COUNTER_BACKUP_GROUP_ID:counter_provider_adapter_command} auto.offset.reset: latest producer: property: bootstrap.servers: ${KAFKA_BOOTSTRAP_SERVERS:localhost:9092} **Параметры настроек** - ``zk-path`` - путь к корневой ноде zookeeper для бэкапирования, например ``{COUNTER_BACKUP_ZK_PATH:/${environment.name}/counter-provider/counters}``; - ``commandTopic`` - топик команд бэкапирования, например: ``{BACKUP_COMMAND_TOPIC:adapter.command}``; - ``backupTopic`` - топик для отправки забэкапированных данных, например: ``{BACKUP_TOPIC:adapter.backup}``; - ``statusTopic`` - топик для отправки статусов бэкапирования, например: ``{STATUS_TOPIC:adapter.status}``.