Служба Analytic
Служба Primo.Orchestrator.Analytic (далее — Analytic) предназначена для сбора, хранения и предоставления аналитических данных о работе Оркестратора.
Назначение и особенности
Analytic собирает первичные события из RabbitMQ и сохраняет их в отдельную базу данных. В отличие от других служб Оркестратора, Analytic не участвует в операционной работе (запуск роботов, обработка очередей, лицензирование и т.д.). Это аналитический компонент.
Ключевые особенности:
- Слив первичных данных — служба аккумулирует сырые события с минимальной предварительной агрегацией.
- Гибкость использования — данные можно использовать как угодно: строить сложные отчёты, создавать материализованные представления (MV), подключаться к БД напрямую из BI-систем или вообще не использовать Analytic — это никак не повлияет на работу Оркестратора.
- Безопасность для production — Analytic работает с изолированной копией данных. Даже самые ресурсоёмкие аналитические запросы не влияют на основные базы Оркестратора (
ltools,ltoolslogs,ltoolsidentityи др.).
Что даёт Analytic администратору:
Analytic позволяет свободно работать с данными без ограничений. Analytical БД — это изолированная площадка, где можно делать с метриками всё, что нужно: строить сложные выборки, создавать долгообновляемые представления, настраивать выгрузки в BI.
Принцип работы
- Получение событий — служба подключается к RabbitMQ и потребляет сообщения о ключевых событиях (запуски роботов, статусы очередей, ошибки и т.д.).
- Обработка и хранение — Analytic сохраняет события в отдельную базу данных PostgreSQL с минимальной предварительной агрегацией.
- Предоставление данных — через API служба отдаёт данные для отображения в UI Оркестратора (вкладка «Аналитика»). Кроме того, вы можете подключаться к аналитической БД напрямую и строить собственные отчёты.
Основные функции
- Запуски роботов — количество запусков, успешных и ошибочных выполнений, длительность процессов, загруженность роботов.
- Статистика по очередям обмена данными — время обработки элементов, количество повторов, пропускная способность.
- Статистика по использованию лицензий (с версии 1.26.7+):
- Лицензии роботов — сбор данных об использовании лицензий роботами (время взятия/освобождения, успешность выполнения, идентификаторы роботов и машин)
- Лицензии Studio Citizen — сбор данных о выданных лицензиях Studio, пользователях и датах последней активности для мониторинга использования в рамках Citizen
Требования к окружению
- База данных — PostgreSQL (отдельная БД, рекомендованное имя —
ltoolsanalytic). - Брокер сообщений — RabbitMQ (должен быть доступен для службы).
- Сетевые порты — служба должна иметь сетевой доступ к RabbitMQ и PostgreSQL.
Установка
Подробные инструкции по установке зависят от операционной системы:
| ОС | Ссылка |
|---|---|
| Windows Server | Установка Analytic под Windows |
| Linux (CentOS / РЕД ОС) | Установка Analytic под CentOS 8 |
| Linux (Astra Linux, non-root) | Установка на Astra Linux (раздел «Analytic») |
Мониторинг
Настройка мониторинга службы Analytic описана в статье Мониторинг служб Оркестратора.
Конфигурация
Настройка службы выполняется в файле appsettings.Prod<Platform>.json (например, appsettings.ProdLinux.json или appsettings.ProdWin.json).
Основные параметры:
{
"ConnectionStrings": {
"AnalyticConnection": "PORT=5432;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;DATABASE=ltoolsanalytic;HOST=192.168.61.183;USER ID=postgres;PASSWORD=..."
},
"RabbitMQ": {
"HostName": "192.168.61.183",
"Port": 5672,
"UserName": "guest",
"Password": "guest",
"VirtualHost": "/"
}
}AnalyticConnection— строка подключения к аналитической БД PostgreSQL. Пароль рекомендуется шифровать утилитойPasswordEncryptor.RabbitMQ— параметры подключения к брокеру сообщений (хост, порт, логин, пароль, виртуальный хост).
Основные таблицы
RobotLicenseUsage
Таблица содержит информацию об использовании лицензий роботами.
| № | Поле | Описание | Примечание |
|---|---|---|---|
| 1 | Id | Суррогатный PK | |
| 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 (доступно с версии 1.26.7+).
| № | Поле | Описание | Примечание |
|---|---|---|---|
| 1 | Id | Суррогатный PK | |
| 2 | TakeAtUtc | Дата взятия лицензии студией | |
| 3 | TimeoutAtUtc | Дата освобождения лицензии по таймауту | Студия сама не сообщает о своем завершении |
| 4 | TenantId | Идентификатор тенанта | |
| 5 | User | Пользователь Studio | |
| 6 | IP | IP-адрес машины пользователя | |
| 7 | SessionKey | Идентификатор сеанса | |
| 8 | Citizen | Тип Citizen |
Особенности сбора статистики по лицензиям Studio: - Одна учетная запись =
одна лицензия (даже при открытии нескольких экземпляров Studio) - Лицензия
активна, пока открыта Studio - Лицензия освобождается через ~2 минуты после
закрытия 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 | Идентификатор тенанта |
Возможные сценарии использования
- Тяжёлая аналитика — строить сложные отчёты с долгими запросами, не опасаясь за нагрузку на основные БД.
- Материализованные представления — создавать MV, которые обновляются по расписанию, для ускорения типовых отчётов.
- Прямой доступ из BI — подключать к аналитической БД корпоративные BI-системы (Power BI, Tableau, Qlik и др.).
- Встроенная аналитика — использовать готовые дашборды в UI Оркестратора (вкладка «Аналитика»).
- Отказ от использования — если аналитика не нужна, службу можно не устанавливать или не запускать; это не повлияет на основной функционал Оркестратора.