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) следующие действия:

  1. Создайте пользователя {{user}} и группу {{user_group}}, под которым будет работать Агент проверок. Распакуйте дистрибутивный пакет в каталог /distr/app.

  2. Добавьте в каталог /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. Добавление поставщика данных

Для добавления поставщика данных должен генерироваться токен авторизации, который передается поставщику.

Генерация токена осуществляется по следующим шагам:

  1. Открыть web-страницу https://jwt.io/;

  2. Выбрать алгоритм HS256;

  3. Ввести в 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.