6. Конфигурирование сервера

СМЭВ QL сервер содержит два конфигурационных файла:

  • application.yaml - конфигурирует поведение сервера;

  • credentials.yaml - конфигурирует представление сервера.

6.1. Конфигурация файла application.yml

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 - Блок настроек механизма подписания.

6.1.1. Секция storage

В секции storage хранятся параметры хранения информации, например:

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 - Пароль подключения.

6.1.2. Секция access

В секции access хранятся настроек доступа к выполнению операций чтения данных и операций стейт-машины. Допускается задание черного или белого списка.

Например:

access: # Блок настроек доступа к выполнению операций чтения данных и операций стейтмашины. Допускается задание черного или белого списка
  black_list: [ ] # Указывает список потребителей, для которых доступ запрещен
  white_list: [ ] # Указывает список потребителей, для которых доступ разрешен

Параметры конфигурации

  • black_list - массив потребителей, для которых доступ запрещен;

  • white_list - массив потребителей, для которых доступ разрешен.

6.1.3. Секция request

В секции request хранятся настройки исполнения запросов, например:

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 - Блок настроек асинхронного выполнения запросов.

6.1.4. Секция delta

В секции delta осуществляется управление принудительными коммитами дельт витрин данных.

Например:

delta:
  commit_interval: 60s # Интервал фиксации дельты источника при изменении данных
  force_commit_interval: 30m # Интервал принудительной фиксации дельт всех источников

Параметры конфигурации

  • commit_interval - Интервал фиксации дельты источника при изменении данных, например 60s;

  • force_commit_interval - Интервал принудительной фиксации дельт всех источников, например 30s.

Если commit_interval: 0 и force_commit_interval: 0, то для добавления/изменения/удаления данных в Prostore не используется механизм открытия и закрытия дельт, а данные меняются прямым запросом.

При этом возникают следующие ограничения:

  • В бекап текущей реализации данные, софрмированние вне дельт, не попадают;

  • В результаты запросов к материализованным представлениям данные , софрмированние вне дельт, не попадают;

  • В рамках подписок данные , софрмированние вне дельт, не передаются.

6.1.5. Секция state

В секции state устанавливаются ограничения в стейт машинах.

Например:

state:
  max_nested_event: 5 # Максимально допустимая вложенность связанных переходов стейт машины
  max_updated_rows: 1 # Максимальное количество обновляемых строк при событии стейт машины

Параметры конфигурации

  • max_nested_event - Максимально допустимая вложенность связанных переходов стейт машины, например 5;

  • max_updated_rows - Максимальное количество обновляемых строк при событии стейт машины, например 1.

6.1.6. Секция index_recommendations

Секция index_recommendations содержит рекомендации по аналитике, например:

index_recommendations: # Рекомендации по аналитике
  period: 7D  # Период формирования. 7 дней

Параметры конфигурации

  • period - устанавливается период формирования аналитики, например 7 дней.

6.1.7. Секция push

Секция push содержит настройки сервиса формирования push-уведомлений.

Например:

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 - настройки попыток отправок нотификаций.

6.1.8. Секция agent

В секции agent указываются параметры подключения к агенту СМЭВ4 поставщика, например:

agent: # Параметры конфигурирования агента ПОДД
  host: 127.0.0.1 # Хост агента
  port: 8171 # Порт приема api-gateway запросов
  mnemonic: "" # Мнемоника агента

Параметры конфигурации

  • host - Хост агента;

  • port - Порт приема api-gateway запросов;

  • mnemonic - Мнемоника агента.

6.1.9. Секция signature

В секции signature настраивается управление механизмом цифровой подписи.

Например:

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.

6.2. Конфигурация файла credentials.yml

version: 1.0.0
system:
    mnemonic: smev_ql_mnemonic
    instance: smev_ql_instance