.. _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``. В файле конфигурации **СМЭВ QL сервера** могут быть настроены следующие секции: - ``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