Войти

Возможности мониторинга агента СМЭВ4

Дата публикации: 11.08.2025

Агент СМЭВ4 является связующим звеном между информационной системой (ИС) участника взаимодействия или Витрины данных с Ядром СМЭВ4. От его производительности и работоспособности зависит качество межведомственного взаимодействия. 

Для оценки производительности и работоспособности Агента СМЭВ4 реализована функциональность , позволяющая отслеживать ряд показателей (метрик).


К ключевым показателям (метрикам) относятся:

  1.   Показатели состояния обменов, которые отражают текущий статус обработки запросов.
  2.   Показатели, позволяющие отслеживать утилизацию ресурсов (процессора и оперативной памяти).

  Примечание

 Предполагается, что на текущем этапе Агент СМЭВ4 уже установлен и имеет успешное соединение с Ядром СМЭВ4. Подробнее по установке Агента СМЭВ4 описано в Руководстве администратора Агента СМЭВ4, размещённом на портале ЕСКС в Документах ПО для Участников СМЭВ в блоке Агент СМЭВ4В этом же разделе на портале ЕСКС размещаются Дистрибутивы разных версий и образцы конфигурирования агента

Настройку мониторинга можно разделить на 4 шага (не нарушая порядок):
          1)     Настройка инструмента сбора метрик;
          2)     Настройка сбора метрик;
          3)     Проверка работоспособности выгрузки метрик;
          4)     Настройка дашборда.

Шаг 1. Настройка инструмента сбора метрик
В статье Общая информация и пример настройки мониторинга рассмотрен инструмент для сбора метрик Prometheus c детальным описанием пошаговой установки с использованием Docker-образов.

Шаг 2. Настройка сбора метрик Агента СМЭВ4

Настройку сбора метрик можно разбить на 2 этапа:

  1.   Подключить выгрузку метрик

По умолчанию в конфигурации Агента СМЭВ4 не активирована возможность публикации метрик, поэтому для получения данных о производительности и состоянии Агента СМЭВ4 необходима предварительная настройка. Для этого необходимо внести дополнительную настройку для сбора метрик в конфигурационный файл Агента СМЭВ4 application.yml:

metrics:
  implementation: PROMETHEUS
  endpointPort: 8381
где:
  • implementation – параметр задаёт способ сбора метрик (в примере в качестве инструмента указан Prometheus);
  • endpointPort – параметр задаёт порт, по которому будут собираться метрики.

Например, можно добавить нужный нам блок после раздела # Общие настройки витрины с указанием использования инструмента сбора метрик Prometheus и значение порта, по которому из Агента СМЭВ4 будут выгружаться метрики (Рисунок 1):

Рисунок 1 Конфигурационный файл Агента СМЭВ4 application.yml блок Общие настройки витрины.png

Рисунок 1 – Конфигурационный файл Агента СМЭВ4 application.yml блок «Общие настройки витрины»

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

  2.   Доработка конфигурации Prometheus

В статье Общая информация и пример настройки мониторинга представлен формат конфигурирования целевых систем для Prometheus без описания добавления источника данных.

Для добавления источника данных необходимо:

          1)     Открыть файл prometheus.yml на редактирование. Пример команд ниже:

cd /home/user/monitoring/prometheus/

nano prometheus.yml

          2)     В открывшемся редакторе дописать подключение к Агенту СМЭВ4 согласно примеру ниже: 

global:

  scrape_interval: 15s

scrape_configs:

  - job_name: 'agent_podd'

    static_configs:

      - targets:

        - '{IP_ADDRESS}:{METRICS_PORT}'

При заполнении необходимо заменить {IP_ADDRESS} на внешний IP-адрес виртуальной машины, на которой развернут Агент СМЭВ4, и {METRICS_PORT} на порт, по которому выгружаются метрики этого сервиса (в примере выше указывался порт 8381). Такой подход будет работать даже при условии отсутствия проброса указанного порта наружу, так как Prometheus сможет получить доступ к метрикам по внутреннему адресу в общей сети.

  Примечание

 Если Агент СМЭВ4 развернут в Docker-контейнере, находящемся в той же внутренней сети, что и Prometheus, то вместо IP-адреса можно указать имя контейнера

Через указания имени контейнера Агента СМЭВ4 Prometheus автоматически обнаружит и начнет собирать метрики из этого сервиса.

