Управление учебным процессом ВУЗа- Протоколирование действий пользователей  (раздел целиком)  (26.04.2024)
Протоколирование действий пользователей

Возможности протоколирования действий пользователя реализованы на уровне средств платформы "Мельница данных". Данные возможности распространяются как на локальных пользователей, работающих с БД по протоколу TCP-IP, так и на удаленных пользователей, работающих с системой по протоколу HTTP (HTTPS) как посредством Win-клиента (приложения Обозреватель данных), так и посредством личных кабинетов и прочих web-приложений системы.

Протоколироваться могут следующие аспекты работы пользователей системы

  • Протоколирование пользовательских сессий позволяет фиксировать факты входа (авторизации) и выхода (закрытие сессии) пользователей. На основе анализа этих данных можно делать выводы об активности отдельных пользователей, о числе пользователей, работающих с системой в различные периоды времени.
  • Протоколирование вызовов процедур, отчетов, методов OLE-объекта позволяет фиксировать вызов пользователем того или иного метода системы. Наряду с фактом вызова метода могут фиксироваться и значения всех или некоторых параметров, переданных пользователем. Анализ этих данных позволит оценивать востребованность и активность использования процедур, отчетов, методов OLE-объекта. Также эта информация может быть полезной для анализа способов, при помощи которых пользователями были созданы, изменены или удалены записи базы данных системы.
  • Протоколирование изменений данных заключается в фиксации фактов выполнения пользователями каждого изменения значений полей для объектов определенных классов. При этом в протоколе фиксируется "старое" и "новое" значения поля.

Данные протоколов сохраняются в системе и могут быть просмотрены в Административной форме на вкладках Сессии, История, Вызовы. Здесь же можно формировать отчеты по данным протоколов, выполнять импорт и экспорт данных протоколов.

По умолчанию возможности протоколирования отключены. Они могут подключаться администратором системы в части определенных классов, полей этих классов, методов (процедур, отчетов, методов OLE-объекта). То, как именно администратор может воспользоваться возможностями протоколирования, описано в следующих разделах.

При активном использовании протоколирования в системе будут накапливаться значительные объемы данных протоколов, что осложнит просмотр этих данных и может отрицательно сказаться на быстродействии системы. В этом случае рекомендутеся периодически экспортировать данные протоклов и загружать их в другую базу данных или схему для длительного хранения. После экспорта данных протоколов из основной базы данных протоколы следует очищать. Процедура очистки протоклов позволяет задать диапазон дат, данные за которые должны быть удалены из системы.


1. Протоколирование пользовательских сессий

Включить или отключить протоколирование сессий пользователей можно только для системы в целом. Для этого предназначена настройка Протоколировать сессии (DoLogSessions). Задать или изменить значение этой настройки можно в Административной форме на вкладке Настройки. Настройка имеет атрибут Не видимо пользователям, поэтому изменить ее значение при помощи формы Настройки нельзя. Значение этой настройки можно изменить, добавив запись о значении на подчиненной вкладке Значения, задав Логическое значение = Да.

Для того, чтобы отключить логирование сессий пользователей нужно удалить значение настройки с вкладки Значения.

Важно!
После изменения значения настройки Протоколировать сессии выполнение или отмена протоколирования произойдут при очередном входе пользователя в систему (для удаленных пользователей - после перезапуска Сервера приложений). Выполнять синхронизацию базы данных для применения нового значения настройки не нужно.

Если протоколирование сессий пользователей включено, то при каждом входе пользователя в систему (успешной авторизации) в Административной форме на вкладке Сессии будут добавляться записи о сессиях пользователей. Записи о сессиях имеют атрибуты:

  • Начата - дата и время открытия пользовательской сессии; значение устанавливается сразу же при создании записи.
  • Завершена - дата и время закрытия пользовательской сессии; значение устанавливается при успешном завершении пользовательской сессии.
  • Логин - логин пользователя, открывшего сессию
  • Пользователь - наименование пользователя, открывшего сессию (из таблицы данных Пользователи)
  • Пользовательский агент - приложение, посредством которого пользователь осуществил подключение к системе, например:
    • DataBrowser.exe (2.2.1.360) - приложение Обозреватель данных версии 2.2.1.360 (локальное подключение по протоколу TCP-IP)
    • DMAS/1.1 - Сервер приложений платформы "Мельница данных" (DataMill ApplicationServer) версии 1.1 (удаленное подключение через Сервер приложений)

2. Протоколирование фактов вызова процедур, отчетов, методов OLE-объекта

