6. Конфигурирование сервера
Конфигурирование СМЭВ QL сервера выполняется путем изменения параметров настроек, определенных в файлах credentials.yaml и application.yaml.
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:
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- Блок настроек механизма подписания.
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- имя пользователя для авторизации в системе хранения данных;password- Пароль для авторизации в системе хранения данных.
6.1.2. Секция access
В секции access хранятся настроек доступа к выполнению операций чтения данных и операций стейт-машины.
Допускается задание черного или белого списка.
Например:
access: # Блок настроек доступа к выполнению операций чтения данных и операций стейтмашины. Допускается задание черного или белого списка
black_list: [ ] # Указывает список потребителей, для которых доступ запрещен
white_list: [ ] # Указывает список потребителей, для которых доступ разрешен
Параметры конфигурации
black_list- перечень мнемоник ИС Потребителей, которым запрещен доступ к СМЭВ QL. Не заполняется, если заполнен white_list;white_list- перечень мнемоник ИС Потребителей, которым разрешен доступ к СМЭВ QL. Не заполняется, если заполнен black_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- Префикс для роута запросов. Например,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, если была возвращена информация по асинхронным результатам
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. Секция standalone-tables
Секция standalone-tables содержит данные standalone таблиц.
Например:
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- название атрибута характеризующего дату и время удаления данных в нетемпоральной таблице.
6.1.8. Секция proxy-tables
Секция proxy-tables содержит данные прокси-таблиц.
Например:
# Массив описания proxy таблиц
proxy-tables: [ ]
# Пример описания
# proxy-tables:
# - table: "misdm05.notebook"
# anchor: "update_at"
# soft-delete: "delete_at"
Параметры конфигурации
table- название прокси таблицы;anchor- название атрибута характеризующего дату и время последнего изменения данных в нетемпоральной прокси таблице;soft-delete- название атрибута характеризующего дату и время удаления данных в нетемпоральной прокси таблице.
6.1.9. Секция push
Секция push содержит настройки сервиса формирования push-уведомлений.
Например:
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- настройки попыток отправок нотификаций.
6.1.10. Секция agent
В секции agent указываются параметры подключения к агенту СМЭВ4 поставщика, например:
agent: # Параметры конфигурирования агента ПОДД
host: 127.0.0.1 # Хост агента
port: 8171 # Порт приема api-gateway запросов
mnemonic: "" # Мнемоника агента
Параметры конфигурации
host- Хост агента;port- Порт приема api-gateway запросов;mnemonic- Мнемоника агента СМЭВ4.
6.1.11. Секция 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
Параметры конфигурации
version- Номер версии СМЭВ QL;mnemonic- Мнемоника СМЭВ QL, по этому параметру осуществляется идентификация СМЭВ QL сервер во внешних системах и ПОДД;instance- Наименование инстанса СМЭВ QL.
6.3. Общий сценарий выполнения
Администратор системы открывает на редактирование нужный файл (
credentials.yamlи/илиapplication.yaml) настроек СМЭВ QL сервер и меняет требуемые параметры.Перезапускает приложение для применения новых настроек. Для этого открывает консоль утилиты работы со СМЭВ QL и выполняет команду:
./smevql restart