Шаг 3. Проверка работоспособности выгрузки метрик

После успешной настройки Агента СМЭВ4 и сервиса по сбору метрик Prometheus, необходимо проверить работоспособность выгрузки метрик. Для этого можно обратиться к адресу метрик c выгрузкой полного результата всех метрик в отдельный файл следующей командой:

curl -sX GET localhost:8381/metrics > agent_metrics.txt

В случае успеха файл agent_metrics.txt должен быть не пустым и может содержать примерно следующий набор метрик в начале файла, немного подробнее значений метрик будет раскрыто ниже:

# HELP req_count_total req.count

# TYPE req_count_total counter

req_count_total{kind="query_request",result="success",} 3.0

req_count_total{kind="query_result",result="success",} 3.0

req_count_total{kind="query_request",result="error",} 1.0

req_count_total{kind="query_result",result=" error ",} 1.0    

# HELP req_time_seconds req.time

# TYPE req_time_seconds histogram

req_time_seconds{kind="query_request",result="success",} 3.0

req_time_seconds{kind="query_result",result="success",} 3.0

req_time_seconds{kind="query_request",result="error",} 1.0

req_time_seconds{kind="query_result",result=" error ",} 1.0

В  примере содержании файла  agent_metrics.txt, описанном выше присутствует набор метрик. Чтобы понять как их использовать для мониторинга производительности и работоспособности Агента СМЭВ4, ознакомимся с описанием основных из них.

Описание метрик для запросов

К самым базовым метрикам можно отнести количественные показатели результата и времени выполнения РЗ: req_count_total и req_time_seconds.

С использованием метки result можно отбирать результаты выполнения РЗ, которые могут быть успешными (success), завершенными с ошибкой (error) или выполнение которых было завершено по таймауту (cancel).

Варианты значений метки kind в свою очередь могут быть различны для результата выполнения запроса (Таблица 1) и для результата времени выполнения запроса (Таблица2).

Таблица 1 – Значения метки kind для результата выполнения запросов

query_request

результат запроса от ИС в Ядро

query_result

ответ из Ядра на запрос ИС

sub_query_request

результат подзапроса из Ядра в Витрину

sub_query_result

ответ из Витрины на подзапрос Ядра

api_gw_meta_request

результат запроса метаданных из ИС в Ядро

api_gw_response

ответ из Ядра на запрос метаданных ИС

allowance

результат проверки полномочий поступившего запроса

table_param

результат загрузки табличных параметров

sign

результат подписания запроса

verify

результат проверка подписи

certificate

результат запроса сертификата

blob_request

результат запроса BLOB-объекта

blob_result

результат ответа BLOB-объекта

subscription_delta_request

результат запроса дельты

subscription_delta_apply_result

результат применения статуса дельты

subscription_delta_result_chunk

результат ответа на запрос дельты

subscription_delta_notification_in_event

результат уведомления о наличии дельты от Ядра

Таблица 2 – Значения метки kind для времени выполнения запросов

query_request

время запроса от ИС в Ядро

query_result

время ответа из Ядра на запрос ИС

sub_query_request

время подзапроса из Ядра в Витрину

sub_query_result

время ответа из Витрины на подзапрос Ядра

api_gw_meta_request

время запроса метаданных от ИС в Ядро

api_gw_response

время ответа из Ядра на запрос метаданных ИС

allowance

время проверки полномочий поступившего запроса

table_param

время загрузки табличных параметров

sign

время подписания запроса

verify

время проверка подписи

certificate

время запроса сертификата

blob_request

время запроса BLOB-объекта

blob_result

время ответа BLOB-объекта

subscription_delta_request

время запроса дельты

subscription_delta_apply_result

время применения статуса дельты

subscription_request_delta

время запроса дельты от ИС Потребителя

subscription_delta_result_chunk

время ответа на запрос дельты

subscription_delta_notification_event

время уведомления о наличии дельты от Витрины

subscription_delta_notification_in_event

время уведомления о наличии дельты от Ядра

Наличие множества значений меток kind, позволяет детализировать и классифицировать данные в зависимости от конкретных задач, например анализа частоты ошибок или мониторинг нагрузки на Агент СМЭВ4.

Шаг 4. Настройка дашборда

Способы визуализации данных, собранных на шаге 2 не ограничены.

