Описание структуры хранения данных в ClickHouse
Все описанные таблицы созданы на основе движка ReplacingMergeTree.
Таблица «monitoring_activity»
В таблице хранится информация об активности пользователей. Путь для обращения к таблице: `main`.`monitoring_activity`.
| Имя колонки | Тип | Описание |
|---|---|---|
| time | DateTime64 | Время события, инициированного пользователем, представлено как календарная дата и время, с заданной до миллисекунд и наносекунд точностью |
| employee_account_id | UInt64 | Идентификатор сущности EmployeeAccount во встроенной файловой базе данных модуля мониторинга |
| time_offset | Int8 | Часовой пояс (сдвиг в часах от времени в UTC) |
| program | String | Название запущенной программы |
| version | String | Версия запущенной программы |
| executable_path | String | Полный путь до исполняемого файла |
| type | Int16 | Тип события |
| main_window | String | Заголовок окна |
| tab | String | Вкладка главного окна, может быть пустым |
| url | String | URL веб-страницы, может быть пустым |
| file_path | String | Полный путь к открытому файлу, может быть пустым |
| ui_hierarchy_name | Array (String) | Название элемента, предоставляемое приложением (может быть URL либо название окна). Обязательное поле, но может быть пустым |
| ui_hierarchy_ctrl | Array (Int32) | Control type элемента |
| parameters_name | Array (String) | Название элемента, из которого получено значение |
| parameters_value | Array (String) | CRC32 хеш от значения поля в UTF-8 формате (КП00-000006) |
| id | UInt64 | Идентификатор доменной сущности во встроенной файловой базе данных |
| cpu_loading | UInt32 | Значение загрузки процессора 0-100 (проценты) |
| memory_loading | UInt32 | Значение использования оперативной памяти 0-100 (проценты) |
| input_type | UInt8 | Если была аппаратная hid-активность, то параметр заполняется как 1, если не было, то как 0 |
| computer_name | String | Имя компьютера |
Таблица «monitoring_agent_inspector_log»
В данной таблице хранятся технические логи агентов мониторинга, передаваемые с рабочих мест на сервер приложения. Данные из таблицы можно использовать при первичной диагностике проблем с агентами мониторинга. Путь для обращения к таблице: `main`.`monitoring_agent_inspector_log`.
| Поле | Тип | Описание |
|---|---|---|
| time_offset | Int8 | Смещение (UTC) |
| time | DateTime64(3, UTC) | UTC время в секундах |
| level | String | Уровень логирования |
| pid | Int32 | id процесса, 32- битное целое |
| tid | Int32 | id потока, 32- битное целое |
| function | String | Название функции в коде, в которой залогировалось message |
| message | String | Текст лога (уровни логирования: "info", "warning", "error", "critical") |
| machine_guid | String | id компьютера (зависит от ОС), позволяет узнать, с какого именно АРМ пришла активность |
| agent_version | String | Версия агента |
| remote_address | String | Заполняется строковым представлением ip-адреса клиента пришедшим на сервер |
| computer_name | String | Берётся наименование компьютера из файла manifest.json из архива активности |
| employee_account_id | UInt64 | Идентификатор сущности EmployeeAccount во встроенной файловой базе данных модуля мониторинга |
| type_log | String | Тип логов активности: inspector – логи инспектора; service – логи службы SYSTEM. timetracking – логи timetracking |
| row_number | UInt64 | Порядковый номер записи в таблице |
Таблица «monitoring_employee_log_type»
В таблице хранится информация о типе мониторинга сотрудника, а также время и источник его изменения. Путь для обращения к таблице: `main`.`monitoring_employee_log_type`.
| Поле | Тип | Описание |
|---|---|---|
| employee_id | UInt64 | Идентификатор сотрудника, которому изменили тип лога |
| old_value | String | Прежнее значение типа лога |
| new_value | String | Новое значение типа лога |
| event_date | DateTime | Дата переключения логов |
| event_date_ms | UInt16 | Миллисекундная часть даты смены лога (в базе ClickHouse хранится отдельно) |
| event_source | String | Источник изменения лога (SYSTEM, EMPLOYEE, APIKEY) |
| employee_description | String | Описание источника изменения (формат ID~message, где ID – идентификатор сотрудника, message – display_name) |
| api_description | String | Описание источника изменения (формат ID~message, где ID – идентификатор api_key, message – api*key) |
| id | Int64 | Идентификатор доменной сущности во встроенной файловой базе данных |
Таблица «access_role»
В таблице хранится информация о ролях доступа. Путь для обращения к таблице: `main`.`access_role`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор роди доступ |
| name | String | Имя роли доступа |
| is_admin | UInt8 | Роль «Прикладной администратор» |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «access_role_privilege»
В таблице хранится информация о привилегиях ролей доступа. Путь для обращения к таблице: `main`.`access_role_privilege`.
| Поле | Тип | Описание |
|---|---|---|
| name | String | Имя роли доступа |
| is_write | UInt8 | Операция Write |
| access_role_id | UInt64 | Идентификатор роли доступа |
| is_execute | UInt8 | Операция Execute |
| is_read | UInt8 | Операция Read |
| is_delete | UInt8 | Операция Delete |
| is_create | UInt8 | Операция Create |
| id | Int64 | Уникальный идентификатор контейнера (SIP24) (order by) |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «dashboard_report»
В таблице хранится информация об отчетах. Путь для обращения к таблице: `main`.`dashboard_report`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор записи |
| report_status | String | Статус отчета |
| guid | Int64 | GUID пространства |
| workspace_id | UInt64 | Идентификатор пространства |
| report_name | String | Наименование отчета |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «dashboard_report_access»
В таблице хранится информация о доступах к отчетам. Путь для обращения к таблице: `main`.`dashboard_report_access`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор записи |
| report_guid | UInt64 | GUID отчета |
| operation | String | Операции доступа (Read/Write) |
| employee_id | UInt64 | Идентификатор Пользователя |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «employee»
В таблице хранится информация о пользователях. Путь для обращения к таблице: `main`.`employee`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор сотрудника (также ключ сортировки) |
| first_name | String | Имя |
| patronymic | String | Отчество |
| second_name | String | Фамилия |
| login | String | Логин |
| String | Электронная почта | |
| phone | String | Телефон сотрудника |
| name | String | Полное отображаемое имя |
| departments | Array(String) | Массив наименований отделов (корневой, промежуточный, конкретный отдел) |
| department_ids | Array(UInt64) | Массив идентификаторов отделов (корневой, промежуточный, конкретный отдел) |
| authentication_assigned | UInt8 | Проверка возможности аутентификации у сотрудника |
| access_role_ids | Array(UInt64) | Массив идентификаторов ролей доступа сотрудника |
| monitoring_type | String | Сбор активности для конкретного сотрудника (DISABLED/SIMPLE/EXTENDED) |
| employee_account_ids | Array(UInt64) | Массив идентификаторов источников активности |
| access_to_employee_ids | Array(UInt64) | Массив идентификаторов сотрудников, к которым у данного сотрудника есть доступ |
| additional_fields_names | Array(String) | Массив имен дополнительных полей сотрудника |
| additional_fields_values | Array(String) | Массив значений дополнительних полей сотрудника |
| personnelNumber | String | Табельный номер |
| employee_account_logins | Array(String) | Список логинов всех аккаунтов сотрудника (пустая строка, если нет) |
| employee_account_domains | Array(String) | Список доменов всех аккаунтов сотрудника (пустая строка, если нет) |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «link_employee_access_role»
В таблице хранится информация о ролях доступа у сотрудников. Путь для обращения к таблице: `main`.`link_employee_access_role`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор записи (order by) |
| employee_id | UInt64 | Идентификатор пользователя |
| role_id | UInt64 | Идентификатор роли доступа |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «link_manager_employee_access»
В таблице хранится информация о доступах сотрудников к другим сотрудникам. Путь для обращения к таблице: `main`.`link_manager_employee_access`.
| Поле | Тип | Описание |
|---|---|---|
| employee_id | UInt64 | Сотрудники, к которым предоставлен доступ |
| manager_id | UInt64 | Пользователь, кому предоставляется доступ |
| id | Int64 | Уникальный идентификатор контейнера (SIP24) (order by) |
| deleted | UInt64 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «monitoring_employee_account»
В таблице хранится информация об аккаунтах сотрудников. Путь для обращения к таблице: `main`.`monitoring_employee_account`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор аккаунта (order by) |
| employee_id | UInt64 | Идентификатор пользователя |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «workspaces_link_workspace_employee»
В таблице хранится информация о доступах сотрудника в пространстве. Путь для обращения к таблице: `main`.`workspaces_link_workspace_employee`.
| Поле | Тип | Описание |
|---|---|---|
| id | UInt64 | Идентификатор пространства (order by) |
| operation | String | Тип операции (Read/Write) |
| employee_id | UInt64 | Идентификатор Пользователя |
| workspace_id | UInt64 | Идентификатор рабочего пространства |
| deleted | UInt64 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «workspaces_workspace»
В таблице хранится информация о пространствах. Путь для обращения к таблице: `main`.`workspaces_workspace`.
| Поле | Тип | Описание |
|---|---|---|
| name | String | Имя пространства |
| is_imported | UInt8 | Флаг импортированного пространства |
| import_export_version | UInt64 | Версия импорта |
| import_export_id | String | Идентификатор экспортируемого пространства |
| description | String | Описание |
| id | UInt64 | Идентификатор пространства (order by) |
| deleted | UInt8 | 1 – запись удалена из встроенной файловой базы данных 0 – запись существует во встроенной файловой базе данных |
| hash_code | Int64 | hash-сумма контейнера синхронизации |
Таблица «ad_attribute»
В таблице хранятся сведения о синхронизируемых атрибутах. Путь для обращения к таблице: `main`.`ad_attribute`.
| Поле | Тип | Описание |
|---|---|---|
| deleted | UInt8 | Флаг на удаление (значение = 1, если при синхронизации запись не приходит) (служебное поле) |
| hash_code | Код для проверки изменений при синхронизации (служебное поле) | |
| ad_attr_id | UInt64 | Идентификатор записи в ClickHouse (служебное поле) |
| ad_attr_index | UInt32 | Индекс значения в многозначном атрибуте. Для однозначных индекс равен 0 |
| ad_attr_data_type | String | Тип дополнительного поля сотрудника, на которое ссылается атрибут |
| ad_attr_long_value | UInt64 | Значения атрибута с типом Long. Если атрибут другого типа, то значение = 0 |
| ad_attr_employee_id | UInt64 | Идентификатор сотрудника, к которому относится атрибут и его значение |
| ad_attr_string_value | String | Значение атрибута с типом String. Если атрибут другого типа, то в качестве значения записывается пустая строка |
| ad_attr_attribute_name | String | Наименование атрибута |
| ad_attr_is_long_value_null | UInt8 | Флаг проверки типа дополнительного поля сотрудника, на которое ссылается атрибут. Если тип дополнительного поля Long, то значение = 0, иначе значение = 1 |
| ad_attr_is_string_value_null | UInt8 | Флаг проверки типа дополнительного поля сотрудника, на которое ссылается атрибут. Если тип дополнительного поля String, то значение = 0, иначе значение = 1 |
| ad_attr_additional_field_name | String | Наименование дополнительного поля сотрудника, на которое ссылается атрибут |
События, при которых происходит запись переключения значения мониторинга
- При автоматическом создании нового сотрудника в системе (интеграция из AD, поступление данных от агента) источником изменений будет SYSTEM. Значения будут установлены в DISABLED.
- В случаях изменения типа мониторинга пользователем, администратором или через API будет указан источник изменения EMPLOYEE или API_KEY, прежнее значение до изменения и новое установленное значение.