Структуры аудита
Contents
Структуры аудита#
Система Global предоставляет множество инструментов по контролю за изменением данных, позволяющих отслеживать
Добавление, изменение и удаление данных
Блокировки и ошибки при работе БД
Исполнение периодических работ
Изменение размера таблиц
Открытие выборок и выполнение операций
Исполнение JEXL-скриптов
Все таблицы аудита хранятся в табличном пространстве, указанном в Btk_AuditPkg().schema
. По умолчанию это AUD
. В этом разделе документации представлена информация по большинству из них
Аудит классов#
Содержит информацию об создании экземпляров класса, изменении атрибутов, выполнении операций. Позволяет отследить взаимодействия с данными вплоть до конкретного пользователя, секунды и рабочего места. Пользовательский интерфейс доступен в Настройка системы > Аудит \ Аудит открытия форм и выполнения операций
.
Записи аудита хранятся в таблицах отдельных для каждого класса-шапки бизнес-объекта. Названия таблиц формируются следующим образом:
Формирование названий таблиц аудита классов
${cистемное имя класса-шапки бизнес-объекта}_dzaud:
Btk_User_dzaud
Bs_Goods_dzaud
Изменения обрабатываются в SessionImpl#flush()
. Сбор информации о значении атрибутов происходит до и после применения изменений сессии к базе данных. Запись в аудит - после
Хранимые поля
idrootclass
- id класса-шапки бизнес-объектаgidrootobj
- gid класса-шапки бизнес-объектаsrootobjhl
- наименование класса-шапки бизнес-объектаidclass
- id классаgidobj
-sobjhl
-idaction
- id действия пользователя
один изBtk_AuditAction
: «Создание», «Изменение», «Удаление»joldvalue
- JSON-объект
хранящий значения атрибутов объекта до измененийjnewvalue
- JSON-объект
хранящий новые значения изменённых атрибутовjoldvaluehl
- JSON-объект
хранящий наименования ссылочных атрибутов до измененийjnewvaluehl
- JSON-объект
хранящий новые наименования изменённых ссылочных атрибутовddate
- время и дата измененияsremark
- примечаниеsuser
- имя пользователяsclienthostip
- IP-адресjoperinfo
-
Журнал блокировок базы данных btk_dblockshistory
#
Отображает дерево блокировок сессий БД. Подробнее…
Журнал аудита сторонних систем btk_idextaudit
#
Содержит историю изменения идентификатора внешних систем. Выполняется на каждую установку значения в сеттере Btk_ExtSystemAvi.ListMaster#setsKey
Хранимые поля
gidObj
- объект, к которому подключена внешняя системаsOldValue
- предыдущее значениеsNewValue
- изменённое значениеidExtSystem
- идентификатор внешней системыidExtSystemHL
- наименование внешней системыdDate
- когда произошло изменениеsUser
- кем было произведено изменениеsClientHostIP
- IP-адрес
Адрес, с которого была инициирована процедура изменения
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_JIdExtPkg.installTable();
Добавление записи#
insertAudInfo(
gidObj: NGid,
idExtSystem: NLong,
sOldValue: NString,
sNewValue: NString
);
Журнал выполнения работ btk_jobexechistory
#
Содержит историю исполнения регулярно выполняемых работ Quartz Scheduler
. Позволяет анализировать исполнение работ: длительность, время запуска и его корректность. Обновляется каждые 15 минут работой Btk_SlowQueryHistoryUpdate
Хранимые поля
idJobEvent
- идентификатор событияsScript
- текст исполняемого JEXL-скриптаnPeriod
- время исполнения [минуты]bSlow
- длительная работа
Признак для работ, выполняющихся более 15-ти минутbNight
- ночная работа
Признак для работ, выполняющихся с 22:00 до 08:00
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_MonitorDBActivityPkg.dataInstall();
Обновление#
Btk_MonitorDBActivityPkg.updateSlowQueryHistory();
Журнал информации о работе БД btk_monitordbactivityaud
#
Содержит в себе предупреждения и ошибки работы с базой данных. Обновляется каждые 15 минут с помощью работы Btk_SlowQueryHistoryUpdate
. Подробнее…
Хранимые поля
dcreate
- дата и время событияstype
- тип предупреждения
изBtk_MonitorDBActivityPkg.DBAlertTypes
:
«DBBloat», «AutoVacuumOff», «SlowTransaction», «SlowQuery», «FastGrowSize», «NotInScheduleJob»sfrom
- источникstypefrom
- тип источникаsshortinfo
- сообщениеsdescription
- описаниеsquery
- запрос
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_MonitorDBActivityPkg.dataInstall();
Обновление#
Btk_MonitorDBActivityPkg.updateSlowQueryHistory();
Журнал выполнения медленных задач btk_slowqueryhistory
#
Журнал SQL-запросов, выполняющихся дольше 15 минут (время, определяющее какой запрос будет считаться долго выполняющимся определяется в Btk_MonitorDBActivityPkg#getIntervalToAcceptAsSlowQuery
). Обновляется каждые 15 минут с помощью работы Btk_SlowQueryHistoryUpdate
.
Хранимые поля
usename
- имя пользователяdcreate
- дата создания записи аудитаquery
- текст SQL-запросаnduration
- длительность [минут]state
- состояние выполнения \idle
- сессия БД находится в режиме ожидания. Т.е. подключение к БД есть, но в данный момент никаких запросов не выполняется. Стандартное ожидание для неактивных подключений, которые находятся в пуле подключений сервера приложенийactive
- сессия БД в данный момент выполняет запрос.idle in transaction
- сессия БД находится в режиме ожидания, но есть открытая транзакция. Опасное состояние сессии, т.к. длинные открытые транзакции отрицательно влияют на производительностьpostgresql
. Наличие такой сессии сигнализирует о проблеме.
sclienthostip
- IP-адрес источника запросаsappname
- название главной выборкиsform
- название формы
отображение, выборка, наименованиеsclusternode
- кластерный узелssid
- sid сеансаstack
- трассировка стекаsaction
- действие
Эта колонка будет заполнена, если:сессия принадлежит выполняемому фоновому заданию, в том числе интеграция
выполняется построение печатной формы
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_MonitorDBActivityPkg.dataInstall();
Обновление#
Btk_MonitorDBActivityPkg.updateSlowQueryHistory();
Журнал размера таблиц основных классов btk_tablesizehistory
#
История размера таблиц PostgreSQL и системных классов. Позволяет отслеживать изменения размеров таблиц и индексов к ним во времени. Обновляется каждые 20 часов с помощью работы Btk_TableSizeHistoryUpdate
Хранимые поля
dcreate
- дата и времяsname
- название таблицыstablespace
- табличное пространствоnsize
- собственный размер таблицы [байт]nindexsize
- размер индексов [байт]кntotalsize
- общий размер [байт]
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_MonitorDBActivityPkg.dataInstall();
Обновление#
Btk_MonitorDBActivityPkg.updateTableSizeHistory();
Журнал открытия выборок и выполнения операций selopenhistory
#
Это настраиваемая система, позволяющая вести расширенный аудит действий пользователя при открытии форм и элементов внутри формы. Пользовательский интерфейс доступен в Настройка системы > Аудит \ Аудит открытия форм и выполнения операций
. Для каждой конкретной формы можно включить\отключить аудит, настроить какие взаимодействия будут сохраняться:
Btk_SelSettingAudTypeApi#sFullAud
- признак ведения полного аудитаBtk_SelSettingAudTypeApi#sOnlySuccess
- признак ведения аудита успешно выполненных действий
Существует несколько событий, создающих запись аудита:
при открытии формы
EntityAvi#onShow()
- успешное открытие формыв
EntityAvi#onLoadMeta()
подписка на события неудачных открытий формEntityAvi#beforeCloseForm()
- закрытие формы
при вызове операции
в
EntityAvi#onLoadMeta()
подписка на события исполнения операций
Подробнее об аудите открытия форм и выполнения операция
Хранимые поля
id
- ИД записи в аудите для текущей выборкиsuser
- имя пользователяssel
- выборкаsrep
- отображениеscaption
- наименование отображенияdstart
- время открытияdend
- время закрытияgidobject
- глобальный идентификатор объекта взаимодействияstype
- тип взаимодействия,Btk_SelAuditPkg.SelAuditType
одно из списка: «Главная выборка», «Операция», «Детальная выборка»sparam
- параметры, с которыми открывалась выборкаsresult
- результат взаимодействияSelAuditResult
одно из списка: «Успешно», «Ошибка прикладного кода», «Ошибка доступа»soper
- операцияsopercaption
- наименование операцииserrortext
- текст ошибки
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_SelAuditPkg.dataInstall()
Добавление записи#
Btk_SelAuditPkg.audInsert(
idSession: NLong,
id: NLong,
idParent: NLong,
sSel: NString,
sRep: NString,
sCaption: NString,
gidObject: NGid,
sParam: NString,
sType: NString,
sResult: NString = SelAuditResult.sSuccess,
sOper: NString,
sOperCaption: NString,
sErrorText: NString
)
Журнал аудита JEXL jexlexechistory
#
Содержит информацию о запуске и результате выполнения скриптов на языке JEXL.Пользовательский интерфейс доступен в Настройка системы > Аудит \ Аудит JEXL
.
Операции, которые вызывают создании записи в таблице аудита:
Btk_JexlScriptLibraryAvi.Card_Script#execScriptwithSettings()
Btk_JexlScriptRunnerAvi.Card#execScript()
Хранимые поля
id
- уникальный ключ записи аудитаsuser
- имя пользователяdstartexec
- начало исполненияdendexec
- конец исполненияsjexl
- текст скриптаnresult
- результат выполнения
1 - успех, 0 - ошибкаsstacktrace
- трассировка стека ошибкиgidsrc
- объект, из которого выполнялся вызов скриптаsaudinfo
-
Скрипты взаимодействия с таблицой#
Регистрация#
Btk_JexlScriptRunnerPkg.audDataInstal();
Добавление записи#
Btk_JexlScriptRunnerPkg.audInsert(
dpStartExec: NDate
,dEndExec: NDate
,spJexl: NString
,npResult: NNumber
,spStackTrace: NString = None.ns
,gidpSrc: NGid = None.ng
);