Информация о логировании
Данные, которые собираются ММАП и РММАП на АРМ пользователей (структура архива archive.zip):
- manifest.json
- activity.json
- inspector_log.json
- service_log.json
- timetracking_log.json
В зависимости от типа архива наполнение файлами будет следующее:
Архив инспектора агента | Архив службы агента | Архив модуля Таймтрекинг |
---|---|---|
manifest.json | manifest.json | manifest.json |
activity.json | service_log.json | timetracking_log.json |
inspector_log.json | – | – |
Чтобы самостоятельно настроить время формирования архива, в файле settings.cfg по пути ProgramData\ProcesetAgent добавьте параметр activity_sending_period
, который задает интервал отправки активности на сервер (в секундах).
activity_sending_period":60
manifest.json
В manifest.json фиксируется основная информация о пользователе, а также информация о типе логов. В поле type определяется от кого пришёл архив: от инспектора (inspector), службы (service) или от трекинга (timetracking).
Пример:
{
"version": "1.0.4",
"machine_guid": "3c830f47-9fcd-4a48-a568-750d8b179987",
"user": {
"name": "Иванов Иван",
"login": "ivanov",
"domain": "CORP.BUSINESSPROJECT.COM",
"ad_guid": "d59396ef-c493-4215-8dd5-1c478c846191",
"timezone": "Europe/Moscow",
"timezone_sec": 10800,
"employee_id": 2
},
"computer": {
"name": "c-066-im.corp.infomaximum.com",
"domain": "domain.com",
"workgroup": ""
},
"agent": {
"version": "2.14.3"
},
"type": "inspector"
}
где:
- version — версия протокола (формат данных для сервера)
- user:name — имя пользователя (учетная запись ОС)
- user:login — логин пользователя (учетная запись ОС)
- user:domain — домен пользователя (при наличии)
- user:timezone — часовой пояс
- user: timezone_sec — смещение часового пояса относительно UTC в секундах
- user: employee_id — внутренний id пользователя
- computer:name — имя АРМ
- computer:domain — домен АРМ
- computer: workgroup — рабочая группа АРМ
- agent:version — версия агента
activity.json
Активность сотрудников отправляется в JSON-формате в файле activity.json и представляет из себя массив записей.
Каждая запись обязательно содержит следующие поля:
{"version":"1.0.9"}
{
"time":1692694112,
"time_ms":469,
"cpu_loading":12,
"memory_loading":30,
"window_activity":{
"app_info":{
"program_name":"Google Chrome",
"version":"115.0.5790",
"executable_path":"%ProgramFiles(x86)%\\Google\\Chrome\\Application\\chrome.exe"},
"type":43,
"input_type":1
"main_window":"",
"domain":"",
"url_path":"",
"tab":"",
"file_name":"index (3).html",
"file_path":"%USERPROFILE%\\Desktop\\",
"location":[],
"element":null,
"parameters":[]
}
}
где:
- version — версия манифеста
- time — время события по UTC
- time_ms — время в миллисекундах
- cpu_loading — количество нагрузки на ЦП
- memory_loading — значение нагрузки на память
- window_activity — контейнер с информацией о событии
- app_info: — информация о приложении
- program_name — название приложения из секции Description
- version — версия приложения
- executable_path — полный путь до исполняемого файла
- type — тип события
- input_type — параметр, отвечающий за определение типа активности: программная или аппаратная. Если непосредственно до совершенного события была аппаратная hid-активность, то параметр заполняется как input_type=1, если было программное событие, то input_type=0
- main_window — заголовок главного окна
- domain — домен окна
- url_path — URL окна
- tab — вкладка главного окна
- file_name — имя открытого файла
- file_path — полный путь к открытому файлу
- location — иерархия окон со значением типа строго меньше 10:
- name — название поля
- type — код события
- element — элемент (например, кнопка, чекбокс)
- parameters — контейнер, содержащий следующую информацию:
- name — название поля
- value — хешированное значение
- type — код события
В зависимости от события некоторые поля могут быть пустыми. Например, для простого мониторинга блок parameters отсутствует.
Типы событий
Поле type представляет собой числовой код события. События сгруппированы по источнику в диапазоны.
Код события | Описание |
---|---|
1 | Start — старт модуля мониторинга, при нормальной работе агента (без сбоев и завершений из диспетчера задач) совпадает со стартом или разблокировкой пользовательской сессии |
2 | Stop — стоп модуля мониторинга, при нормальной работе агента совпадает с блокировкой или завершением пользовательской сессии |
3 | ProcessCrashed — остановка работы приложения |
Оконная иерархия | |
40 | WindowSwitch — переключение окон, переключение вкладок в браузере, а также любое переключение между ранее открытыми окнами программ |
41 | WindowUpdate — изменение заголовка окна |
42 | WindowOpen — открытие нового окна: браузера, страницы в новой вкладке браузера, вкладки в программе и т.п. |
43 | DocumentOpen — открытие нового документа |
44 | DocumentSave — сохранение документа под другим именем |
45 | SheetOpen — изменение листа в Excel (переключение на другой лист, переименование или открытие нового) |
Оконные элементы (только расширенный мониторинг) | |
52 | Invoke — клик по UI элементам (кнопки, чекбоксы, радиокнопки, гиперссылки и др.) |
53 | FieldEdit — редактирование элементов Edit и Combobox. Фиксируется после завершения редактирования и смены фокуса на другой элемент. Название и значение поля фиксируется в parameters |
56 | FileSelect — выбор файла, папки через соответствующее окно открытия. Путь к файлу и его название фиксируются в parameters в поле select_from |
58 | FileSave — сохранение файла в диалоговом окне, а также скачивание файла в браузере Google Chrome. Путь к файлу и его название фиксируются в parameters в поле save_to |
59 | Cut — вырезание текста. Текст отображается в parameters в поле cut_value |
60 | Copy — копирование текста. Текст отображается в parameters в поле copy_value |
61 | Paste — вставка текста. Текст отображается в parameters в поле paste_value |
62 | ValueSelect — выбор значения в комбобоксе или радиокнопке, принадлежащей радиогруппе, если в этом значении нет извлекаемых данных. Значение записывается после имени через двоеточие |
63 | Respond — кнопка или гиперссылка, по которой было событие Invoke, стала невидимой |
64 | FormRespond — событие, записываемое вместо Respond, если в этом окне было изменение parameters полей |
65 | Select — выбор элементов в листе, таблице и дереве |
hid-активность | |
90 | InjectedMouseClick — клик мышкой программный |
91 | InjectedMouseScroll — прокрутка мышкой программная |
92 | InjectedKeyboardEvent — нажатие кнопки клавиатуры программное |
95 | HardwareMouseClick — клик мышкой аппаратный |
96 | HardwareMouseScroll — прокрутка мышкой аппаратная |
97 | HardwareKeyboardEvent — нажатие кнопки клавиатуры аппаратное |
Control-элементы
В простом мониторинге могут быть только Window и Unknown, в расширенном — все.
Значение | Код | Описание |
---|---|---|
Window | 1 | Окно |
Button, Splitbutton | 10 | Кнопки |
CheckBox | 12 | Чекбокс. Также CheckBox заменяет RadioButton, если Radiogroup не была найдена |
ComboBox | 13 | Комбобокс. Также ComboBox заменяет RadioButton, если для него была найдена Radiogroup |
Edit | 14 | Текстовые поля |
Hyperlink | 15 | Гиперссылки |
ListItem | 17 | Списки |
TreeItem | 34 | Древовидные списки |
MenuItem | 21 | Пункты меню |
Document | 40 | Текстовые поля в Outlook |
HotKey | 49 | Горячие клавиши |
Location | 50 | Применяется только в parameters полях, для полей, указывающих на место (save_from, save_to, excel_sheet и т.п.) |
Clipboard | 51 | Применяется только в parameters полях, для полей cut, copy, paste |
UrlParam | 52 | Применяется только в parameters полях, для полей, в которых содержится параметр, извлечённый из url |
NameParam | 53 | Применяется только в parameters полях, для полей, в которых содержится параметр, извлечённый из названия окна либо названия элемента, кроме поля Номер в 1С, для которого указывается тип Edit |
Id | 54 | Применяется только в parameters полях, для полей, в которых содержится id окна |
Message | 55 | Применяется только в parameters полях, для поля message от окна подтверждения |
ExitCode | 56 | Применяется только в parameters полях, для поля exit_code от события краша процесса |
ExcelSheet | 57 | Название листа в Excel |
Горячие клавиши
В событии Invoke фиксируются комбинации с модификаторами Ctrl, Alt, Shift, а также функциональные F1-F12 . Не фиксируются сочетания Shift+A, где A — любая односимвольная клавиша. Например, такие сочетания используются при написании заглавных букв.
Регистр фиксации важен: модификаторы Ctrl, Alt, Shift должны быть именно в таком виде, F1-F12 заглавными буквами. Клавиша в сочетании с модификатором должна быть в верхнем регистре, например, Ctrl+X.
Если в названии элемента есть горячие клавиши, то записываются только они в нужном регистре.
inspector_log.json
В inspector_log.json передаются логи инспектора агента. В логах содержится информация о старте инспектора, периодичность запросов на обновление, тип мониторинга сотрудника.
Пример логов:
{"version":"1.0.0"}
PID=9212 TID=23400 important Start Inspector started, version = 2.14.3, user: nnesterova@CORP.INFOMAXIMUM.COM, settings: {"monitoring_status":2,"timetracking_status":false,"logger":{"level":"LEVEL_ERROR"}}, loggerSetting: LEVEL_ERROR
PID=9212 TID=23400 important system_info::GetUserAdGuid user sid = S-1-5-21-580362855-3340923925-1044332590-1417
PID=9212 TID=23400 important ActivitySender::ActivitySender reservedSpace file size = 1048576b
PID=9212 TID=23400 important ModuleManager::LoadModule module 'C:\Program
Files\ProcesetAgent\mod_extended_monitoring.dll' loaded
PID=9212 TID=23400 important Controller::Start ActivityCollectorExtended started
PID=9212 TID=23400 important ModuleManager::LoadModule module 'C:\Program Files\ProcesetAgent\mod_crash_watcher.dll' loaded
PID=9212 TID=23400 important Controller::Start ProcessCrashWatcher started
PID=9212 TID=9116 important SettingsManager::RefreshUserId EnsureUser success, employeeId = 2
PID=9212 TID=9116 important SettingsManager::RefreshServerComponents GetServerComponents success, components: com.infomaximum.subsystem.activedirectory com.infomaximum.subsystem.clickhouse.core com.infomaximum.subsystem.clickhouse.standalone com.infomaximum.subsystem.core com.infomaximum.subsystem.dashboard com.infomaximum.subsystem.dashboardext com.infomaximum.subsystem.frontend com.infomaximum.subsystem.monitoring com.infomaximum.subsystem.workspaces
PID=9212 TID=9116 important SettingsManager::RefreshSettings GetSettings success, employeeInfo: employeeId = 2, displayName = 'Нестерова Наталья', logLevel = 'LEVEL_ERROR', monitoringType = Extended, trackingEnabled = false
PID=9212 TID=1484 important UserActivity::ExtractWindowActivity activityEventCount = 3, utcTime = [2021.12.06_04:41:42 - 2021.12.06_04:41:47]
PID=9212 TID=1484 important `anonymous-namespace'::PackActivity Timezone init id = Europe/Moscow, offsetInSec = 10800
service_log.json
В service_log.json собирается информация о старте службы, блокировке системы под конкретным пользователем, отправленных сбоях.
Пример логов:
{"version":"1.0.0"}
PID=6556 TID=17352 important main Service started, version = 2.14.3
PID=6556 TID=1116 important SessionController::StartInspector Inspector started, sessionId = 14, UserPrincipalName = 'nnesterova@CORP.INFOMAXIMUM.COM'
PID=6556 TID=17352 important RunAsService::<lambda_6f040d3ff28f03704b9026c4883d74c7>::operator () Session event WTS_SESSION_LOCK, sessionId = 14
PID=6556 TID=17352 important SessionController::OnSessionDeactivated Session deactivated, sessionId = 14, UserPrincipalName = 'nnesterova@CORP.INFOMAXIMUM.COM'
PID=6556 TID=17352 important RunAsService::<lambda_6f040d3ff28f03704b9026c4883d74c7>::operator () Session event WTS_SESSION_UNLOCK, sessionId = 14
PID=6556 TID=1116 important SessionController::StartInspector Inspector started, sessionId = 14, UserPrincipalName = 'nnesterova@CORP.INFOMAXIMUM.COM'
timetracking_log.json
В timetracking_log.json собираются логи модуля таймтрекинга (время старта модуля, информация о пользователе и т.д.).
Пример логов:
{"version":"1.0.0"}
PID=660 TID=5172 important main Timetracking started, version = 2.14.3, user: client02@TEST.INFOMAXIMUM.RU, loggerSetting: LEVEL_ERROR
PID=660 TID=5172 important IdleManager::ProcessResumeInfo Save on server user activity = Пт ноя 26 11:33:32 2021
PID=660 TID=5172 important IdleManager::ProcessResumeInfo NotifyActiveTrackIdleResume
Была ли статья полезна?