Сбор данных агентом мониторинга
Агент мониторинга — приложение, которое устанавливается на компьютеры сотрудников и регистрирует действия пользователей (работу с окнами и приложениями, ввод текста, использование клавиатуры и мыши).
Агент мониторинга используется как источник данных для анализа пользовательской активности на рабочих станциях. Он играет ключевую роль в построении системы Task Mining, что позволяет точно фиксировать рабочие действия сотрудников, переключения между программами, взаимодействие с интерфейсами и другими элементами ОС. Собранные данные используются для выявления повторяющихся задач, построения моделей бизнес-процессов и анализа загруженности сотрудников.
- Агент мониторинга Proceset Agent использует системные API операционных систем Windows (Microsoft UI Automation и др.) и Linux (AT-SPI и др., если применимо).
- Качество, полнота и корректность сбора аналитических данных, а также стабильность работы агента мониторинга целиком зависят от:
- Технологической совместимости клиентских приложений с используемыми API и стандартами доступности
- Особенностей архитектуры и реализации сторонних приложений, включая приложения, использующие проприетарные или устаревшие технологии (legacy-системы)
- Настроек безопасности и политик корпоративной инфраструктуры, блокировки сторонними средствами защиты, ограничений операционной системы и/или антивирусного программного обеспечения
- Корректности разметки и экспонирования свойств интерфейса со стороны мониторируемых приложений
- Правильности активации и поддержки соответствующих технологий доступности, например, Java Access Bridge для Java-приложений
- При работе с ресурсоемкими файлами в Microsoft Excel возможно замедление — это одно из известных ограничений агента мониторинга.
- Компания «Инфомаксимум» принимает все разумные меры для максимальной совместимости с прикладным программным обеспечением, однако не несет ответственности за те ограничения, которые предопределены архитектурой сторонних решений, изменениями системных API, либо политиками безопасности инфраструктуры клиента.
Основные возможности агента мониторинга:
- Фиксирует рабочую активность сотрудников в приложениях, браузерах и других программах
- Помогает определить уровень вовлеченности пользователя, периоды активности и простоя
- Собирает данные, необходимые для построения моделей процессов и выявления повторяющихся задач
Агент мониторинга не влияет на производительность компьютера и не сохраняет конфиденциальные данные, такие как пароли.
В зависимости от уровня детализации, агент может работать в режиме базового или расширенного мониторинга, а также поддерживает сбор данных из Java-приложений и HID-устройств.
Для установки агента мониторинга требуются права администратора. После установки агент работает с правами обычного пользователя.
Агент мониторинга собирает активность пользователя, которая состоит из событий. Событие — это пользовательское действие (нажатие кнопки, переключение вкладки, заполнение поля и т. п.) или программное действие (например, появление диалогового окна, изменение заголовка у окна, изменение активного окна и т. п.). Все события относятся к программе, окно которой активно в текущий момент. Если событие не приводит к каким-то последствиям, например, клики по неактивному элементу управления, такие события не записываются в активность.
Каждое событие содержит в себе информацию о времени совершения действия, названии программы, ее версии, пути к исполняемому файлу и, в зависимости от типа мониторинга, дополнительную информацию. Подробное описание — в разделе Описание структуры хранения данных в ClickHouse.
Для тестирования сбора активности может использоваться portable-версия агента мониторинга — Консольный агент. Эта версия агента запускается без установки в систему, собирает активность в рамках текущей пользовательской сессии и не передает архивы на сервер. Процесс сбора активности отображается непосредственно в окне терминала.
Базовый мониторинг
При базовом мониторинге агент записывает сведения об открытых окнах приложений и переключениях между ними:
- В случае использования браузера — заголовок активной вкладки и URL-адрес страницы
- В случае использования настольных программ — заголовок окна
- В случае 1С 8.3 возможен сбор заголовка активной вкладки внутри программы
- В случае MS Excel — заголовок активного листа
К базовому мониторингу относятся события оконной иерархии и HID-активность.
При локальном (без отправки на сервер) хранении активности в течение месяца объем занимаемого дискового пространства на одного пользователя составляет 25 МБ.
Расширенный мониторинг
Расширенный мониторинг собирает данные форм (parameters), если они есть, и события. Parameters — это значения редактируемых полей (с типом Edit и ComboBox). Их поиск происходит при фокусе и при потере фокуса редактируемым полем. После того как parameters-элементы найдены, они будут добавлены во все события в окне.
Агент мониторинга не собирает и не сохраняет пароли пользователей. Поля, в которых пользователю необходимо ввести пароль, не фиксируются агентом мониторинга — сохраняется только факт редактирования поля Пароль.
Мониторинг Java-приложений
Для расширенного мониторинга доступны Java-приложения, поддерживающие технологию Java Access Bridge. Это позволяет агенту мониторинга расширить список программ, активность в которых необходимо отслеживать. Примерами таких программ могут быть Oracle, SweetHome 3D и другие.
Для фиксации данных о работе пользователя в Java-приложениях требуется использование модуля Java-мониторинга. Java-мониторинг обеспечивает более детализированную информацию о работе Java-приложений, что помогает в их анализе, оптимизации и способствует более эффективному управлению. С этим модулем в приложениях, работающих с технологией Java Access Bridge, будет фиксироваться вся расширенная информация, без него — только информация о заголовках окон.
Сбор и передача данных пользовательской активности
Если по каким-то причинам агенту мониторинга не удается определить URL текущей страницы в браузере, активность на этой странице не будет зафиксирована.
Для корректного учета активности по каждому пользователю дополнительно агент собирает:
- Имя и логин учетной записи пользователя, ее домен или рабочую группу
- Имя компьютера, его домен или рабочую группу
- Часовой пояс пользовательской сессии
Сервер Proceset получает от агента мониторинга данные об активности сотрудников и сохраняет их в промежуточную базу данных, затем данные синхронизируются с таблицей monitoring_activity в СУБД ClickHouse. Структура таблицы monitoring_activity, включая информацию о колонках, их типах данных и содержимом подробно описана в разделе Описание структуры хранения данных в ClickHouse.
Виды событий
Примеры событий оконной иерархии:
WindowOpen— всегда, когда открывается что-то новое (окно, вкладка, файл, URL, даже если ID окна не менялся)DocumentOpen— когда открывается новый документDocumentSave— когда сохраняется документSheetOpen— открывается или переключается лист в ExcelWindowSwitch— всегда, когда происходит переключение между старыми вкладками или окнамиWindowUpdate— всегда, когда меняется заголовок вкладки или окна
События, которые не записываются
- Действия, которые ничего не меняют: клики по окну, прокрутка, движение мыши по элементам выпадающего списка
- Смена фокуса при нажатии стрелок
- Клик по редактируемому полю
- Переключение на рабочий стол и действия на нем
- Переключение на панель задач и действия в ней
- Переключение на меню Пуск и действия в нем
- Переключение на панель поиска и действия в ней
Особенности фиксации активности
Объекты UI Automation, связанные с неактивной вкладкой браузера, постоянно остаются в памяти агента.
HID-активность
Агент мониторинга дополнительно фиксирует активность от HID-устройств, таких как мышь, клавиатура, микрофон и веб-камера. С помощью HID-активности можно определить промежутки активности и неактивности пользователя за ПК.
У фиксирования HID-активности от камеры и микрофона есть известные ограничения.
HID-активность от действий пользователя определяется как аппаратное событие — hardware. Роботизированное или программное событие определяется как injected.
HID-активность от мыши и клавиатуры фиксируется при следующих действиях:
- Клик мыши: программный (InjectedMouseClick) и аппаратный (HardwareMouseClick)
- Прокрутка мышью: программная (InjectedMouseScroll) и аппаратная (HardwareMouseScroll)
- Нажатие кнопок клавиатуры: программное (InjectedKeyboardEvent) и аппаратное (HardwareKeyboardEvent)
Агент мониторинга не записывает вводимый текст. Фиксируется только факт нажатия клавиш и комбинации с модификаторами (Ctrl, Alt, Shift, F1—F12).
У каждого события используется свой тип, представленный в виде числового кода. С подробной информацией о типах событий вы можете ознакомиться на странице Информация о логировании.
Данные для HID-события берутся из предыдущего события, но с заменой на соответствующий тип HID-активности (HardwareMouseClick, HardwareKeyboardEvent и т. п.). HID-активность фиксируется только для полей, в которых возможна длительная работа, например, поля редактирования.
HID-событие фиксируется относительно последнего зафиксированного события, когда интервал между ним и предыдущим событием равен одной минуте или больше. В то же время, от HID-события до события пользовательского действия может быть меньше одной минуты.
Если пользователь работает так, что каждое нажатие с интервалом меньше одной минуты приводит к событию, например, переключению окон, HID-события вовсе могут быть не зафиксированы.
Алгоритм работы
Сохраняется время последнего HID-события, а также время последнего записанного в активность HID-события. Когда происходит новое событие:
- Если время события больше или равно времени последнего события + одна минута, то в активность добавляются последнее HID-событие и новое
- Если время события больше или равно времени последнего записанного в активность + одна минута, то в активность добавляется новое событие
В остальных случаях запоминается время.
Пример 1:
Пользователь печатает в текстовом документе и последнее HID-событие зафиксировалось в 10:00:00. Он печатал до 10:00:35, после чего отошел от рабочего места на 5 минут и в 10:05:20 снова кликнул мышью по текстовому документу и начал печатать. В этом случае агент зафиксирует HID-события в 10:00:00, 10:00:35 и 10:05:20.
Анализируя время событий можно сделать вывод что пользователь не работал за ПК с 10:00:35 по 10:05:20, так как разница во времени между 10:00:00 и 10:00:35 меньше 1 минуты.
Пример 2:
Пользователь работает в браузере и последнее HID-событие зафиксировалось в 15:00:30. Он совершил клик в браузере в 15:00:55, сделал паузу и кликнул по уже другой программе в 15:01:20. Агент зафиксирует только одно HID-событие в 15:01:20, так как интервал между 15:00:30 и 15:01:20 меньше минуты и нет необходимости фиксировать в качестве HID-события 15:00:55.
Кастомный скрипт постобработки
Кастомный скрипт постобработки — это файл на языке Lua, который агенты мониторинга выполняют после сбора данных. С помощью скрипта вы управляете составом собираемых данных: исключаете или хешируете чувствительную информацию (ИНН, ФИО, номера паспортов, телефоны, адреса и т. п.) под требования организации. Скрипт выполняется в дополнение к штатной постобработке агента.
Дополнительная настройка на сервере для работы со скриптами не требуется.
В системе одновременно может быть только один скрипт постобработки. Повторная загрузка заменяет предыдущий.
Загрузка, просмотр и удаление скрипта выполняются через GraphQL API.
Загрузка скрипта
Подготовьте файл скрипта с расширением .lua размером до 1 Мб, например:
- Windows:
C:\scripts\postprocess.lua - Linux:
/opt/im/postprocess.lua
Загрузите скрипт multipart/form-data POST-запросом на /graphql. Запрос содержит GraphQL-мутацию и сам файл .lua отдельной частью.
curl -X POST "https://<сервер>/graphql" \
-H "Cookie: session=<uuid-сессии>" \
-F 'graphql={"query":"mutation { postprocessScript { uploadPostprocessScript } }"}' \
-F 'file=@C:\scripts\postprocess.lua;type=text/x-lua'
В ответ сервер возвращает UUID загруженного скрипта.
После загрузки сервер подписывает скрипт автоматически — дополнительных действий по подписи со стороны администратора не требуется. Агент проверяет подпись перед запуском скрипта.
Просмотр и скачивание скрипта
Чтобы проверить наличие скрипта в системе или просмотреть его содержимое, выполните GraphQL-запрос:
query {
postprocessScript {
hasSinglePostprocessScript
viewSinglePostprocessScript
}
}
hasSinglePostprocessScript— возвращаетtrue, если скрипт загруженviewSinglePostprocessScript— возвращает текст скрипта в теле JSON-ответаdownloadSinglePostprocessScript— возвращает файл скрипта как бинарную выгрузку (имя файла, байты .lua, MIMEtext/lua); тело ответа нужно сохранить в файл
Чтобы скачать файл скрипта, выполните POST-запрос и сохраните тело ответа:
curl -X POST "https://<сервер>/graphql" \
-H "Cookie: session=<uuid-сессии>" \
-H "Content-Type: application/json" \
-d '{"query":"query { postprocessScript { downloadSinglePostprocessScript } }"}' \
-o postprocess.lua
Если нужен текст скрипта в JSON-ответе без бинарной выгрузки, используйте viewSinglePostprocessScript:
curl -X POST "https://<сервер>/graphql" \
-H "Cookie: session=<uuid-сессии>" \
-H "Content-Type: application/json" \
-d '{"query":"query { postprocessScript { viewSinglePostprocessScript } }"}'
В ответ сервер возвращает JSON вида:
{"data":{"postprocessScript":{"viewSinglePostprocessScript":"<текст скрипта>"}}}
Удаление скрипта
Чтобы удалить скрипт, выполните мутацию:
mutation {
postprocessScript {
deletePostprocessScript(uuid: "<uuid>")
}
}
После удаления агенты перестают получать скрипт при следующем опросе.
Как написать скрипт постобработки агента мониторинга и какие функции Lua API доступны — описано в документации для разработчиков.
Была ли статья полезна?