.. _smev_ql_config: Конфигурирование сервера ^^^^^^^^^^^^^^^^^^^^^^^^^^ Конфигурирование СМЭВ QL сервера выполняется путем изменения параметров настроек, определенных в файлах ``credentials.yaml`` и ``application.yaml``. - **application.yaml** - конфигурирует поведение сервера; - **credentials.yaml** - конфигурирует представление сервера. Конфигурация файла application.yml #################################### .. code-block:: yaml storage: # Блок параметров хранения информации adapter: redis # На текущий момент поддерживается только redis pool: # Настройка подключений к redis - host: 127.0.0.1 port: 6379 max-pool-size: 20 # Максимальный размер пула соединений user: "" # Пользователь для подключения к redis password: "" # Пароль access: # Блок настроек доступа к выполнению операций чтения данных и операций стейтмашины. Допускается задание черного или белого списка black-list: [ ] # Указывает список потребителей, для которых доступ запрещен white-list: [ ] # Указывает список потребителей, для которых доступ разрешен request: strategy: delegate # Стратегия исполнения запросов delegate|atomic timeout: 20s # Таймаут исполнения запросов base-path: smevql/api/v1 # Префикс для всех роутов max-nested-level: 5 # Предельная вложенность запрашиваемых ресурсов pagination: default: 100 # Количество элементов на странице по умолчанию max: 1000 # Максимальное количество элементов на странице logging: long: duration: 20s # Продолжительность исполнения запросов к источникам, выше которой необходимо производить логирование percentage: 100 # Процент логирования длительных запросов к источникам. Допустимо использовать вещественные числа, например, 0.1 - только каждый тысячный долгий запрос limits: # Блок параметров конфигурации лимитов enabled: true # флаг влюкчения проверок лимитов total: # Параметры по всем запросам value: 500000 # Общее число запросов в период времени period: 1D # Период лимитирования mnemonic: # Блок настроек лимитирования по потребителям value: 5000 # Число запросов в период времени period: 1D # Период лимитирования purpose: # Блок настроек лимитирования по целям value: 5000 # Число запросов в период времени period: 1D # Период лимитирования user: # Блок настроек лимитирования по пользователям value: 1000 # Число запросов в период времени period: 1D # Период лимитирования records-ttl: day: 1M # Период хранения дневной статистики week: 1M # Период хранения статистики за неделю month: 1Y # Период хранения статистики за месяц year: 2Y # Период хранения статистики за год async: # Блок настроек асинхронного выполнения запросов request-in: 10s # Значение интервала опроса получения данных асинхронного результата. Выдается в качестве значения атрибута request_in на запрос получения данных read-timeout: 5m # Таймаут вычитывания асинхронных данных из источников. Используется для источников с типом smevql, если была возвращена информация по асинхронным результатам delta: commit-interval: 60s # Интервал фиксации дельты источника при изменении данных force-commit-interval: 30m # Интервал принудительной фиксации дельт всех источников state: max-nested-event: 5 # Максимально допустимая вложенность связанных переходов стейт машины max-updated-rows: 1 # Максимальное количество обновляемых строк при событии стейт машины index-recommendations: # Рекомендации по аналитике enabled: true # Флаг включения формирования рекомендаций period: 7D # Период формирования. 7 дней concurrency: 10 # Количество параллельных корутин сохранения статистики # Массив описания standalone таблиц standalone-tables: [ ] # Пример описания # standalone-tables: # - readable-table: "misdm05.readable_book" # writable-table: "misdm05.writable_book" # anchor: "update_at" # soft-delete: "delete_at" # Массив описания proxy таблиц proxy-tables: [ ] # Пример описания # proxy-tables: # - table: "misdm05.notebook" # anchor: "update_at" # soft-delete: "delete_at" push: # Настройки отправки push уведомлений notification-path: "/{target}/push/notify" # Шаблон пути агента, на который необходимо отправлять нотификации state-machine-enabled: false # Признак публикации нотификаций на основе событий стейт машины status-prostore-enabled: true # Признак публикации нотификаций на основе событий статусов Простора prostore: status-event-topic: topic: "$PS_STATUS_EVENT_TOPIC:status.event" property: bootstrap.servers: "$PS_KAFKA:localhost:9092" group.id: smevql-server-status-event auto.offset.reset: earliest retry: max-attempts: 3 # Количество попыток отправки нотификации min-period: 5s # Минимальный период ожидания перед повторной попыткой max-period: 10s # Максимальный период ожидания перед повторной попыткой agent: # Параметры конфигурирования агента ПОДД host: 127.0.0.1 # Хост агента port: 8171 # Порт приема api-gateway запросов mnemonic: "" # Мнемоника агента signature: # Блок настроек механизма подписания enabled: true # Признак включения подписания и проверки подписи validate-enabled: false # Признак предоставления дополнительного URL проверки подписи algorithm: "GOST3410_2012_256" # Алгоритм формирования подписи serial-number: "" # Серийный номер ключа подписи alias: "" # Алиас ключа. Заполняется либо серийный номер, либо алиас notarius: # Блок настроек сервиса Notaris, используемый для подписания host: localhost # Хост, на котором доступен Notaris port: 8080 # Порт, на котором доступен Notaris Настройка конфигурации **СМЭВ QL сервера** осуществляется путем редактирования параметров настроек в файле ``application.yml``, в котором могут быть настроены следующие секции: - ``storage`` - управление подключением к внутреннему хранилищу данных СМЭВ-QL; - ``access`` - блок настроек доступа к выполнению операций чтения данных и операций стейт-машины; - ``request`` - блок настроек исполнения запросов; - ``delta`` - управление принудительными коммитами дельт витрин данных; - ``state`` - установка ограничений в машинах-состояний; - ``index_recommendations`` - рекомендации по аналитике; - ``push`` - настройки отправки push уведомлений; - ``agent`` - параметры конфигурирования агента ПОДД; - ``signature`` - блок настроек механизма подписания. Секция storage """""""""""""""" В секции ``storage`` настраиваются параметры хранения информации, например: .. code-block:: yaml storage: # Блок параметров хранения информации adapter: redis # На текущий момент поддерживается только redis pool: # Настройка подключений к redis - host: 127.0.0.1 port: 6379 max_pool_size: 20 # Максимальный размер пула соединений user: "" # Пользователь для подключения к redis password: "" # Пароль **Параметры конфигурации** - ``adapter`` - система хранения данных, на текущий момент поддерживается только redis; - ``pool`` - указание host и port для подключения к хранилищу данных; - ``host`` - адрес хоста; - ``port`` - порт хоста; - ``max_pool_size`` - максимальный размер пула соединений; - ``user`` - имя пользователя для авторизации в системе хранения данных; - ``password`` - пароль для авторизации в системе хранения данных. Секция access """"""""""""""""""" В секции ``access`` настраивается доступ к выполнению операций чтения данных и операций стейт-машины. Допускается задание черного или белого списка. Например: .. code-block:: yaml access: # Блок настроек доступа к выполнению операций чтения данных и операций стейтмашины. Допускается задание черного или белого списка black_list: [ ] # Указывает список потребителей, для которых доступ запрещен white_list: [ ] # Указывает список потребителей, для которых доступ разрешен **Параметры конфигурации** - ``black_list`` - перечень мнемоник ИС Потребителей, которым запрещен доступ к СМЭВ QL. **Не заполняется, если заполнен white_list!** - ``white_list`` - перечень мнемоник ИС Потребителей, которым разрешен доступ к СМЭВ QL. **Не заполняется, если заполнен black_list!** Секция request """"""""""""""""" В секции ``request`` хранятся настройки исполнения запросов, например: .. code-block:: yaml request: timeout: 20s # Таймаут исполнения запросов base_path: smevql/api/v1 # Префикс для всех роутов max_nested_level: 5 # Предельная вложенность запрашиваемых ресурсов pagination: default: 100 # Количество элементов на странице по умолчанию max: 1000 # Максимальное количество элементов на странице logging: long: duration: 20s # Продолжительность исполнения запросов к источникам, выше которой необходимо производить логирование percentage: 100 # Процент логирования длительных запросов к источникам. Допустимо использовать вещественные числа, например, 0.1 - только каждый тысячный долгий запрос limits: # Блок параметров конфигурации лимитов total: # Параметры по всем запросам value: 500000 # Общее число запросов в период времени period: 1D # Период лимитирования mnemonic: # Блок настроек лимитирования по потребителям value: 5000 # Число запросов в период времени period: 1D # Период лимитирования purpose: # Блок настроек лимитирования по целям value: 5000 # Число запросов в период времени period: 1D # Период лимитирования user: # Блок настроек лимитирования по пользователям value: 1000 # Число запросов в период времени period: 1D # Период лимитирования records_ttl: day: 1M # Период хранения дневной статистики week: 1M # Период хранения статистики за неделю month: 1Y # Период хранения статистики за месяц year: 2Y # Период хранения статистики за год async: # Блок настроек асинхронного выполнения запросов request_in: 10s # Значение интервала опроса получения данных асинхронного результата. Выдается в качестве значения атрибута request_in на запрос получения данных read_timeout: 5m # Таймаут вычитывания асинхронных данных из источников. Используется для источников с типом smevql, если была возвращена информация по асинхронным результатам **Параметры конфигурации** - ``timeout`` - таймаут исполнения запросов; - ``base_path`` - префикс для роута запросов. Например, ``smevql/api/v1``; - ``max_nested_level`` - предельная вложенность запрашиваемых ресурсов; - ``pagination`` - управление количеством элементов при ответе. Содержит следующие атрибуты: - ``default`` - количество элементов на странице по умолчанию; - ``max`` - максимальное количество элементов на странице; - ``logging`` - управление логированием "долгих" запросов. Содержит следующие атрибуты: - ``duration`` - продолжительность исполнения запросов к источникам, выше которой необходимо производить логирование. Например: ``20s``; - ``percentage`` - процент логирования длительных запросов к источникам. Допустимо использовать вещественные числа, например, ``0.1`` - только каждый тысячный долгий запрос; - ``limits`` - установка ограничений на количество запросов. Содержит следующие атрибуты: - ``total`` - общее допустимое количество запросов к серверу: - ``value`` - целочисленное значение количества запросов, например: ``1000``; - ``period`` - на какой период устанавливается ограничение, например: 1D (на сутки) - ``mnemonic`` - допустимое для одного потребителя данных количество запросов к серверу: - ``value`` - целочисленное значение количества запросов, например: ``100``; - ``period`` - на какой период устанавливается ограничение, например: ``1D`` (на сутки); - ``purpose`` - допустимое количество запросов к одному ресурсу (таблице, объекту) - ``value`` - целочисленное значение количества запросов, например: ``100``; - ``period`` - на какой период устанавливается ограничение, например: ``1D`` (на сутки); - ``user`` - допустимое количество запросов для пользователя: - ``value`` - целочисленное значение количества запросов, например: ``100``; - ``period`` - на какой период устанавливается ограничение, например: ``1D`` (на сутки); - ``records_ttl`` - настройка хранения статистики по лимитам: - ``day: 1M`` - период хранения дневной статистики; - ``week: 1M`` - период хранения статистики за неделю; - ``month: 1Y`` - период хранения статистики за месяц; - ``year: 2Y``- период хранения статистики за год; - ``async`` - блок настроек асинхронного выполнения запросов. Содержит следующие атрибуты: - ``request_in`` - значение интервала опроса получения данных асинхронного результата. Выдается в качестве значения атрибута request_in на запрос получения данных; - ``read_timeout`` - таймаут вычитывания асинхронных данных из источников. Используется для источников с типом smevql, если была возвращена информация по асинхронным результатам Секция delta """"""""""""""" В секции ``delta`` настраивается управление принудительными коммитами дельт витрин данных. Например: .. code-block:: yaml delta: commit_interval: 60s # Интервал фиксации дельты источника при изменении данных force_commit_interval: 30m # Интервал принудительной фиксации дельт всех источников **Параметры конфигурации** - ``commit_interval`` - интервал фиксации дельты источника при изменении данных, например 60s; - ``force_commit_interval`` - интервал принудительной фиксации дельт всех источников, например 30s. Если ``commit_interval: 0`` и ``force_commit_interval: 0``, то для добавления/изменения/удаления данных в Prostore не используется механизм открытия и закрытия дельт, а данные меняются прямым запросом. При этом возникают следующие ограничения: - в бекап текущей реализации данные, софрмированние вне дельт, не попадают; - в результаты запросов к материализованным представлениям данные, софрмированние вне дельт, не попадают; - в рамках подписок данные, софрмированние вне дельт, не передаются. Секция state """"""""""""""" В секции ``state`` устанавливаются ограничения в стейт машинах. Например: .. code-block:: yaml state: max_nested_event: 5 # Максимально допустимая вложенность связанных переходов стейт машины max_updated_rows: 1 # Максимальное количество обновляемых строк при событии стейт машины **Параметры конфигурации** - ``max_nested_event`` - максимально допустимая вложенность связанных переходов стейт машины, например 5; - ``max_updated_rows`` - максимальное количество обновляемых строк при событии стейт машины, например 1. Секция index_recommendations """"""""""""""""""""""""""""""" В секции ``index_recommendations`` настраиваются рекомендации по аналитике, например: .. code-block:: yaml index_recommendations: # Рекомендации по аналитике period: 7D # Период формирования. 7 дней **Параметры конфигурации** - ``period`` - устанавливается период формирования аналитики, например 7 дней. Секция standalone-tables """""""""""""""""""""""""""""" В секции ``standalone-tables`` настраиваются данные standalone таблиц. Например: .. code-block:: yaml standalone-tables: [ ] # Пример описания # standalone-tables: # - readable-table: "misdm05.readable_book" # writable-table: "misdm05.writable_book" # anchor: "update_at" # soft-delete: "delete_at" **Параметры конфигурации** - ``readable-table`` - название readable таблицы; - ``writable-table`` - название writable таблицы; - ``anchor`` - название атрибута характеризующего дату и время последнего изменения данных в нетемпоральной таблице; - ``soft-delete`` - название атрибута характеризующего дату и время удаления данных в нетемпоральной таблице. Секция proxy-tables """""""""""""""""""""""""""""" В секции ``proxy-tables`` настраиваются данные прокси-таблиц. Например: .. code-block:: yaml # Массив описания proxy таблиц proxy-tables: [ ] # Пример описания # proxy-tables: # - table: "misdm05.notebook" # anchor: "update_at" # soft-delete: "delete_at" **Параметры конфигурации** - ``table`` - название прокси таблицы; - ``anchor`` - название атрибута характеризующего дату и время последнего изменения данных в нетемпоральной прокси таблице; - ``soft-delete`` - название атрибута характеризующего дату и время удаления данных в нетемпоральной прокси таблице. Секция push """"""""""""" В секции ``push`` содержатся настройки сервиса формирования push-уведомлений. Например: .. code-block:: yaml push: # Настройки отправки push уведомлений notification-path: "/{target}/push/notify" # Шаблон пути агента, на который необходимо отправлять нотификации state-machine-enabled: false # Признак публикации нотификаций на основе событий стейт машины status-prostore-enabled: true # Признак публикации нотификаций на основе событий статусов Простора prostore: status-event-topic: topic: "$PS_STATUS_EVENT_TOPIC:status.event" property: bootstrap.servers: "$PS_KAFKA:localhost:9092" group.id: smevql-server-status-event auto.offset.reset: earliest retry: max-attempts: 3 # Количество попыток отправки нотификации min-period: 5s # Минимальный период ожидания перед повторной попыткой max-period: 10s # Максимальный период ожидания перед повторной попыткой **Параметры конфигурации** - ``notification_path`` - шаблон пути агента, на который необходимо отправлять нотификации; - ``state_machine_enabled`` - признак публикации нотификаций на основе событий стейт машины; - ``retry`` - настройки попыток отправок нотификаций. Секция agent """"""""""""" В секции ``agent`` указываются параметры подключения к Агенту СМЭВ4 поставщика, например: .. code-block:: yaml agent: # Параметры конфигурирования агента ПОДД host: 127.0.0.1 # Хост агента port: 8171 # Порт приема api-gateway запросов mnemonic: "" # Мнемоника агента **Параметры конфигурации** - ``host`` - хост агента; - ``port`` - порт приема api-gateway запросов; - ``mnemonic`` - мнемоника агента СМЭВ4. Секция signature """"""""""""""""" В секции ``signature`` настраивается управление механизмом цифровой подписи. Например: .. code-block:: yaml signature: # Блок настроек механизма подписания enabled: true # Признак включения подписания и проверки подписи validate_enabled: false # Признак предоставления дополнительного URL проверки подписи algorithm: "GOST3410_2012_256" # Алгоритм формирования подписи serial_number: "" # Серийный номер ключа подписи alias: "" # Алиас ключа. Заполняется либо серийный номер, либо алиас notarius: # Блок настроек сервиса Notaris, используемый для подписания host: localhost # Хост, на котором доступен Notaris port: 8080 # Порт, на котором доступен Notaris **Параметры конфигурации** - ``enable`` - включение (true), отключение (false) подписи ответов и проверки подписей других источников; - ``validate_enabled`` - признак предоставления дополнительного URL проверки подписи (доступность вызова REST-метода проверки подписи); - ``algorithm`` - алгоритм формирования подписи. На текущий момент доступен только GOST3410_2012_256; - ``serial_number`` - серийный номер ключа подписи; - ``alias`` - алиас ключа, заполняется либо серийный номер, либо алиас; - ``notarius`` - настройки подключения (host и port) к модулю криптографии notarius. Конфигурация файла credentials.yml ################################### .. code-block:: yaml version: 1.0.0 system: mnemonic: smev_ql_mnemonic instance: smev_ql_instance **Параметры конфигурации** - ``version`` - номер версии СМЭВ QL; - ``mnemonic`` - мнемоника СМЭВ QL, по этому параметру осуществляется идентификация СМЭВ QL сервер во внешних системах и ПОДД; - ``instance`` - наименование инстанса СМЭВ QL. Общий сценарий выполнения ################################# 1. Администратор системы открывает на редактирование нужный файл (``credentials.yaml`` и/или ``application.yaml``) настроек СМЭВ QL сервер и меняет требуемые параметры. 2. Перезапускает приложение для применения новых настроек. Для этого открывает консоль утилиты работы со СМЭВ QL и выполняет команду: .. code-block:: bash ./smevql restart