Настройка и запуск Агента СМЭВ4 ================================ Порядок загрузки данных и программ ---------------------------------- Администратор УВ осуществляет развёртывание, запуск и настройку Агента СМЭВ4 с помощью данного руководства. .. _start_bare: Подготовка и настройка системы для запуска Агента ------------------------------------------------- Состав и содержание дистрибутивного пакета ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Состав дистрибутива Агента СМЭВ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/`` указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды. .. _pre_requisites: Предварительные операции (установка "пре-реквизитов") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Перед запуском Агента СМЭВ4 выполнить от имени пользователя **root** следующие действия: 1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать Агент СМЭВ4. 2. Установить java (Версия в примере может отличаться от версии, купленной пользователем) **Для Astra Linux** .. code-block:: bash cd /distr/common dpkg -i axiomjdk-jdk-pro17.0.4.1+1-linux-amd64-astra.deb **Для РЕД ОС** .. code-block:: bash cd /distr/common yum localinstall axiomjdk-jdk-pro17.0.4.1+1-linux-amd64.rpm 3. Установить системные переменные .. code-block:: bash export JAVA_HOME=/usr/java export PATH=$PATH:$JAVA_HOME/bin Рекомендуется внести данную настройку в **profile** пользователя либо в системный **profile** (``/etc/profile.d``/). 4. Выложить в каталог ``/distr/einfahrt`` конфигурационный файл ``application.yml``, подготовленный согласно :numref:`config_description`. 5. В файл ``/etc/hosts`` добавить следующие записи: .. code-block:: 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 .. _set_gostech: Настройка логирования в формате «Гостех» (опционально) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для переключения формата лог-файлов на стандарты **Гостех**, необходимо в список ключей запуска java добавить следующие параметры: .. code-block:: bash -Dlogback.configurationFile=logback.gostech.xml -Dlogging.config=classpath:logback.gostech.xml При запуске с помощью сервиса systemd (см. :numref:`agent_start`) данные ключи добавляются в Environment переменную ``JDK_JAVA_OPTIONS``. Местоположение результирующего файла возможно изменить системной переменной ``GOSTECH_LOG_DIR``, при ее отсутствии используется значение по умолчанию ``/fluent-bit/logs/``. Имя результирующего файла возможно изменить системной переменной ``GOSTECH_LOG_FILE_NAME``, при ее отсутствии используется значение по умолчанию ``log``. Расширение имени файла не изменяется, зафиксировано как ``.log`` При запуске с помощью сервиса systemd (см. :numref:`agent_start`) данные переменные добавляются в файл ``einfahrt.service`` как строки вида: .. code-block:: bash Environment="GOSTECH_LOG_DIR=/var/log/einfahrt" Environment="GOSTECH_LOG_FILE_NAME=einfahrt" .. _agent_start: Запуск Агента СМЭВ4 ~~~~~~~~~~~~~~~~~~~ Убедитесь, что пользователь {{user}} имеет доступ к директории, в которой установлен Агент СМЭВ4 (``/distr/einfahrt``). Пример раздела конфигурации скрипта для запуска Агента СМЭВ4 с использованием сервиса **systemd** Данный файл, с названием ``einfahrt.service``, необходимо сохранить в каталог ``/etc/systemd/system/``, указав, при необходимости, корректные пути к файлам: .. code-block:: bash [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** выполнить команду по включению, запуску сервиса и проверке его статуса: .. code-block:: bash systemctl daemon-reload systemctl enable einfahrt systemctl start einfahrt systemctl -l status einfahrt .. _log_rotate: Настройка ротации логов (опционально) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Во избежание переполнения диска лог-файлами системного уровня, рекомендуется настроить ротацию лог-файлов **systemd** сервиса. Настройка логирования осуществляется с помощью файлов конфигурации **logrotate** и **systemd** сервиса. Если этих файлов не существует, их необходимо создать. Первоначально необходимо установить пакет **logrotate**, для apt-based дистрибутивов необходимо выполнить команду: **Для Astra Linux** .. code-block:: bash apt-get install logrotate **Для РЕД ОС** .. code-block:: bash yum install logrotate Добавьте в файл **systemd** сервиса (``/etc/systemd/system/einfahrt.service``) следующие настройки логирования: .. code-block:: bash ... [Service] Type=simple StandardOutput=append:/var/log/{{ file_name }} StandardError=append:/var/log/{{ file_name }} ... Создайте файл конфигурации **logrorate** (поместить файл в ``/etc/logrotate.cron/einfahrt.conf``) и поместите в него следующие строки: .. code-block:: bash /var/log/{{ file_name }} { rotate {{ rotate }} size {{ file_size }} create nocompress copytruncate } где: - ``rotate`` – какое количество лог файлов оставлять; - ``file_size`` – размер лог-файла при котором будет происходить ротация. Создайте файл со скриптом запуска утилиты **logrotate**, поместите скрипт по пути ``/etc/logrotate.cron/einfahrt.sh``: .. code-block:: bash #!/bin/bash /usr/sbin/logrotate /etc/logrotate.cron/einfahrt.conf Добавьте права на запуск командой: .. code-block:: bash chmod +x /etc/logrotate.cron/einfahrt.sh Создайте правила cron, создайте файл ``/etc/cron.d/einfahrt`` и поместите в него содержимое ниже: .. code-block:: bash */1 * * * * root /etc/logrotate.cron/einfahrt_logrotate.sh Далее перезагрузите **systemd** сервис: .. code-block:: bash systemctl daemon-reload systemctl restart einfahrt Настройка предустановленного профиля Витрины в Агенте СМЭВ4 ------------------------------------------------------------ .. note:: Раздел применим только при использовании Витрины и заданной настройке использования предустановленного профиля Витрины в Агенте СМЭВ4 (см. :numref:`reg_set`). *Файл профиля имеет настройки по умолчанию. Вносить изменения следует только в том случае, если значения по умолчанию не подходят для данной Витрины.* Настройки задаются после установки Агента ПОДД в файле ``postgresql.json``, расположенном в директории ``/директория_установленного_Агента_СМЭВ4/postgresql.json``. По умолчанию ``/distr/einfahrt/postgresql.json`` Пример предустановленного профиля Витрины в Агенте СМЭВ4: .. code-block:: json { "sqlDialect": "POSTGRESQL", "parameterNotionType": "QUESTION", "aggFunctions": [ ... ], "otherFunctions": [ ... ], "forSystemTimeParameterSupport": false, "subQueryParamSupport": "DYNAMIC_PARAM_SUPPORT" } где: 1) ``subQueryParamSupport`` – способ передачи подзапроса при выполнении РЗ с параметрами на сторону Витрины, возможные значения: - ``NOT_SUPPORTED`` - отправка подзапроса с параметрами, подставленными в SQL-выражение; - ``DYNAMIC_PARAM_SUPPORT`` - отправка подзапроса с блоком динамических параметров, подстановка осуществляется на стороне Адаптера Витрины; - ``NAMED_PARAM_SUPPORT`` - отправка подзапроса с блоком именованных пара-метров, подстановка осуществляется на стороне Адаптера Витрины. 2) ``forSystemTimeParameterSupport`` – поддержка системного параметра РЗ для запроса актуальных на заданный момент времени данных из Витрины: - ``false`` - Адаптер Витрины не поддерживает обработку параметра; - ``true`` - Адаптер Витрины поддерживает обработку параметра. .. _metrics: Настройка сбора метрик Агента СМЭВ4 (опционально) ------------------------------------------------ Настройка Агента для передачи метрик в Prometheus ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Агент поддерживает возможность передачи метрик работы во внешнюю систему сбора метрик **Prometheus**. Для включения возможности передачи необходимо добавить в конфигурационный файл следующие параметры: .. code-block:: yaml metrics: enabled: true implementation: PROMETHEUS # порт, при обращении к которому Агент отдаёт значения метрик endpointPort: 8381 **Prometheus** следует настроить на опрос адреса, на котором запущен Агент, по указанному порту. Полный список метрик приведен в :numref:`annex_a`.