Ошибки, возникающие при работе приложения, регистрируются в журналах:
•ошибки при выполнении смарт-автоматизаций — в Журнале выполнения автоматизаций,
•ошибки в работе почты — Журнале сессий почтовых джобов,
•другие ошибки — в общем Журнале ошибок.
Для эффективного администрирования мы рекомендуем настроить автоматический мониторинг повторяющихся ошибок с помощью смарт-расписаний.
Порядок действий
1. В БД приложения "Первая Форма" выполните файл1 и файл2 (при необходимости предварительно измените название БД). При этом в БД будут созданы две функции, которые будут выделять в журналах три самые часто повторяющиеся ошибки за день:
•tc_ExceptionLogStatistics_DailyTop3 — в журнале ошибок,
•tc_EmailJobSessionLogStatistics_DailyTop3 — в журнале сессий почтовых джобов.
Для журнала выполнения автоматизаций отдельная процедура не требуется.
2. Создайте категорию, в которую будут ставиться задачи с оповещением о повторяющихся ошибках.
Предоставьте права на просмотр и выполнение задач в категории группе администраторов приложения. Подпишите администраторов на получение уведомлений при создании задачи в категории или настройте автоматические назначение их исполнителями.
Добавьте в категорию ДП "Дата последнего появления ошибки" (с типом "Дата") и ДП "Тип лога" (с типом "Выпадающий список") и возможными значениями: 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](default, default) 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](default, default) 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](default, default) 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](default, default) 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. |
Полезные ссылки
Настройки логирования в Общих настройках приложения
Журнал ошибок
Журнал сессий почтовых джобов
Журнал выполнения автоматизаций
Уведомления при создании задачи в категории
Настройка смарт-расписаний