Skip to Content

Наблюдение за выполнением роботов с помощью OpenTelemetry

Функциональность доступна в Primo RPA Studio .NET Core начиная с версии 2.26.9.

OpenTelemetry позволяет передавать данные о выполнении RPA-процессов во внешние системы наблюдаемости по протоколу OTLP. С помощью трассировок можно изучать последовательность выполнения элементов, находить проблемные шаги и анализировать затраты времени на поиск элементов интерфейса и взаимодействие с ними.

OpenTelemetry работает параллельно стандартному журналированию Orchestrator и не заменяет его.

Важно. В статье рассматривается передача трассировок (Traces). Передача сигналов OpenTelemetry Metrics и Logs реализуется отдельно. Метрики, отображаемые на других панелях системы наблюдаемости, не обязательно получены из OpenTelemetry робота.

Возможности трассировки

С помощью трассировок можно:

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

Структура трассировки

Каждый запуск процесса формирует отдельную трассировку (trace). Выполнение процесса представлено корневым интервалом (span) execution, а выполненные элементы — вложенными spans.

В системе наблюдаемости робот отображается под именем сервиса primo-robot. Источник OpenTelemetry имеет имя Primo.Robot.

Какие данные передаются

Корневой span execution содержит идентификаторы проекта, робота, выполнения и версии сценария.

АтрибутОписание
rpa.project.idИдентификатор проекта
rpa.robot.idИдентификатор робота
rpa.execution.idИдентификатор выполнения
rpa.scenario.versionВерсия сценария

Для span передаётся статус выполнения. Если при выполнении возникла ошибка, в трассировку могут включаться сведения об исключении:

АтрибутОписание
error.typeТип ошибки
error.messageТекст ошибки
exception.stacktraceСтек вызовов

Данные о выполнении элементов

Для выполненного шага создаётся дочерний span со следующими атрибутами:

АтрибутОписание
rpa.step.nameИмя элемента
rpa.step.typeТип элемента
rpa.step.orderПорядок выполнения элемента

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

Данные о взаимодействии с интерфейсом

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

АтрибутОписание
rpa.ui.resolution_time_msВремя поиска элемента интерфейса, мс
rpa.ui.response_time_msВремя выполнения действия после обнаружения элемента, мс
rpa.ui.retry_countКоличество повторных попыток поиска
rpa.ui.selector_typeТип селектора
rpa.ui.selector_desktop_typeТип рабочего стола для соответствующего селектора

rpa.ui.resolution_time_ms учитывает время от начала поиска до обнаружения элемента, включая повторные попытки. Время самого действия над найденным элементом в этот показатель не входит.

rpa.ui.response_time_ms измеряет время действия после обнаружения элемента, например нажатия или ввода текста. Таким образом, время поиска и время взаимодействия с элементом можно анализировать независимо.

Для элементов, которые только считывают или проверяют состояние интерфейса, без отдельного действия над ним, атрибут rpa.ui.response_time_ms не передаётся. Например:

  • ElementExists;
  • GetInnerText;
  • ReadDataGrid;
  • SelectGetItems;
  • ElementVanish.

Дополнительные данные

В атрибуты соответствующего span могут дублироваться пользовательские сообщения, созданные элементом записи в журнал, и дополнительные поля журнала.

АтрибутОписание
rpa.softkill.requestedПолучен запрос на мягкую остановку робота
rpa.softkill.confirmedРобот подтвердил мягкую остановку
rpa.error.screenshot_pathПуть к скриншоту, созданному при ошибке
rpa.orch_log.keepalive_failuresКоличество ошибок отправки KeepAlive
rpa.orch_log.dropped_countКоличество отброшенных сообщений журнала

rpa.error.screenshot_path передаётся, если при ошибке был создан скриншот. Атрибуты rpa.orch_log.keepalive_failures и rpa.orch_log.dropped_count передаются только при значении больше 0.

Обратите внимание. Сообщения об ошибках, стеки вызовов и пользовательские записи журнала могут содержать данные проекта. При подключении внешней системы наблюдаемости учитывайте требования вашей организации к хранению и доступу к таким сведениям.

Настройка OpenTelemetry

Для передачи трассировок необходим OTLP-получатель, доступный с компьютера, на котором выполняется робот. Адрес и протокол задаются в настройках Studio, Runner или параметрах запуска.

Настройка OpenTelemetry в Studio

