Мониторинг активности пользователей в учетной системе


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

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

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

Покажем, как уже на работающей учетной системе, на платформе 1С: предприятие 7.7, организовать сбор данных о текущей нагрузке на информационную систему, а также, вычисление «слабых» мест в ее работе.

Нам понадобится компонента Formex, а точнее, ее функция «ПриОтжатииЛевойКнопки()», применение которой, позволит нам определить обработчик записи параметров обращения пользователя к информационной системе и ее отклика в одном модуле процедур.

Синтаксис: ПриОтжатииЛевойКнопки(Контекст, Состояние, КоордПоГоризонтали, КоордПоВертикали, ФСО)
Параметры:
    Контекст - контекст формы
    Состояние - битовая маска, показывающаяя текущее состояние кнопок мыши.
    КоордПоГоризонтали - значение координаты курсора мыши по горизонтальной оси (Х).
    КоордПоВертикали - значение координаты курсора мыши по вертикальной оси (Y).
    ФСО - флаг стандартной обработки. Изначально равен 1. Если в теле процедуры сбросить значение в 0, то стандартная обработка события не вызывается.
    Описание: Предопределенная процедура вызывается когда отпущена левая кнопка мыши.
Пример:
    Процедура ПриОтжатииЛевойКнопки(конт, сост, х, у)
        Сообщить("Отпущена левая кнопка мыши.");
    КонецПроцедуры

Результат дополнения каркасной конфигурации этим решением можно посмотреть здесь. Сведения об активности пользователей собираются в отдельные файлы журналов в каталогах пользователя, которые, в свою очередь, периодическим «фоновым» заданием консолидируются в общий журнал работы пользователей в каталоге «syslog» информационной базы данных.

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

Также, система сбора и анализа сведений о текущей интенсивности использования информационной системы предоставляет нам возможность динамически распределять выполнение фоновых заданий с учетом их критичности и продолжительности во времени, таких как обмен данными или до-проведение документов. Указанный модуль динамической настройки фоновых заданий также представлен в репозитории.