Для того, чтобы в системе велось логирование фактов вызова процедур, отчетов, методов OLE-объекта, для этих процедур (методов, отчетов) должен быть установлен атрибут Протоколировать = Да. Установить этот атрибут можно в Служебной форме, выбрав класс в таблице Классы и выбрав нужный метод, отчет, метод OLE-объекта на вкладке Подпрограммы. Значение атрибута Протоколировать можно установить как в таблице данных Подпрограммы, так и в Инспекторе объектов.

Протоколироваться также могут значения параметров, с которыми был осуществлен вызов. Для того, чтобы включить или отключить протоколирование значений параметров, нужно установить атрибут Протоколировать для каждого из параметров, подлежащих протоколированию.

Важно!

При изменении значения атрибута Протоколировать для метода OLE-объекта или любого из видов отчетов, а также их параметров изменения вступят в силу после очередного входа пользователя в систему (для удаленных пользователей - после перезапуска Сервера приложений).

Для включения или отключения протоколирования вызова метода (процедуры системы, которой соответствует хранимая процедура СУБД) и его параметров после изменения значения атрибута Протоколировать необходимо выполнить Синхронизацию базы данных. После этого для пользователей включение или отключение протоколирования произойдет после очередного входа в систему (для удаленных пользователей - после перезапуска Сервера приложений).

Протоколирование параметров будет работать только в случае, если и для самого метода (отчета, метода OLE-объекта) включено протоколирование.

Просмотреть данные протокола вызовов процедур, отчетов, методов OLE-объекта можно в Административной форме не вкладке Вызовы. Каждому вызову пользователем процедуры, отчета, метода OLE-объекта будет соответствовать одна запись протокола. Если протоколирование было применено и для параметров, то на подчиненной вкладке Параметры можно будет увидеть значения параметров, с которыми был осуществлен вызов.

Для каждого протоколируемого вызова в протоколе фиксируется следующая информация:

  • Дата и время вызова
  • Имя класса, подпрограмма которого была вызвана
  • Имя вызванной подпрограммы
  • Объект, для которого была вызвана подпрограмма, (имя, идентификатор, идентификатор при создании, база данных - источник объекта)
  • Пользовательская сессия, в рамках которой был осуществлен вызов (дата и время начала и завершения сессии, пользователь, открывший сессию, пользовательский агент); информация о сессии будет зафиксирована только если включено Протоколирование пользовательских сессий

Если для подпрограммы было установлено протоколирование параметров, то дополнительно в протокол для каждого параметра будет записана следующая информация:

  • Имя параметра
  • Значение параметра (для значений ссылочного типа - идентификатор и имя объекта, переданного в качестве параметра)


3. Протоколирование изменений данных

При необходимости протоколирования изменения данных пользователями должно быть определено, изменение данных каких именно классов подлежит протоколированию. После выбора классов необходимо также определиться с перечнем полей, изменение значений которых будет протоколироваться.

Протоколирование изменений данных можно настроить на двух уровнях:

  • Протоколирование фактов создания и удаления объектов класса
  • Протоколирование фактов изменения значений полей объектов. В этом случае в протокол будет записываться информация о "старом" и "новом" значении измененного поля.

3.1. Протоколирование фактов создания и удаления объектов

Для того, чтобы настроить протоколирование фактов создания и удаления объектов определенного класса, необходимо найти нужный класс в Системной форме на вкладке Классы и установить для этого класса значение атрибута Протоколировать = Да. Отключить протоколирование можно, установив значение данного атрибута в Нет.

Важно!
Для того, чтобы изменение режима протоколирования фактов создания и удаления объектов класса вступило в силу, после изменения значения атрибута Протоколировать необходимо выполнить Синхронизацию базы данных. После синхронизации протоколирование будет выполняться после очередного входа пользователей в систему (для удаленных пользователей - после перезапуска Сервера приложений).

Данные протокола можно будет увидеть в Административной форме на вкладке История. В протоколе будет зафиксирована следующая информация:

  • Дата и время создания или удаления объекта
  • Выполненное над объектом действие (Создан или Удаляется)
  • Пользователь, выполнивший создание или удаление (логин, наименование пользователя)
  • Информация об объекте (имя, наименование, класс, родитель, мастер, идентификатор, идентификатор при создании, база данных-источник)
  • Пользовательская сессия, в рамках которой было осуществлено добавление или удаление (дата и время начала и завершения сессии, пользователь, открывший сессию, пользовательский агент); информация о сессии будет зафиксирована только если включено Протоколирование пользовательских сессий
