Перейти к содержанию

Автоматический мониторинг ошибок

Ошибки, возникающие при работе приложения, регистрируются в журналах:

ℹ️  Логирование смарт-автоматизаций зависит от Общих настроек приложения.

Для эффективного администрирования мы рекомендуем настроить автоматический мониторинг повторяющихся ошибок с помощью смарт-расписаний.

Порядок действий

1. В БД приложения "Первая Форма" выполните файл1 и файл2 (при необходимости предварительно измените название БД). При этом в БД будут созданы две функции, которые будут выделять в журналах три самые часто повторяющиеся ошибки за день:

  • tc_ExceptionLogStatistics_DailyTop3 — в журнале ошибок,

  • tc_EmailJobSessionLogStatistics_DailyTop3 — в журнале сессий почтовых джобов.

Для журнала выполнения автоматизаций отдельная процедура не требуется.

  1. Создайте категорию, в которую будут ставиться задачи с оповещением о повторяющихся ошибках.

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

Добавьте в категорию ДП "Дата последнего появления ошибки" (с типом "Дата") и ДП "Тип лога" (с типом "Выпадающий список") и возможными значениями: ExceptionsLog, EmailsLog, SmartLog.

3. В созданной категории настройте три смарт-расписания. Режим запуска может быть индивидуальным, но рекомендуется запускать расписания каждый рабочий день последовательно одно за другим, в 7:00, 7:05 и 7:10 соответственно.

Для журнала ошибок

Для в пакете действий для расписания должны быть два смарт-действия: одно — для регистрации ошибок, которые были выявлены ранее и повторились снова, второе — для регистрации новых ошибок.

Первое смарт-действие — Изменить значение ДП. Если снова возникли ошибки, которые уже были выявлены ранее, и на эти ошибки уже поставлены задачи, в эти задачи в ДП "Дата последнего появления ошибки" записывается текущая дата. Нужная задача ищется по тексту ошибки.

select t.TaskID from TasksInSubcatNNDenormalized as t
where t.IsClosed = 0 and
left (dbo.cm_StripHTML(dbo.cm_ReplaceHTML( t.TaskText)),250) in
(
SELECT left (dbo.cm_StripHTML(dbo.cm_ReplaceHTML( 'Автоанализ лога ошибок. Текст ошибки: <br/>' + REPLACE(exc.Exception, CHAR(13), '<br/>') + '<br/><br/> Найдено <b>' + CAST(exc.ExcCount as varchar(32)) + '</b> ошибок')),250)
FROM tc_ExceptionLogStatistics_DailyTop3 exc
)

где NN — ID категории, созданной для регистрации ошибок (см. п.2).

Второе смарт-действие — Cоздать задачу. Создаются три задачи на три самые часто повторяющиеся ошибки.

Текст задачи (смарт-выражение в режиме T-SQL):

SELECT 'Автоанализ лога ошибок. Текст ошибки: <br/>' + REPLACE(exc.Exception, CHAR(13), '<br/>') + '<br/><br/> Найдено <b>' + CAST(exc.ExcCount as varchar(32)) + '</b> ошибок'
FROM tc_ExceptionLogStatistics_DailyTop3 exc
WHERE NOT EXISTS(
SELECT t.TaskID
FROM Tasks t WITH (NOLOCK)
WHERE substring('Автоанализ лога ошибок. Текст ошибки: <br/>' + REPLACE(exc.Exception, CHAR(13), '<br/>'), 0, 160) = substring(t.Description, 0, 160)
  AND t.IsClosed = 0 and t.subcatid = NN)

где NN — ID категории, созданной для регистрации ошибок (см. п.2).

При создании задачи заполнять ДП:

, "Дата последнего появления ошибки" — текущая дата,

, "Тип лога" — ExceptionsLog.

Для журнала сессий почтовых джобов

Для в пакете действий для расписания должны быть два смарт-действия: одно — для регистрации ошибок, которые были выявлены ранее и повторились снова, второе — для регистрации новых ошибок.