Для передачи трассировок необходимо настроить подключение к OTLP-получателю.

  1. Откройте Файл → Настройки → Сетевые ресурсы → Общие → Наблюдение.
  2. Включите параметр Включено.
  3. В поле Адрес получателя укажите адрес OTLP-получателя.
  4. В поле Протокол выберите способ передачи данных:
    • Grpc — передача по протоколу gRPC;
    • HttpProtobuf — передача по HTTP с использованием формата Protobuf.
  5. При необходимости настройте Таймаут флаша — время ожидания отправки накопленных данных телеметрии. По умолчанию установлено 3000 мс.
  6. Нажмите Применить.
  7. Запустите процесс или отладку.

alt

Настройки применяются как при обычном запуске процесса из Studio, так и при отладке.

Настройка в Runner

Чтобы включить передачу телеметрии в Runner:

  1. Откройте Настройки → Наблюдение.
  2. Включите параметр Включено.
  3. Укажите Адрес получателя.
  4. Выберите протокол Grpc или HttpProtobuf.
  5. Примените настройки и запустите задание.

После запуска задания робот начнёт передавать трассировку в указанный OTLP-получатель.

alt

Настройка через командную строку

Передачу телеметрии можно включить с помощью параметров запуска робота.

ПараметрОписание
otelEnabledВключает передачу телеметрии OpenTelemetry при наличии аргумента
otelEndpointЗадаёт адрес OTLP-получателя
otelProtocolЗадаёт протокол передачи: Grpc или HttpProtobuf

При использовании параметров командной строки otelEnabled включает передачу трассировок по факту присутствия среди аргументов запуска.

Адрес OTLP-получателя

Для локально запущенного получателя обычно используются следующие адреса:

ПротоколПример адреса
Grpchttp://localhost:4317
HttpProtobufhttp://localhost:4318

Для OTLP/HTTP стандартный путь приёма трассировок — /v1/traces. Конкретный формат адреса в настройках зависит от того, ожидает ли используемый экспортёр базовый адрес получателя или полный URL трассировок.

localhost означает компьютер, на котором работает робот. Если получатель расположен на другом сервере, укажите доступное сетевое имя или адрес этого сервера.

Просмотр трассировок в Grafana

Трассировки можно просматривать в системе наблюдаемости, подключённой к OTLP-получателю. Ниже показан пример настройки на базе Grafana. Названия и состав дашбордов зависят от конфигурации конкретной системы.

Открытие дашбордов RPA

Откройте Dashboards → RPA. В представленном примере в папке находятся панели обзора запусков, логов, метрик и трассировок. Для просмотра данных OpenTelemetry выберите RPA / Трассы.

Папка RPA в Grafana со списком дашбордов, включая RPA / Трассы

Пример: список дашбордов RPA в Grafana.

Поиск нужного запуска

На дашборде RPA / Трассы выберите временной интервал и при необходимости задайте фильтры Сервис, Версия сценария и Статус. В таблице Поиск трасс отображаются идентификаторы трассировок (Trace ID), время начала, сервис, название операции и длительность.

На показанном примере записи относятся к сервису primo-robot, а название операции — execution. Эти данные помогают найти нужный запуск и сравнить время его выполнения с другими запусками. Отдельная таблица Запуски с повторами действий позволяет выделить запуски, в которых были повторные попытки выполнения действий.

Дашборд RPA / Трассы в Grafana с фильтрами и таблицами Поиск трасс и Запуски с повторами действий

Пример: поиск трассировок выполнения робота в Grafana.

Для более подробного анализа откройте трассировку по её Trace ID в подключённом средстве просмотра. В детальном представлении можно изучить корневой span execution, вложенные spans шагов, их продолжительность, статусы и атрибуты. Доступность перехода по Trace ID зависит от настройки ссылок и источника трассировок в Grafana.

Примечание. На скриншотах показан поиск трассировок, а не дерево вложенных spans. Для иллюстрации детального анализа дополнительно потребуется скриншот открытой трассировки.

Локальная проверка с помощью Jaeger (необязательно)

Для быстрой проверки передачи OTLP-трассировок можно использовать Jaeger . Это пример внешнего получателя, а не обязательный компонент Primo RPA.

Если установлен Docker, запустите Jaeger:

docker run -d --name jaeger \ -p 16686:16686 \ -p 4317:4317 \ -p 4318:4318 \ jaegertracing/jaeger:latest

Укажите в настройках робота адрес http://localhost:4317 для Grpc или http://localhost:4318 для HttpProtobuf, затем запустите процесс.

Откройте http://localhost:16686, выберите сервис primo-robot и выполните поиск трассировок (Find Traces). Сервис появится в списке после поступления первых данных. Открыв трассировку, можно просмотреть корневой span execution и spans выполненных элементов.

В этом примере данные Jaeger хранятся временно; для постоянного хранения и промышленного использования необходима отдельная настройка системы наблюдаемости.