.. _smev_ql_config: Конфигурирование сервера ^^^^^^^^^^^^^^^^^^^^^^^^^^ СМЭВ QL сервер содержит два конфигурационных файла: - **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: 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, если была возвращена информация по асинхронным результатам delta: commit_interval: 60s # Интервал фиксации дельты источника при изменении данных force_commit_interval: 30m # Интервал принудительной фиксации дельт всех источников state: max_nested_event: 5 # Максимально допустимая вложенность связанных переходов стейт машины max_updated_rows: 1 # Максимальное количество обновляемых строк при событии стейт машины index_recommendations: # Рекомендации по аналитике period: 7D # Период формирования. 7 дней push: # Настройки отправки push уведомлений notification_path: /notify # Шаблон пути агента, на который необходимо отправлять нотификации state_machine_enabled: true # Признак публикации нотификаций на основе событий стейт машины 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`` - Пользователь для подключения к redis; - ``password`` - Пароль подключения. Секция access """"""""""""""""""" В секции ``access`` хранятся настроек доступа к выполнению операций чтения данных и операций стейт-машины. Допускается задание черного или белого списка. Например: .. code-block:: yaml access: # Блок настроек доступа к выполнению операций чтения данных и операций стейтмашины. Допускается задание черного или белого списка black_list: [ ] # Указывает список потребителей, для которых доступ запрещен white_list: [ ] # Указывает список потребителей, для которых доступ разрешен **Параметры конфигурации** - ``black_list`` - массив потребителей, для которых доступ запрещен; - ``white_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`` - Префикс для всех роутов; - ``max_nested_level`` - Предельная вложенность запрашиваемых ресурсов; - ``pagination`` - Управление количеством элементов при ответе; - ``logging`` - Управление логированием "долгих" запросов; - ``limits`` - Установка ограничений на количество запросов; - ``async`` - Блок настроек асинхронного выполнения запросов. Секция 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 дней. Секция push """"""""""""" Секция ``push`` содержит настройки сервиса формирования push-уведомлений. Например: .. code-block:: yaml push: # Настройки отправки push уведомлений notification_path: /notify # Шаблон пути агента, на который необходимо отправлять нотификации state_machine_enabled: true # Признак публикации нотификаций на основе событий стейт машины 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`` - Мнемоника агента. Секция 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