3. Запуск и остановка Компонента
Компонент не имеет графического интерфейса и запускается автоматически после запуска сервера.
Все модули Компонента оформлены в виде системных служб, имеют отдельные файлы конфигурации, автоматически запускаются при старте сервера и автоматически останавливаются при его выключении.
При необходимости любой из сервисов/модулей можно остановить и перезапустить.
Данный раздел содержит описание запуска и остановки модулей ручным способом.
Примечание
Программные средства настраиваются в зависимости от используемой конфигурации. Состав модулей приведен в разделе Состав модулей в дистрибутиве документа «Техническое описание Компонента «Витрина данных».
3.1. Prostore
3.1.1. Запуск Prostore
Процесс запуска Prostore приведен в документации сервиса: https://prostore.datamart.ru/docs_prostore/maintenance/maintenance.html.
3.2. Агент проверок
Описание настроек модуля приведено в Настройка программных средств.
3.2.1. Запуск модуля
3.2.1.1. Состав и содержание дистрибутивного пакета
Состав дистрибутива Агента проверок:
check-adapter-<version>.jar– исполняемый файл;application.yml– файл конфигурации Агента проверок;schema.sql– файл с описанием схемы базы данных, подлежащей проверке. Файл также содержит описание ограничений между таблицами.
3.2.1.2. Предварительные операции (установка «пре-реквизитов»)
Перед запуском Агента проверок выполните от имени root-пользователя (либо используя команду sudo) следующие действия:
Создайте пользователя {{user}} и группу {{user_group}}, под которым будет работать Агент проверок. Распакуйте дистрибутивный пакет в каталог
/distr/app.Добавьте в каталог
/distr/appконфигурационный файлapplication.yml, подготовленный согласно описанию Раздел 2.2.2.1.
3. Добавьте в каталог /distr/app конфигурационный файл schema.sql, (имя файла должно сответствовать имени схемы,
подлежащей проверке) подготовленный согласно описанию Раздел 2.2.2.3.
3.2.1.3. Запуск Агента проверок
Убедитесь, что пользователь {{user}} имеет доступ к директории, в которой установлен Агент проверок (/distr/app).
Пример раздела конфигурации скрипта для запуска Агента проверок с использованием сервиса systemd.
Данный файл, с названием dqf-check-adapter.service, необходимо сохранить в каталог /etc/systemd/system/, указав,
при необходимости, корректные пути к файлам:
[Unit]
Description="Check-adapter-dqf-service"
After=syslog.target
[Service]
Type=simple
WorkingDirectory=/distr/app
LimitNOFILE=1048576:1048576
User={{user}} # указать пользователя
Group={{user_group}} # указать группу
Environment="JAVA_HOME=/usr/lib/jdk/jdk-17.0.7"
ExecStart=/usr/lib/jdk/jdk-17.0.7/bin/java
-XX:+FlightRecorder
-XX:+UseZGC
-XX:MaxRAMPercentage=80.0
-XX:+UseContainerSupport
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./heapdump.hprof
-Dlog4j.configurationFile=./conf/logback.xml
-Duser.language=ru
-Dfile.encoding=UTF-8
-Dcatalina.base=/distr/app
-jar /distr/app/check-adapter.jar
--spring.config.location=/distr/app/application.yml
[Install]
WantedBy=multi-user.target
Далее от имени root-пользователя или используя sudo выполните команду по включению, запуску сервиса и проверке его статуса:
sudo systemctl daemon-reload
sudo systemctl enable dqf-check-adapter
sudo systemctl start dqf-check-adapter
sudo systemctl -l status dqf-check-adapter
3.2.1.4. Настройка ротации логов (опционально)
Во избежание переполнения диска лог-файлами, рекомендуется настроить ротацию лог-файлов systemd сервиса.
Настройка логирования осуществляется с помощью файлов конфигурации logrotate и systemd сервиса.
Если этих файлов не существует, их необходимо создать.
Установите пакет logrotate, для rpm-base дистрибутивов выполните команду:
sudo yum install logrotate
Добавьте в файл systemd сервиса (/etc/systemd/system/dqf-check-adapter.service) следующие настройки логирования:
...
[Service]
Type=simple
StandardOutput=append:/var/log/{{ file_name }}
StandardError=append:/var/log/{{ file_name }}
...
Создайте файл конфигурации logrorate (поместить файл в /etc/logrotate.cron/dqf-check-adapter.conf) и поместите в него следующие
строки:
/var/log/{{ file_name }} {
rotate {{ rotate }}
size {{ file_size }}
create
nocompress
copytruncate
}
где:
rotate – какое количество лог файлов оставлять;
file_size – размер лог-файла при котором будет происходить ротация.
Создайте файл со скриптом запуска утилиты logrotate, поместите скрипт по пути /etc/logrotate.cron/datasteward_logrotate.sh.
3.2.2. Остановка модуля
Для ручной остановки необходимо подключиться по ssh к серверу, найти процесс, который содержит jar-файл и остановить его.
Пример:
ps aux | grep check-adapter
kill <pid>
kill «номер процесса».
3.3. Сервис генерации уникального номера (Counter-provider)
Описание настроек модуля приведено в Настройка программных средств.
3.3.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.3.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.4. Сервис формирования документов
Описание настроек модуля приведено в разделе Настройка программных средств.
3.4.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.4.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>ы
3.5. СМЭВ3-адаптер
3.5.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.5.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.6. СМЭВ QL Сервер
Описание настроек модуля приведено в разделе Настройка программных средств.
3.6.1. Быстрый старт
Создать новое приложение СМЭВ QL Сервера командой:
java -jar smevql-server-all.jar new <new-app-name>
Данная команда создаст структуру папок сервера и исполняемый файл smevql внутри <new-app-name>.
Запуск СМЭВ QL Сервера осуществляется командой:
./smevql start -e <environment>
environment- задается название среды разработки. Без указания окружения сервер будет запущен вdevelopment.
В момент запуска приложения выполняются проверки наличия и корректности заполнения конфигурационного файла и файлов моделей.
Типовые ошибки представлены ниже:
Тип ошибки: Некорректный формат или отсутствие файла модели
Пример лог-записи: {«@timestamp»:»2024-01-10T16:25:55.460659+03:00»,»@version»:»1»,»message»:»Ошибка старта сервера»,»logger_name»:»ru.gov.digital.smevql.server.RequestHandler»,»thread_name»:»main»,«level»:»ERROR»,»level_value»:40000,»stack_trace»:»java.lang.RuntimeException: Ошибка парсинга модели данных из файла
Тип ошибки: Некорректно заполнен конфигурационный файл
Пример лог-записи: {«@timestamp»:»2024-01-10T16:27:01.202248+03:00»,»@version»:»1»,»message»:»Ошибка старта сервера»,»logger_name»:»ru.gov.digital.smevql.server.RequestHandler»,»thread_name»:»main»,«level»:»ERROR»,»level_value»:40000,»stack_trace»:»net.mamoe.yamlkt.YamlDecodingException:Top-level decoder: Yaml Block Map: bad indentation, baseIndent=0, newIndent=2n uri: smevql/api/v1
Остановка СМЭВ QL Сервера осуществляется командой:
./smevql stop
Перезапуск СМЭВ QL Сервера осуществляется командой:
./smevql restart
3.6.1.1. Генераторы
Генераторы создают папки и файлы-шаблоны с начальными значениями. Для запуска генератора можно использовать полную команду
./smevql generate или короткий алиас ./smevql g.
Новый пустой источник генерируется командой:
./smevql g source <source-name>
Пример источника на основе Prostore:
prostore_source:
type: rest
version: '1.0'
adapter: prostore
protocol: http
host: smevql-dtm-prostore01.ru-central1.internal
port: 9090
path: api/v1/datamarts/query?format=json
headers:
- content-type: application/json
threads-count: 4
connection-timeout: 30
Новая модель генерируется командой:
./smevql g model <model-name>
Пример модели:
resources:
- mo: *base_model
name: Медицинская организация
description: Логическая таблица "Медицинская организация"
fields:
<<: *default_fields
parent_id:
<<: *ds
name: parent_id
update_ts:
<<: *dts
name: update_ts
address:
<<: *ds
name: address
address_fias_guid:
<<: *ds
name: address_fias_guid
enabled:
<<: *ds
name: enabled
name:
<<: *ds
name: name
region_okato:
<<: *ds
name: region_okato
create_ts:
<<: *dts
name: create_ts
id:
<<: *pks
name: id
rmis_id:
<<: *ds
name: rmis_id
phone:
<<: *ds
name: phone
connections:
has_many: []
belongs_to:
- attachment:
primary_key: [ mo_id ]
foreign_key: [ id ]
- resource:
primary_key: [ mo_id ]
foreign_key: [ id ]
extract:
source:
- name: prostore
table: misdm02.mo
- profilecode_resource: *base_model
- resource: *base_model
- observation: *base_model
- book: *base_model
- slot: *base_model
- monitoring: *base_model
- referral: *base_model
- attachment: *base_model
- patient: *base_model
- service: *base_model
- unaccessible_period: *base_model
Из существующего Prostore модель генерируется командой:
./smevql schema-gen test -h localhost -p 9090 -d demo_view
test- имя директории, куда будет выгружена модель;-h localhost -p 9090- это хост и порт Prostore;-d demo_view- витрина (схема).
3.6.1.1.1. Сборка проекта
Собрать проект можно с помощью gradle:
./gradlew clean build
3.7. Стандартный загрузчик
3.7.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.7.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.8. BLOB-адаптер
Описание настроек модуля приведено в разделе Настройка программных средств.
3.8.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь до jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.8.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.9. CSV-Uploader
Описание настроек модуля приведено в разделе Настройка программных средств.
3.9.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.9.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.10. DATA-uploader – Модуль исполнения асинхронных заданий
Описание настроек модуля приведено в разделе Настройка программных средств.
3.10.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.10.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.11. REST-Uploader – Модуль асинхронной загрузки данных из сторонних источников
Описание настроек модуля приведено в разделе Настройка программных средств.
3.11.1. Запуск модуля
Модуль можно запускать помощи Docker, как JAR-файл или с использованием systemd.
Для запуска модуля при помощи Docker введите команду:
docker start <название модуля>
Для запуска модуля из JAR-файла, введите команду:
java
[-Dconfig.location=<путь до application.yml> ]
[-Dlogging.config=logback.xml]
-jar <путь jar>
Команды, заключенные в [], выполняются опционально.
Для запуска модуля при помощи systemd создайте unit-файл /etc/systemd/system/<название модуля>.service со следующим содержимым:
[Unit]
Description=<описание>
After=network.target
[Service]
Type=simple
User=<пользователь>
WorkingDirectory=<путь до каталога с jar и logback.xml>
ExecStart=<путь до исполняемого файла java> -Dconfig.location=<путь до конфига> -Dlogging.config=logback.xml -jar <путь до jar>
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Примените настройки и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable --now <название модуля>.service
3.11.2. Остановка модуля
Остановка модуля выполняется при помощи Docker-команды:
docker stop <название модуля>
Для ручной остановки необходимо подключиться по SSH к серверу, найти нужный процесс и остановить его.
Пример:
ps aux | grep <название модуля>
kill <pid>
3.11.3. Добавление поставщика данных
Для добавления поставщика данных должен генерироваться токен авторизации, который передается поставщику.
Генерация токена осуществляется по следующим шагам:
Открыть web-страницу https://jwt.io/;
Выбрать алгоритм HS256;
Ввести в payload следующие поля:
{
"sub": "1234567890",
"iss": "John Doe"
}
где:
sub - идентификатор поставщика данных, для которого сформирован токен;
iss - кем сформирован токен.
Подпись токена формируется методом получения хеш-функции SHA-256 с секретом. Для этого нужно в verify signature в поле your-256-bit-secret ввести значение из test-secret настроек сервиса REST-uploader.
Для добавления идентификатора поставщика данных в Базу данных Redis необходимо в структуре set, содержащую идентификаторы поставщика данных, выполнить операцию SADD:
SADD ids ProviderID
где:
ids - ключ, по которому осуществляется доступ к набору элементов;
ProviderID - идентификатор поставщика данных.
В случае когда ожидание ответа на запрос превысило указанное количество времени, необходимо сделать повторный запрос.
В случае возникновения ошибок при обработке файлов сотрудникам, загружаюмщим данные, необходимо изучить возврат REST-Uploader. Если ошибка внутренняя, то необходимо обратиться к администратору Витрины данных. Администратор изучит логи REST-Uploader / Data-Uploader.