6. Настройка и запуск Агента ПОДД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Выложить в каталог /dist/einfahrt конфигурационный файл application.yml, подготовленный согласно Описание конфигурационного файла Агента ПОДД.

  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

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

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

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

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

Местоположение результирующего файла возможно изменить системной переменной GOSTECH_LOG_DIR, при ее отсутствии используется значение по умолчанию /fluent-bit/logs/. Имя результирующего файла возможно изменить системной переменной GOSTECH_LOG_FILE_NAME, при ее отсутствии используется значение по умолчанию log. Расширение имени файла не изменяется, зафиксировано как .log При запуске с помощью сервиса systemd (см. Запуск Агента ПОДД) данные переменные добавляются в файл einfahrt.service как строки вида:

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

6.2.4. Запуск Агента ПОДД

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

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

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

[Service]
Type=simple

WorkingDirectory=/dist/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 \
    -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

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

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

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

apt-get 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

6.3. Настройка предустановленного профиля Витрины в Агенте ПОДД

Раздел применим только при использовании Витрины и заданной настройке использования предустановленного профиля Витрины в Агенте ПОДД (см. :ref:`reg_set`).

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

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

Пример предустановленного профиля Витрины в Агенте ПОДД:

{
  "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 - Адаптер Витрины поддерживает обработку параметра.

6.4. Настройка сбора метрик Агента ПОДД (опционально)

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

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

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

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

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

Полный список метрик приведен в Приложение А Список метрик Агента.