5. Настройка и запуск Агента СМЭВ4

5.1. Порядок загрузки данных и программ

Администратор УВ осуществляет развёртывание, запуск и настройку Агента СМЭВ4 с помощью данного руководства.

5.2. Подготовка и настройка системы для запуска Агента

5.2.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Агента СМЭВ4 (/distr/einfahrt):

Для Astra Linux

  • /distr/einfahrt/app/app.jar – исполняемый файл;

  • axiomjdk-jdk-pro17.0.4.1+1-linux-amd64-astra.deb – сертифицированный ФСБ дистрибутив Java (приобретается пользователем. Версия в примере может отличаться от версии, купленной пользователем);

Для РЕД ОС

  • /distr/einfahrt/app/app.jar – исполняемый файл;

  • axiomjdk-jdk-pro17.0.4.1+1-linux-amd64.rpm – сертифицированный ФСБ дистрибутив Java (приобретается пользователем. Версия в примере может отличаться от версии, купленной пользователем).

Путь /distr/ указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды.

5.2.2. Предварительные операции (установка «пре-реквизитов»)

Перед запуском Агента СМЭВ4 выполнить от имени пользователя root следующие действия:

  1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать Агент СМЭВ4.

  2. Установить java (Версия в примере может отличаться от версии, купленной пользователем)

Для Astra Linux

cd /distr/common
dpkg -i axiomjdk-jdk-pro17.0.4.1+1-linux-amd64-astra.deb

Для РЕД ОС

cd /distr/common
yum localinstall axiomjdk-jdk-pro17.0.4.1+1-linux-amd64.rpm
  1. Установить системные переменные

export JAVA_HOME=/usr/java
export PATH=$PATH:$JAVA_HOME/bin

Рекомендуется внести данную настройку в profile пользователя либо в системный profile (/etc/profile.d/).

  1. Выложить в каталог /distr/einfahrt конфигурационный файл application.yml, подготовленный согласно Раздел 3.

  2. В файл /etc/hosts добавить следующие записи:

172.20.59.5 podd.gosuslugi.ru
109.207.15.26 podd1.gosuslugi.ru
109.207.15.58 podd2.gosuslugi.ru
109.207.15.154 podd3.gosuslugi.ru
109.207.15.186 podd4.gosuslugi.ru
109.207.15.26 podd1-cross.gosuslugi.ru
109.207.15.58 podd2-cross.gosuslugi.ru
109.207.15.154 podd3-cross.gosuslugi.ru
109.207.15.186 podd4-cross.gosuslugi.ru

5.2.3. Настройка логирования в формате «Гостех» (опционально)

Для переключения формата лог-файлов на стандарты Гостех, необходимо в список ключей запуска java добавить следующие параметры:

-Dlogback.configurationFile=logback.gostech.xml
-Dlogging.config=classpath:logback.gostech.xml

При запуске с помощью сервиса systemd (см. Раздел 5.2.4) данные ключи добавляются в Environment переменную JDK_JAVA_OPTIONS.

Местоположение результирующего файла возможно изменить системной переменной GOSTECH_LOG_DIR, при ее отсутствии используется значение по умолчанию /fluent-bit/logs/.

Имя результирующего файла возможно изменить системной переменной GOSTECH_LOG_FILE_NAME, при ее отсутствии используется значение по умолчанию log. Расширение имени файла не изменяется, зафиксировано как .log При запуске с помощью сервиса systemd (см. Раздел 5.2.4) данные переменные добавляются в файл einfahrt.service как строки вида:

Environment="GOSTECH_LOG_DIR=/var/log/einfahrt"
Environment="GOSTECH_LOG_FILE_NAME=einfahrt"

5.2.4. Запуск Агента СМЭВ4

Убедитесь, что пользователь {{user}} имеет доступ к директории, в которой установлен Агент СМЭВ4 (/distr/einfahrt).

Пример раздела конфигурации скрипта для запуска Агента СМЭВ4 с использованием сервиса systemd Данный файл, с названием einfahrt.service, необходимо сохранить в каталог /etc/systemd/system/, указав, при необходимости, корректные пути к файлам:

[Unit]
Description="Service for einfahrt"
After=syslog.target

[Service]
Type=simple

WorkingDirectory=/distr/einfahrt
LimitNOFILE=1048576:1048576

# Важно! Запуск должен производиться от имени того пользователя, для которого ранее были выложены ключи КриптоПро!
User={{user}}
Group={{user_group}}

Environment="JAVA_HOME=/usr/java"
Environment="JDK_JAVA_OPTIONS=--add-exports=java.base/sun.security.util=ALL-UNNAMED \
    --add-exports=java.base/sun.security.x509=ALL-UNNAMED \
    --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED \
    --add-exports=java.base/sun.security.provider=ALL-UNNAMED \
    --add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED \
    --add-exports=java.base/sun.net=ALL-UNNAMED \
    --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.nio=ALL-UNNAMED \
    --add-opens=java.xml/org.w3c.dom=ALL-UNNAMED \
    -Dsaffron.default.charset=UTF-16LE \
    -Dsaffron.default.collation.name='UTF-16LE$en_US' \
    -Dsaffron.default.nationalcharset=UTF-16LE \
    -XX:MaxRAMPercentage=80.0 \
    -XX:+UnlockExperimentalVMOptions \
    -XX:InitiatingHeapOccupancyPercent=16 \
    -XX:+UseStringDeduplication \
    -XX:+G1EagerReclaimHumongousObjects \
    -XX:+G1EagerReclaimHumongousObjectsWithStaleRefs \
    -XX:G1HeapWastePercent=2 \
    -XX:G1MaxNewSizePercent=25 \
    -XX:G1MixedGCLiveThresholdPercent=15 \
    -XX:+UseG1GC"
