51.81
Rating
InterSystems
InterSystems IRIS: СУБД, ESB, BI, Healthcare

Анализ журнала аудита Caché c помощью Caché (DeepSee)

InterSystems corporate blogData MiningData visualization
Tutorial
В поставку СУБД Caché, кроме самого сервера базы данных, входит технология для «real-time» бизнес-аналитики DeepSee. Её использование – это наиболее быстрый способ добавить OLAP функциональность к вашему приложению на Caché.

Другим элементом установки является подсистема аудита с web-интерфейсом, возможностью расширения собственными типами событий и API для использования в прикладном коде.

Под катом – небольшой пример совместного использования этих подсистем, позволяющий ответить на вопросы — кто, что, когда делал в информационной системе?

Подсистема аудита


Предназначена для регистрации происходящих в системе событий. В системном портале управления Caché есть готовый web-интерфейс — поиск, фильтрация, экспорт, очистка и т.д. Использовать аудит в прикладном коде можно с помощью API — классы Security.Events — для регистрации типов событий, %SYS.Audit — самих событий, %SYSTEM.Security:Audit() – удобный метод для регистрации события. По умолчанию подсистема аудита неактивна, запускается через: Портал управления — Администрирование системы — Безопасность — Аудит.

Ниже, пример страницы с несколькими кнопками, нажатия на которых регистрируются в базе аудита.
Пример использования аудита в прикладном коде
/// Пример использования подсистемы аудита в прикладном коде
Class habra.audit Extends %CSP.Page {

/// Регистрация прикладных ( пользовательских ) типов событий
ClassMethod EventTypesRegister() As %Status {
#; Типы событий регистрируются через класс из системной области %SYS
set ns = $namespace, $namespace = "%SYS"

#; set status = ##class(Security.Events).Create( Source, Type, Name, Description )
set statusC = ##class(Security.Events).Create( «habra», «audit», «create», «Create event example» )
set statusR = ##class(Security.Events).Create( «habra», «audit», «read», «Read event example» )
set statusU = ##class(Security.Events).Create( «habra», «audit», «update», «Update event example» )
set statusD = ##class(Security.Events).Create( «habra», «audit», «delete», «Delete event example» )

set $namespace = ns
set status = ( statusC && statusR && statusU && statusD )

Quit status
}

/// Простая страница с несколькими кнопками
ClassMethod OnPage() As %Status {

&html<<!DOCTYPE html><html><head></head><body>

<h3>Hello, #($username)#!</h3><hr>

<form method='post'>
<button name='create'>Create</button>
<button name='read' >Read </button>
<button name='update'>Update</button>
<button name='delete'>Delete</button>
</form>

</body></html>>

Quit 1
}

/// Разбираем параметры формы
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ] {

#; форма отправит на сервер единственный параметр — имя кнопки
#; http://[server]/[app]/[class]?name=
set name = $order( %request.Data("") ) ; узнаем какая кнопка вызвала отправку

#; сохраняем в журнал аудита ( Source, Type, Name, EventData, Description )
set status = ##class(%SYSTEM.Security).Audit( «habra», «audit», name, «нажал кнопку», «1984» )

Quit 1
}

}



Технология бизнес-аналитики DeepSee


DeepSee включает в себя разнообразные средства для построения хранилищ данных, анализа и визуализации данных, пользовательский портал, отчеты, печать, экспорт и т.д. Использует подсистемы безопасности и аудита Caché. Есть различные способы организовать интеграцию DeepSee практически с любым приложением – от терминала до web.

Одной из особенностей DeepSee является возможность аналитики на оперативных данных. Достигается за счет фоновой синхронизации куба с данными вашего приложения. Для этого в классе данных определяют параметры DSTIME и DSINTERVAL. При компиляции класса Caché генерирует дополнительный код регистрации изменений. При запуске синхронизации обновляется только незначительная часть данных куба, при этом синхронизация может выполняться непосредственно сразу после изменений в OLTP классах, что позволяет говорить о “real-time” бизнес-анализе.

Для использования фонового обновления куба в нашем примере, необходимо добавить параметры DSTIME и DSINTERVAL в системный класс %SYS.Audit и скомпилировать его.
Изменения в %SYS.Audit


Всё вместе


После предварительной настройки области ( необходимо включить отображения глобала ^CacheAuditD ) и соответствующей настройки веб-приложения для работы с DeepSee, приступаем к определению куба.

Укажем исходный класс с данными. Свойства класса станут основой для определения измерений куба. В классе %SYS.Audit свойства Username, Event, UTCTimeStamp хранят информацию для ответа на поставленные в начале статьи вопросы. На основании свойства Username определим измерение Кто, свойства Event – измерение Что, свойства UTCTimeStamp – измерение Когда. В качестве меры по умолчанию используется количество записей.

После компиляции и первоначального заполнения куба, в DeepSee Analyzer настраивают различные срезы данных (сводные таблицы). Они, в свою очередь, становятся источником данных для визуальных компонентов — виджетов. Виджеты объединяют в индикаторные панели (dashboard) и предоставляют к ним доступ для пользователей. Пользовательский портал позволяет без программирования организовать работу пользователей с индикаторными панелями.


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


Полезные ссылки:
еще о DeepSee
исходники примера
отображение портала DeepSee на мобильных устройствах
Tags:cache'dbdata mininglogsbig brother
Hubs: InterSystems corporate blog Data Mining Data visualization
+8
3.3k 22
Comments 2

Information

Founded
1978
Location
США
Website
www.intersystems.com
Employees
1,001–5,000 employees
Registered

Habr blog