В качестве примера в данной статье используется инструмент Grafana. В нём можно использовать разнообразные формы визуализации, такие как линейные графики, гистограммы, круговые диаграммы и таблицы, что позволяет адаптировать представление данных под конкретные потребности.

Создадим дашборд выполнив следующие действия:

          1)     На примере ниже порт для доступа в Grafana – 3000. В окне браузера укажите адрес до Grafana (Рисунок 2):

Рисунок 2 Окно браузера. Адрес до Grafana.png

Рисунок 2 – Окно браузера. Адрес до Grafana

          2)     В открывшемся окне необходимо ввести данные учётной записи (по умолчанию: admin/admin, в целях безопасности рекомендуется изменить данные для входа от учётной записи в настройках Grafana):

Рисунок 3 Авторизация в Grafana.png

Рисунок 3 – Авторизация в Grafana

          3)     После авторизации вы попадаете в главную страницу Grafana (Рисунок 4):


Рисунок 4 Главная страница Grafana.png

Рисунок 4 – Главная страница Grafana

          4)     В левом боковом меню страницы Grafana нажмите на стрелочку для раскрытия всех функций:


Рисунок 5 Главная страница Grafana.png

Рисунок 5 – Главная страница Grafana

          5)     В открывшейся плашке необходимо раскрыть Dashboards (Дашборды) и в выпадающем списке выбрать + New dashboard (Новый дашборд): 


Рисунок 6 Главная страница Grafana. Создание дашборда.png

Рисунок 6 – Главная страница Grafana. Создание дашборда

          6)     На появившейся новой странице выбрать Add a new panel (Добавить новую панель):


Рисунок 7 Новый дашборд. Создание панели дашборда.png

Рисунок 7 – Новый дашборд. Создание панели дашборда

          7)     В открывшемся окне создания панели будет предложено выбрать источник данных, необходимо выбрать Prometheus:


Рисунок 8 Панель дашборда. Выбор источника данных.png

Рисунок 8 – Панель дашборда. Выбор источника данных

          8)     Ниже необходимо нажать кнопку «+ Query» (Запрос) для того, чтобы составить запрос через конструктор. Также справа, нажав кнопку «Code» можно перейти из конструктора в режим для ввода запроса самостоятельно:

Рисунок 9 Панель дашборда. Создание запроса.png

Рисунок 9 – Панель дашборда. Создание запроса


          9)     В поле ввода можно подставить следующий запрос для получения общего количества успешных запросов, совершенных агентом. В случае, когда метрика еще не будет создана, отобразится значение ноль:

max(req_count_total{job="agent_podd",kind="query_request",result="success"}) or vector(0)

Рисунок 10 Панель дашборда. Создание запроса.png

Рисунок 10 – Панель дашборда. Создание запроса

          10)     Далее на правой панели необходимо найти плашку с визуализацией и раскрыть выпадающий список страницы (по умолчанию будет выставлено значение Time series):

Рисунок 11 Панель дашборда. Плашка визуализации.png

Рисунок 11 – Панель дашборда. Плашка визуализации

          11)     Выберите тип визуализации Stat как на рисунке 12:

Рисунок 12 Панель дашборда. Выбор визуализации.png

Рисунок 12 – Панель дашборда. Выбор визуализации

          12)     Ниже ввести наименование панели в поле Title:

Рисунок 13 Панель дашборда. Заполнение панели опций.png

Рисунок 13 – Панель дашборда. Заполнение панели опций

          13)     Можно выставить значения для отображения данных. Например, выставить значение None для Text mode и для Graph mode. Примерный результат отображения дашборда представлен на рисунке 14:

Рисунок 14 Создание первой панели в дашборде.pngРисунок 14 – Создание первой панели в дашборде

          14)     Остаётся нажать кнопку «Apply» (Применить) в правом верхнем углу (см. рисунок 14) для текущей панели и сохранить сам дашборд.

          15)     Для сохранения дашборда нужно кнопку «Save» в правом верхнем углу и ввести наименование дашборда и нажать кнопку «Save» (Сохранить) как на рисунке 15:

Рисунок 15 Сохранение дашборда.png

Рисунок 15 – Сохранение дашборда

Первый дашборд с единственной панелью готов.

Авторизуйтесь, чтобы оставить комментарий к статье