Служба Analytic
Служба Primo.Orchestrator.Analytic (далее - Analytic) предназначена для сбора, хранения и предоставления аналитических данных о работе Primo RPA Orchestrator.
Назначение и особенности
Analytic получает события из RabbitMQ и сохраняет их в отдельной аналитической базе данных PostgreSQL. Служба используется для анализа работы роботов, очередей и лицензий, но не участвует непосредственно в запуске роботов, обработке очередей и лицензировании.
Основные возможности:
- Сбор первичных событий - накопление данных с минимальной предварительной агрегацией.
- Аналитические запросы - выполнение выборок и построение отчётов на основе накопленных данных.
- Материализованные представления - хранение предварительно рассчитанных данных для ускорения типовых запросов.
- Интеграция с BI-системами - использование аналитической базы данных для построения собственных отчётов.
Analytic использует отдельную базу данных и не участвует непосредственно в выполнении RPA-проектов. При этом ресурсоёмкие аналитические запросы могут создавать нагрузку на общие вычислительные и дисковые ресурсы, если аналитическая база и другие службы размещены на одной инфраструктуре.
Принцип работы
- Получение событий - Analytic получает из RabbitMQ сообщения о запусках роботов, работе очередей, ошибках и других событиях Оркестратора.
- Обработка и хранение - события записываются в аналитическую базу данных PostgreSQL.
- Подготовка статистики - служба обновляет материализованные представления, используемые для аналитических запросов.
- Предоставление данных - сведения используются в разделе Аналитика интерфейса Оркестратора и могут применяться при построении внешних BI-отчётов.
Основные функции
- Аналитика запусков роботов - количество запусков, результаты выполнения, длительность процессов и загрузка роботов.
- Статистика очередей обмена данными - время обработки элементов, повторы и пропускная способность.
- Статистика использования лицензий - сведения о лицензиях роботов и Studio Citizen. Сбор этих данных поддерживается начиная с Orchestrator 1.26.7.
Требования к окружению
- PostgreSQL - отдельная аналитическая база данных, рекомендуемое имя -
ltoolsanalytic. - RabbitMQ - брокер сообщений, доступный службе Analytic.
- Сетевая доступность - возможность подключения Analytic к PostgreSQL и RabbitMQ.
Установка
Инструкция по установке зависит от операционной системы:
| Операционная система | Инструкция |
|---|---|
| Windows Server | Установка Analytic под Windows |
| Linux (CentOS / РЕД ОС) | Установка Analytic под CentOS 8 |
| Linux (Astra Linux, non-root) | Установка на Astra Linux - раздел Analytic |
Конфигурация
Параметры службы задаются в конфигурационном файле соответствующей платформы, например appsettings.ProdLinux.json или appsettings.ProdWin.json.
Подключение к PostgreSQL и RabbitMQ
Пример основных параметров (адреса и учётные данные приведены условно):
{
"ConnectionStrings": {
"AnalyticConnection": "PORT=5432;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=120;DATABASE=ltoolsanalytic;HOST=postgres.example.local;USER ID=analytic_user;PASSWORD=<encrypted-password>"
},
"RabbitMQ": {
"HostName": "rabbitmq.example.local",
"Port": 5672,
"UserName": "rabbitmq_user",
"Password": "<password>",
"VirtualHost": "/"
}
}AnalyticConnection- строка подключения к аналитической базе PostgreSQL. Пароль рекомендуется шифровать утилитойPasswordEncryptorв соответствии с принятой схемой конфигурации.RabbitMQ- параметры подключения к брокеру сообщений: адрес, порт, имя пользователя, пароль и виртуальный хост.COMMANDTIMEOUT- таймаут выполнения команд PostgreSQL в секундах. Начиная с Orchestrator 1.26.9, в обновлённых конфигурациях служб используется значение120секунд.
COMMANDTIMEOUT=120 - значение в строке подключения к PostgreSQL. Для
фонового обновления материализованных представлений начиная с Orchestrator
1.26.9 предусмотрен отдельный параметр CommandTimeoutInSeconds.
Настройка таймаута обновления материализованных представлений
Начиная с Orchestrator 1.26.9, можно задавать максимальное время выполнения команды обновления для каждого материализованного представления с помощью параметра CommandTimeoutInSeconds.
Параметр указывается в секции Schedules → RefreshMaterializedViews конфигурации службы Analytic.
Пример фрагмента конфигурации для mv_WorkersUsage:
{
"Schedules": {
"RefreshMaterializedViews": {
"mv_WorkersUsage": {
"CommandTimeoutInSeconds": 600
}
}
}
}| Значение | Описание |
|---|---|
600 | Значение по умолчанию - 600 секунд (10 минут). |
0 | Без ограничения времени выполнения команды. |
| Положительное число | Максимальное время выполнения команды в секундах. |
В примере показано только расположение нового параметра. Если в конфигурации уже заданы расписания обновления материализованных представлений, сохраните их остальные параметры без изменений.
При возникновении ошибок таймаута во время обновления конкретного представления администратор может увеличить CommandTimeoutInSeconds для этого представления.
В механизме обновления также предусмотрены передача токена отмены в выполняемую команду и предотвращение параллельного выполнения одного задания обновления.
После изменения конфигурации проверьте журналы Analytic и успешность обновления представлений. Не путайте CommandTimeoutInSeconds с таймаутом отдельной команды, задаваемым в строке подключения через COMMANDTIMEOUT.
Основные таблицы
RobotLicenseUsage
Таблица содержит сведения об использовании лицензий роботами.
| № | Поле | Описание | Примечание |
|---|---|---|---|
| 1 | Id | Первичный ключ записи | |
| 2 | TakeAtUtc | Дата и время взятия лицензии | |
| 3 | ReleaseAtUtc | Дата и время освобождения лицензии роботом | |
| 4 | TimeoutAtUtc | Дата и время освобождения лицензии Оркестратором по таймауту | |
| 5 | Success | Признак успешного завершения выполнения | |
| 6 | OperationKey | Идентификатор бизнес-операции | |
| 7 | TenantId | Идентификатор тенанта | |
| 8 | RobotId | Идентификатор робота | Для оркестраторного робота обязателен. Пустое значение указывает на Attended-робота. |
| 9 | WorkerId | Идентификатор машины робота | Обязателен для оркестраторного робота. |
| 10 | AssignmentId | Идентификатор задания | Для оркестраторного робота необязателен. |
| 11 | ProjectId | Идентификатор проекта | Обязателен для оркестраторного робота. |
| 12 | ProjectName | Наименование проекта | |
| 13 | AttendedRobotUser | Пользователь Attended-робота | |
| 14 | WorkerIp | IP-адрес машины робота | |
| 15 | FolderId | Идентификатор папки | При использовании папок. Для корневой папки значение пустое. |
StudioLicenseUsage
Таблица содержит сведения об использовании лицензий Studio, доступные начиная с Orchestrator 1.26.7.
| № | Поле | Описание | Примечание |
|---|---|---|---|
| 1 | Id | Первичный ключ записи | |
| 2 | TakeAtUtc | Дата и время взятия лицензии | |
| 3 | TimeoutAtUtc | Дата и время освобождения лицензии по таймауту | Studio не передаёт отдельное сообщение о завершении работы. |
| 4 | TenantId | Идентификатор тенанта | |
| 5 | User | Пользователь Studio | |
| 6 | IP | IP-адрес машины пользователя | |
| 7 | SessionKey | Идентификатор сеанса | |
| 8 | Citizen | Тип Citizen |
Одна учётная запись занимает одну лицензию Studio, даже если пользователь
открыл несколько экземпляров приложения. После закрытия Studio лицензия
освобождается по таймауту, обычно примерно через две минуты; время отражается
в поле TimeoutAtUtc.
Материализованные представления
mv_RobotsUsage
Содержит предварительно агрегированные по дням данные об использовании лицензий роботами.
| № | Поле | Описание | Примечание |
|---|---|---|---|
| 1 | Day | День | |
| 2 | Usage | Продолжительность использования, мс | |
| 3 | CountSuccess | Количество успешных завершений | |
| 4 | CountNotSuccess | Количество неуспешных завершений | |
| 5 | CountUsage | Общее количество использований | |
| 6 | LastTakeAtUtc | Последняя дата взятия лицензии | |
| 7 | RobotId | Идентификатор робота | Для оркестраторного робота обязателен. Пустое значение указывает на Attended-робота. |
| 8 | TenantId | Идентификатор тенанта |
mv_WorkersUsage
Содержит предварительно агрегированные по часам дня данные об использовании машин роботов.
| № | Поле | Описание | Примечание |
|---|---|---|---|
| 1 | HourDay | Час дня | |
| 2 | Usage | Продолжительность использования, мс | |
| 3 | CountRobot | Количество использований роботом | Подсчитывается с DISTINCT. |
| 4 | CountUsage | Количество использований | |
| 5 | WorkerId | Идентификатор машины робота | |
| 6 | TenantId | Идентификатор тенанта |
Возможные сценарии использования
- Аналитические отчёты - выполнение сложных выборок по событиям и статистике.
- Материализованные представления - использование заранее агрегированных данных для типовых отчётов.
- BI-системы - подключение к аналитической базе данных из Power BI, Tableau, Qlik и других инструментов.
- Встроенная аналитика - использование аналитических данных в разделе Аналитика интерфейса Оркестратора.
Мониторинг
Настройка мониторинга службы описана в статье Мониторинг служб Оркестратора.
Очистка аналитической базы данных
Для удаления устаревших записей из базы данных ltoolsanalytic предусмотрены хранимые процедуры пакетной очистки.
Порядок создания и запуска процедур, настройки параметров и автоматического выполнения по расписанию приведён в статье Очистка аналитической базы данных.