Первое смарт-действие — Изменить значение ДП. Если снова возникли ошибки, которые уже были выявлены ранее, и на эти ошибки уже поставлены задачи, в эти задачи в ДП "Дата последнего появления ошибки" записывается текущая дата. Нужная задача ищется по тексту ошибки.

select t.TaskID from TasksInSubcatNNDenormalized as t
where
t.IsClosed = 0 and
left (dbo.cm_StripHTML(dbo.cm_ReplaceHTML( t.TaskText)),250) in
(
SELECT left (dbo.cm_StripHTML(dbo.cm_ReplaceHTML( 'Автоанализ лога почты. Текст ошибки: <br/>' + REPLACE(exc.Log, CHAR(13), '<br/>') + '<br/><br/> Найдено <b>' + CAST(exc.LogCount as varchar(32)) + '</b> ошибок')),250)
FROM tc_EmailJobSessionLogStatistics_DailyTop3 exc
)

где NN — ID категории, созданной для регистрации ошибок (см. п.2).

Второе смарт-действие — Cоздать задачу. Создаются три задачи на три самые часто повторяющиеся ошибки.

Текст задачи (смарт-выражение в режиме T-SQL):

SELECT 'Автоанализ лога почты. Текст ошибки: <br/>' + REPLACE(exc.Log, CHAR(13), '<br/>') + '<br/><br/> Найдено <b>' + CAST(exc.LogCount as varchar(32)) + '</b> ошибок'
FROM tc_EmailJobSessionLogStatistics_DailyTop3 exc
WHERE NOT EXISTS(
SELECT t.TaskID
FROM Tasks t WITH (NOLOCK)
WHERE substring('Автоанализ лога почты. Текст ошибки: <br/>' + REPLACE(exc.Log, CHAR(13), '<br/>'), 0, 160) = substring(t.Description, 0, 160)
  AND t.IsClosed = 0 and t.SubcatID = NN)

где NN — ID категории, созданной для регистрации ошибок (см. п.2).

При создании задачи заполнять ДП:

, "Дата последнего появления ошибки" — текущая дата,

, "Тип лога" — EmailsLog.

Для журнала выполнения автоматизаций

Для в пакете действий для расписания должно быть одно смарт-действие: для регистрации остановленных смарт-расписаний.

Cоздать задачу. Создаются задачи на все остановленные смарт-расписания.

Текст задачи (смарт-выражение в режиме T-SQL):

SELECT 'Автоанализ лога smart.<br/>Smart расписание в категории:<b> ' + ISNULL(CAST(SubcatID as varchar(32)),'Не в категории') +'</b><br/>ID расписания:<b> ' + CAST(ID as varchar(32)) + '   </b><br/>ID пакета действий:<b> ' + CAST(ActionsPackID as varchar(32)) + '</b><br/>Ошибок выполнения: <b>' + CAST(FailedAttemptsCounter as varchar(32))+'</b>' FROM SmartRecurrence
where FailedAttemptsCounter >= AttemptsToSuspend and Enabled=1 and NOT EXISTS(
SELECT t.TaskID
FROM Tasks t WITH (NOLOCK)
WHERE (CAST(ID as varchar(32)) + ' ') = substring(SUBSTRING(t.Description, CHARINDEX('ID расписания', t.Description), len(t.Description)), 19, 4)
AND t.IsClosed = 0 and t.subcatid = NN)

где NN — ID категории, созданной для регистрации ошибок (см. п.2).

При создании задачи заполнять ДП:

, "Дата последнего появления ошибки" — текущая дата,

, "Тип лога" — SmartLog.

Полезные ссылки

Настройки логирования в Общих настройках приложения

Журнал ошибок

Журнал сессий почтовых джобов

Журнал выполнения автоматизаций

Уведомления при создании задачи в категории

Настройка смарт-расписаний