Дата публикации: 11.08.2025
Агент СМЭВ4 является связующим звеном между информационной системой (ИС) участника взаимодействия или Витрины данных с Ядром СМЭВ4. От его производительности и работоспособности зависит качество межведомственного взаимодействия.
Для оценки производительности и работоспособности Агента СМЭВ4 реализована функциональность , позволяющая отслеживать ряд показателей (метрик).
К ключевым показателям (метрикам) относятся:
1. Показатели состояния обменов, которые отражают текущий статус обработки запросов.
2. Показатели, позволяющие отслеживать утилизацию ресурсов (процессора и оперативной памяти).
Примечание
Предполагается, что на текущем этапе Агент СМЭВ4 уже установлен и имеет успешное соединение с Ядром СМЭВ4. Подробнее по установке Агента СМЭВ4 описано в Руководстве администратора Агента СМЭВ4, размещённом на портале ЕСКС в Документах ПО для Участников СМЭВ в блоке Агент СМЭВ4. В этом же разделе на портале ЕСКС размещаются Дистрибутивы разных версий и образцы конфигурирования агента
Настройку мониторинга можно разделить на 4 шага (не нарушая порядок):
1) Настройка инструмента сбора метрик;
2) Настройка сбора метрик;
3) Проверка работоспособности выгрузки метрик;
4) Настройка дашборда.
Шаг 2. Настройка сбора метрик Агента СМЭВ4
1. Подключить выгрузку метрик
По умолчанию в конфигурации Агента СМЭВ4 не активирована возможность публикации метрик, поэтому для получения данных о производительности и состоянии Агента СМЭВ4 необходима предварительная настройка. Для этого необходимо внести дополнительную настройку для сбора метрик в конфигурационный файл Агента СМЭВ4 application.yml:
|
metrics: implementation: PROMETHEUS endpointPort: 8381 |
- implementation – параметр задаёт способ сбора метрик (в примере в качестве инструмента указан Prometheus);
- endpointPort – параметр задаёт порт, по которому будут собираться метрики.
Например, можно добавить нужный нам блок после раздела # Общие настройки витрины с указанием использования инструмента сбора метрик Prometheus и значение порта, по которому из Агента СМЭВ4 будут выгружаться метрики (Рисунок 1):
Рисунок 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 автоматически обнаружит и начнет собирать метрики из этого сервиса.
После успешной настройки Агента СМЭВ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.
Способы визуализации данных, собранных на шаге 2 не ограничены.
В качестве примера в данной статье используется инструмент Grafana. В нём можно использовать разнообразные формы визуализации, такие как линейные графики, гистограммы, круговые диаграммы и таблицы, что позволяет адаптировать представление данных под конкретные потребности.
Создадим дашборд выполнив следующие действия:
1) На примере ниже порт для доступа в Grafana – 3000. В окне браузера укажите адрес до Grafana (Рисунок 2):
Рисунок 2 – Окно браузера. Адрес до Grafana
2) В открывшемся окне необходимо ввести данные учётной записи (по умолчанию: admin/admin, в целях безопасности рекомендуется изменить данные для входа от учётной записи в настройках Grafana):
Рисунок 3 – Авторизация в Grafana
3) После авторизации вы попадаете в главную страницу Grafana (Рисунок 4):
Рисунок 4 – Главная страница Grafana
4) В левом боковом меню страницы Grafana нажмите на стрелочку для раскрытия всех функций:
Рисунок 5 – Главная страница Grafana
5) В открывшейся плашке необходимо раскрыть Dashboards (Дашборды) и в выпадающем списке выбрать + New dashboard (Новый дашборд):
Рисунок 6 – Главная страница Grafana. Создание дашборда
6) На появившейся новой странице выбрать Add a new panel (Добавить новую панель):
Рисунок 7 – Новый дашборд. Создание панели дашборда
7) В открывшемся окне создания панели будет предложено выбрать источник данных, необходимо выбрать Prometheus:
Рисунок 8 – Панель дашборда. Выбор источника данных
8) Ниже необходимо нажать кнопку «+ Query» (Запрос) для того, чтобы составить запрос через конструктор. Также справа, нажав кнопку «Code» можно перейти из конструктора в режим для ввода запроса самостоятельно:
Рисунок 9 – Панель дашборда. Создание запроса
9) В поле ввода можно подставить следующий запрос для получения общего количества успешных запросов, совершенных агентом. В случае, когда метрика еще не будет создана, отобразится значение ноль:
|
max(req_count_total{job="agent_podd",kind="query_request",result="success"}) or vector(0) |
Рисунок 10 – Панель дашборда. Создание запроса
10) Далее на правой панели необходимо найти плашку с визуализацией и раскрыть выпадающий список страницы (по умолчанию будет выставлено значение Time series):
Рисунок 11 – Панель дашборда. Плашка визуализации
11) Выберите тип визуализации Stat как на рисунке 12:
Рисунок 12 – Панель дашборда. Выбор визуализации
12) Ниже ввести наименование панели в поле Title:

Рисунок 13 – Панель дашборда. Заполнение панели опций
13) Можно выставить значения для отображения данных. Например, выставить значение None для Text mode и для Graph mode. Примерный результат отображения дашборда представлен на рисунке 14:
Рисунок 14 – Создание первой панели в дашборде
14) Остаётся нажать кнопку «Apply» (Применить) в правом верхнем углу (см. рисунок 14) для текущей панели и сохранить сам дашборд.
15) Для сохранения дашборда нужно кнопку «Save» в правом верхнем углу и ввести наименование дашборда и нажать кнопку «Save» (Сохранить) как на рисунке 15:
Рисунок 15 – Сохранение дашборда
Первый дашборд с единственной панелью готов.