Если для данного класса включено протоколирование изменений значений полей, то при создании объекта кроме записи о факте создания в протокол будут добавлены записи о присвоении значений протоколируемым полям.


3.2. Протоколирование изменений значений полей

Для того, чтобы настроить протоколирование изменений данных, хранимых в полях объектов определенных классов нужно выполнить следующие действия:

  1. Включить протоколирование для выбранного класса (Протоколирование фактов создания и удаления объектов). Результатом данного этапа будет протоколирование фактов создания и удаления объектов класса.
  2. Для выбранного в Системной форме на вкладке Классы класса на подчиненной вкладке Поля установить значение атрибута Протоколировать = Да для выбранных полей. Установкой значения этого атрибута в Нет можно отключить протоколирование изменений данного поля.
Важно!
Для того, чтобы изменение режима протоколирования изменений значений полей вступило в силу, после изменения значения атрибута Протоколировать необходимо выполнить Синхронизацию базы данных. После синхронизации протоколирование будет выполняться после очередного входа пользователей в систему (для удаленных пользователей - после перезапуска Сервера приложений).

При работе режима протоколирования изменений значений полей в Административной форме на вкладке История при каждом изменении будут создаваться по две записи на каждое измененное поле - запись с предыдущим значением и с новым значением поля. Первая запись будет иметь значение атрибута Действие = Изменится, вторая - Действие = Изменен. Записи протокола будут иметь следующий набор атрибутов:

  • Дата и время изменения
  • Выполненное над объектом действие (Изменится или Изменен)
  • Пользователь, выполнивший создание или удаление (логин, наименование пользователя)
  • Информация об объекте (имя, наименование, класс, родитель, мастер, идентификатор, идентификатор при создании, база данных-источник)
  • Имя поля, значение которого изменено
  • Содержимое - значение, которое хранилось в поле до изменения, или которое было присвоено после изменения
  • Пользовательская сессия, в рамках которой было осуществлено добавление или удаление (дата и время начала и завершения сессии, пользователь, открывший сессию, пользовательский агент); информация о сессии будет зафиксирована только если включено Протоколирование пользовательских сессий

В таблице данных История при помощи действия контекстного меню можно сформировать отчет Отчет об активности пользователей на любую выбранную дату. Отчет представляет собой таблицу со строками, соотетсвтующими пользователями, выполнявшим изменения данных в течение выбранного дня. Столбцы таблицы соответствуют часам суток. В каждой ячейке, соответствующей одному из пользователей и определенному часу суток отображается столбец, в котором красным цветом закрашены доли часа (одна доля равна 10 мин.), в течение которых пользователь выполнял изменения данных.

Пример отчета об активности пользователей


4. Экспорт и импорт данных протоколов

Работа с данными о протоколах, хранящихся в системе, ведется в Административной форме на вкладках Сессии, Вызовы и История.

При активном использовании протоколирования на этих вкладках могут накапливаться значительные объемы данных протоколов. Это может привести к затруднению просмотра этих данных, а также к снижению быстродействия ряда процедур системы.

Для того, чтобы избежать негативных последствий, протоколы можно выгружать для переноса в другие базы данных или для хранения в виде файлов. Для этого в каждой из таблиц можно вызвать действие Экспортировать протоколы.

Для выполнения экспорта необходимо задать имя файла, в который будет выполнена выгрузка, границы периода (дата со временем), данные за который должны быть выгружены.

Результатом экспорта будет xml-документ с данным пользователем именем

После выгрузки данные протоколов можно Очистить при помощи соответствующего действия, вызываемого из контекстного меню. При помощи параметров этого действия можно задать период времени, за который должны быть выполнена очистка данных.

Загрузка данных проколов из xml-документов, полученных путем экспорта из системы, может быть выполнена при помощи стандартных возможностей репликации, входящих в состав средств платформы. Воспользоваться этими средствами можно следующим образом:

  • Запустить приложение платформы Утилита обслуживания базы данных
  • В полях Источник данных, База данных, Пользователь, Пароль указать параметры подключения к БД пользователя, имеющего права администратора.
  • Выбрать действие Импортировать из файла
  • Параметры импорта задать следующим образом
    • Файл для импорта - указать путь к файлу, содержащему выгрузку протоколов в формате xml
    • В поле Импортировать выбрать пункт Только данные (Data only)
    • Для остальных параметров оставить значения по умолчанию.
  • Нажать кнопку Выполнить

Наиболее рационально выполнять загрузку данных протоколов при помощи исполняемых файлов (bat-файлов). Текст командной строки для вызова процедуры экспорта можно увидеть в Утилите обслуживания базы данных в поле Командная строка.