Структуры аудита#

Система 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
);