ExecStart=/usr/java/bin/java -jar app/app.jar

[Install]
WantedBy=multi-user.target

Далее от имени пользователя root выполнить команду по включению, запуску сервиса и проверке его статуса:

systemctl daemon-reload
systemctl enable einfahrt
systemctl start einfahrt
systemctl -l status einfahrt

5.2.5. Настройка ротации логов (опционально)

Во избежание переполнения диска лог-файлами системного уровня, рекомендуется настроить ротацию лог-файлов systemd сервиса.

Настройка логирования осуществляется с помощью файлов конфигурации logrotate и systemd сервиса. Если этих файлов не существует, их необходимо создать. Первоначально необходимо установить пакет logrotate, для apt-based дистрибутивов необходимо выполнить команду:

Для Astra Linux

apt-get install logrotate

Для РЕД ОС

yum install logrotate

Добавьте в файл systemd сервиса (/etc/systemd/system/einfahrt.service) следующие настройки логирования:

...
[Service]
Type=simple

StandardOutput=append:/var/log/{{ file_name }}
StandardError=append:/var/log/{{ file_name }}

...

Создайте файл конфигурации logrorate (поместить файл в /etc/logrotate.cron/einfahrt.conf) и поместите в него следующие строки:

/var/log/{{ file_name }} {
    rotate {{ rotate }}
    size {{ file_size }}
    create
    nocompress
    copytruncate
}

где:

  • rotate – какое количество лог файлов оставлять;

  • file_size – размер лог-файла при котором будет происходить ротация.

Создайте файл со скриптом запуска утилиты logrotate, поместите скрипт по пути /etc/logrotate.cron/einfahrt.sh:

#!/bin/bash
/usr/sbin/logrotate /etc/logrotate.cron/einfahrt.conf

Добавьте права на запуск командой:

chmod +x /etc/logrotate.cron/einfahrt.sh

Создайте правила cron, создайте файл /etc/cron.d/einfahrt и поместите в него содержимое ниже:

*/1 * * * * root /etc/logrotate.cron/einfahrt_logrotate.sh

Далее перезагрузите systemd сервис:

systemctl daemon-reload
systemctl restart einfahrt

5.3. Настройка предустановленного профиля Витрины в Агенте СМЭВ4

Примечание

Раздел применим только при использовании Витрины и заданной настройке использования предустановленного профиля Витрины в Агенте СМЭВ4 (см. Раздел 3.3.3).

Файл профиля имеет настройки по умолчанию. Вносить изменения следует только в том случае, если значения по умолчанию не подходят для данной Витрины.

Настройки задаются после установки Агента ПОДД в файле postgresql.json, расположенном в директории /директория_установленного_Агента_СМЭВ4/postgresql.json. По умолчанию /distr/einfahrt/postgresql.json

Пример предустановленного профиля Витрины в Агенте СМЭВ4:

{
  "sqlDialect": "POSTGRESQL",
  "parameterNotionType": "QUESTION",
  "aggFunctions": [
  ...
  ],
  "otherFunctions": [
  ...
  ],
  "forSystemTimeParameterSupport": false,
  "subQueryParamSupport": "DYNAMIC_PARAM_SUPPORT"
}

где:

  1. subQueryParamSupport – способ передачи подзапроса при выполнении РЗ с параметрами на сторону Витрины, возможные значения:

  • NOT_SUPPORTED - отправка подзапроса с параметрами, подставленными в SQL-выражение;

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

  • NAMED_PARAM_SUPPORT - отправка подзапроса с блоком именованных пара-метров, подстановка осуществляется на стороне Адаптера Витрины.

  1. forSystemTimeParameterSupport – поддержка системного параметра РЗ для запроса актуальных на заданный момент времени данных из Витрины:

  • false - Адаптер Витрины не поддерживает обработку параметра;

  • true - Адаптер Витрины поддерживает обработку параметра.

5.4. Настройка сбора метрик Агента СМЭВ4 (опционально)

5.4.1. Настройка Агента для передачи метрик в Prometheus

Агент поддерживает возможность передачи метрик работы во внешнюю систему сбора метрик Prometheus.

Для включения возможности передачи необходимо добавить в конфигурационный файл следующие параметры:

metrics:
  enabled: true
  implementation: PROMETHEUS
  # порт, при обращении к которому Агент отдаёт значения метрик
  endpointPort: 8381

Prometheus следует настроить на опрос адреса, на котором запущен Агент, по указанному порту.

Полный список метрик приведен в Раздел 11.