Автоматическая классификация ошибок технологического журнала

Публикация № 1251023

Администрирование - Производительность и оптимизация (HighLoad) - Технологический журнал

производительность мониторинг технологический журнал классификация

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

Промо:

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

Описание проблемы:

  • Сложность анализа и постоянный контроль - При анализе текстов записей технологического или регистрации журналов Вам требуется оперативный анализ по категориям/классам: блокировка, ошибка доступа, программного кода или еще что-то. Вычленить понятие события из текста содержащего кучи GUID, стека вызовов и всяких там технических терминов – сложная и трудоемкая задача. Просмотреть (часто большой текст сообщения) можно вручную (не оперативно) если этих событий 10 или 100, но вот если их более чем 1000, да еще и каждый час, то этот набор сырых данных превращается в китайскую грамоту, и мы быстро начинаем уставать – терять сосредоточенность, что-то пропускать, игнорировать и т.д. 
  • Оперативность реагирования - Требуется максимально оперативно узнать, что появилось критическое сообщение в журнале и поставить алармы/ярлычки на какие-то определенно встречающиеся опасные события/сообщения в технологическом журнале. К примеру, новая неизвестная ошибка (особенно уместно после обновления конфигурации) или сообщения падения хостов, агента, СУБД – типа «На сервере 1С:Предприятия не найдена лицензия. Не обнаружен ключ защиты программы или полученная программная лицензия!», «Процесс завершается. Исходящий вызов запрещен» или «Сервер недоступен (Не отвечает, завершается аварийно или порт занят другим приложением)».

Если все это Вам требуется - то эта статья с практикой применения для Вас.

Небольшой флешбек:  

Вопрос автоматической классификации ошибок был поставлен у нас еще до появления самой конфигурации. Однако основная и первичная задача стояла в автоматическом мониторинге состояния системы в облаке и сообщении о проблемах производительности. Эти задачи на текущий момент решены и улучшаются время от времени. Теперь поговорим о варианте выполнения автоматической классификации ошибок. Информацию по данной тематике мы преподнесем в двух публикациях. В первой и текущей публикации мы кратко коснемся вопроса теории, а во второй более подробно остановимся на этом важном, на взгляд авторов аспекте.
Скажем сразу фактически никаких иных инструментов, кроме 1С, т.е. никакого зоопарка из кучи инструментов типа python и т.п. мы не использовать не будем) 

Задача

Отнести текстовое сообщение об ошибке на основе данных технологического журнала к одному из заранее определенных классов. 

В качестве математики будем использовать механизм преобразования текстов в векторное пространство и косинусное сходство.

Структура статьи:

  1. Настройки и порядок выполнения работ
  2. Видео-урок
  3. Замечания, советы, ссылки.

 

I) Практика

 

1 Шаг. Скачиваем необходимые ресурсы

А) Скачиваем обновленную конфигурацию «Мониторинг производительности» и обработку «АвтоматическаяКлассификацияОшибокВекторноеПространство.epf». Устанавливаем конфигурацию, если еще не стоит.

Б) Добавляем обработку в дополнительные отчеты и обработки. Подсистему выбираем «Замеры». 

В) Выполняем настройку загрузки логов ошибок технологического журнала (если не делали ранее) - 5 простых шагов и 15 минут на разворачивание инструмента мониторинга проблем производительности базы 1С

2 Шаг. Заполняем классификатор ошибок.

Открываем справочник "Известные ситуации" в подсистеме "Замеры". Создаем корневой элемент и называем его "Классификатор ошибок ТЖ". А далее создаем набор справочников в соответствии с примером ниже.

Опорные тексты кластеров приведены внутри каждого класса. Обязательно выполняйте настройку под себя изменяя/регулируя тексты, и значения нижней границы. Общий совет - чем меньше текст кластерам и мало в нем уникальных слов, то тем выше необходимо поднимать границу.   

  1. Доступ – ошибка доступа, права и роли. Нижняя граница сходства > 0.1
     

     

  2. Запись/проведение – ошибки записи документов, справочников, регистров и проведения документов. Нижняя граница сходства > 0.1
     

     

  3. Блокировки – блокировка документов, действий, форм. Нижняя граница сходства > 0.1
     

     

  4. СУБД – ошибки взаимодействия сервера 1С с базой данных. Нижняя граница сходства > 0.1
     

     

  5. Работа с отчетами – ошибки, связанные с формированием, выполнением отчетов. Нижняя граница сходства > 0.2
     

     

  6. Программные – ошибки, связанные с выполнением различного кода. Нижняя граница сходства > 0.08
     

     

  7. Работа с интернет – не удалось получить данные, превышено ожидание и др. Нижняя граница сходства > 0.2
     

     

  8. Критические ошибки авария (элемент группы) – падение хостов, отсутствие лицензий, отказ служб и т.п.
    1. Авария служб 1С. Нижняя граница сходства > 0.2 
       

       

    2. Лицензии. Нижняя граница сходства > 0.2
       

       

    3. Разрывы соединения. Нижняя граница сходства > 0.2
       

       

  9. Разное – все остальные ошибки, не вошедшие в предыдущие классы
     

     

3 Шаг. Выполняем настройку обработки

А) Открываем форму "Настройка 'Автоматическая классификация ошибок ТЖ'" дополнительной обработки.

Б) Указываем параметры обработки текстов. Это так называемая процедура подготовки данных для анализа. Настройки можно выполнить согласно рисунку ниже.


В) Указываем стоп слова/ стоп фразы/ синонимы (можете пропустить, если не знаете как и зачем)
Г) Указываем источники для получения данных и выполнения обработки (вкладка 'Данные из базы'/'Выбрать данные из базы'). Обычно это ссылка на замер и свойство 'Descr'.
Д) Используем текстовые данные с текстовым корпусом ошибок из файла или на основе данных базы. Это вкладка "Данные из базы"/"Выбрать данные из классификатора". Жмем кнопку "Выбрать данные из классификатора".
Е) Переходим к формированию базиса и векторного пространства ошибок технологического журнала. Вкладка "Базис".


Ж) Формируем базис данные для классификации. Последовательно нажимаем кнопки "Получить частотность", "Сформировать вектора", "Рассчитать векторное пространство". 

З) Сохраняем настройки в замер.

4 Шаг. Выполняем проверку и настройку.

Выполняем оценку качества классификации.

А) Выбираем набор проверочных данных (вкладка 'Данные из базы'/'Выбрать данные из базы'). Жмем "Выбрать данные" (используем период и первые - иначе будет очень долго и тяжело).

Б) После на вкладке "Обработка текста" жмем кнопки последовательно - "Обработать текст", "Заполнить таблицу корпуса слов по текущему тексту".

В) Формируем вектора текстов. На вкладке "Базис". Жмем последовательно кнопки - "Сформировать вектора", "Рассчитать векторное пространство по классификатору".

Г) Переходим на вкладку "Проверка"/"Автоклассификация" формы настройка и выполняем авто классификацию - жмем кнопку "Выполнить автоматическую классификацию по классификатору".

Д) Вычисляем количество верных оценок, принимаем решение о дальнейшей настройки или завершении настроек.

Качество результата обработки можно получить по формуле:

Качество классификации = 100% * Количество правильных классификаций / Количество примеров.

Настройку необходимо производить  до уровня не менее 95%. Оптимально - 98-99%.

5 Шаг. Запуск в работу!

Запускаем регламентное задание автоматической классификации. На вкладке замера загрузки логов можно увидеть результаты классификации в колонке "decision"

Открываем форму "Монитор 'Классификация ошибок'" анализа данных или журнал замеров и смотрим результат.

II) Видео-урок.

 

III) Замечания:

 

  1. Чем качественнее составлен базовый вектор (базис слов), тем лучше будет результат. Т.е. если вы поленитесь убирать мусорные слова типа имен пользователей, комментариев и т.п. тем хуже будут результаты. 
  2. При появлении новых ошибок вам понадобится перестроить словарь – дополнить. Критерием этого будут служить появление новых не классифицированных ошибок.
  3. Аккуратно пользуйтесь важностью слов, т.к. этот критерий будет увеличивать влияние данных слов на результат.
  4. Формирование классификатора на основании текстов можете использовать для общей группировки, а далее формируйте руками.
  5. Рекомендуем граничный критерий схожести установить в диапазоне от 0,8-0,86 до 1 (это соответствует радиусу между векторами от 36-30 до 0). При значении косинуса близком к 1 можно сказать, что вектора одинаково направлены на 100% - это максимальное подобие. При значениях в районе 0 или отсутствии – означает, что совсем различны.
  6. Уточните и заполните Стоп-слова и Синонимы фраз. Это позволит очистить результат от шума и сделать результат классификации гораздо лучше. 
  7. Анализировать данные по темам можно для любой текстовой информации, которую можно добавить в замеры – данные об инцидентах пользователей, письмах на поддержку и т.п.
  8. Советуем не делать большой базис слов – не более 800-1000 слов. Если у Вас получилось больше, значит у вас много лишних понятий. Проведите чистку. 
  9. Для классификатора корпус текстов ошибок тоже не должен быть большим. Оптимально 5-15. К примеру: «Отчеты», «Проведение/запись документов/справочников», «Доступ», «Блокировки», «Ошибки сервисов»...

Ссылки:

  1. Фреймворк «Монитор производительности»
  2. Руководство по эксплуатации.
  3. АвтоматическаяКлассификацияОшибокВекторноеПространство.epf
  4. Готовую конфигурацию можно скачать из приложения статьи: Решение проблемы быстродействия в ERP на рабочем примере

 

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 3255 28.06.20 12:11 Сейчас в теме
Блестяще. Отличная публикация, подробное, понятное изложение, готовые примеры. Серьёзное решение серьёзной проблемы. Солидно. Полезно. Большое спасибо!
muskul; ivanov660; +2 Ответить
2. ivanov660 2139 28.06.20 14:43 Сейчас в теме
(1)Спасибо, такой отзыв очень приятно читать )
Будет полезно, если кто-то настроет у себя такой функционал и поделется результатами.

Что самое замечательное в этом механизме - используем только возможности 1С Платформы.
6. Yashazz 3255 29.06.20 10:54 Сейчас в теме
(2)
Что самое замечательное в этом механизме - используем только возможности 1С Платформы.
Именно. Это одно из несомненных достоинств.
3. Артано 669 29.06.20 07:15 Сейчас в теме
Отличная работа, коллеги. Если не возражаете, то вставлю вашу прикладную статью как иллюстрацию для моей теоретической, чтобы жаждущие смогли сразу увидеть как теория реализуется в практике.
4. ivanov660 2139 29.06.20 08:22 Сейчас в теме
5. Артано 669 29.06.20 09:01 Сейчас в теме
(4) Об ошибках, просто вопрос парсинга журнала у меня лишь в двух предложениях описан, а здесь прекрасная иллюстрация.
7. kiset 03.07.20 09:49 Сейчас в теме
Отличный проект. Довольно легко настраивается, и адекватный результат.

Вопрос: это так и задумано, что при подключении замера через произвольный тип, нигде не прописана загрузка самих логов по этому замеру, или я до чего-то не докопался?
8. ivanov660 2139 03.07.20 10:04 Сейчас в теме
(7)Если вы выбираете произвольный тип, то должны указать дополнительную обработку. Эта дополнительная обработка должна содержать в себе код для загрузки/обработки данных.
Добавлю в инструкцию.
Т.е. ТЖ и Performance Monitor из коробки, остальные подключаются дополнительными обработками - плагинами.
ДУмаю, что должен ответить на вопрос.
9. kiset 03.07.20 10:15 Сейчас в теме
(8)
Эта дополнительная обработка должна содержать в себе код для загрузки/обработки данных.

Собственно, про это и вопрос. Обработка "АвтоматическаяКлассификацияОшибокВекторноеПространство.epf" не содержит такого кода, по крайней мере, я пока его не нашёл.

В общем-то допилить это не составляет труда, но может мало ли, я слепой и плохо искал? :)
10. ivanov660 2139 03.07.20 11:58 Сейчас в теме
(9)
1 Содержит код обработки данных. Это вам я как автор говорю). Чтобы обрабатывать данные Вам требуется обязательно создать отдельный замер загрузки ТЖ. Данный пункт инструкции в тексте статьи и есть ссылка в ролике.
Если вы хотите в одном флаконе: загрузку лога ТЖ, обработку лога ТЖ, оповещения по результатам обработки и т.п. тогда "напильник вам в руки".
"Загрузки/обработки" - я написал потому, что функционал в рамках обобщенного замера различный. А в случае текущей обработки - выполняется только обработка данных (классификация)
2. Если у вас что-то не работает или работает не так, то значит вы что-то не верно делаете или не внимательно посмотрели пример настройки (такое бывало уже не раз, всем нам свойственно).
3. Возможно вы выполняете не регламентированную последовательность действий или настроек окружения. Напишите если это так, тогда нам стоит, исправить или ограничить такую возможность.
11. kiset 03.07.20 12:56 Сейчас в теме
(10)
Вам требуется обязательно создать отдельный замер загрузки ТЖ. Данный пункт инструкции в тексте статьи и есть ссылка в ролике.

Спасибо за разъяснение. Ответ на вопрос получен, так и задумано. :)
12. ivanov660 2139 03.07.20 13:58 Сейчас в теме
(11) Принцип - собираем из "кубиков" необходимую конструкцию.
Оставьте свое сообщение

См. также

Выявляем и оптимизируем ресурсоемкие запросы 1С:Предприятия

Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал Структура метаданных v8::Запросы Бесплатно (free)

Обычно предметом оптимизации являются заранее определенные ключевые операции, т.е. действия, время выполнения которых значимо для пользователей. Причиной недостаточно быстрого выполнения ключевых операций может быть неоптимальный код, неоптимальные запросы либо же проблемы параллельности. Если выясняется, что основная доля времени выполнения ключевой операции приходится на запросы, то осуществляется оптимизация этих запросов. При высоких нагрузках на сервер СУБД в оптимизации нуждаются и те запросы, которые потребляют наибольшие ресурсы. Такие запросы не обязательно связаны с ключевыми операциями и заранее неизвестны. Но их также легко выявить и определить контекст их выполнения, чтобы оптимизировать стандартными методами.

24.05.2020    5846    0    DataReducer    22    

Фреймворк "Мониторинг производительности". Руководство пользователя

Производительность и оптимизация (HighLoad) Бесплатно (free)

Описание и руководство "Мониторинг производительности": краткое описание конфигурации, сборник из статей, примеров - собрано в одном файле.

21.04.2020    2737    0    ivanov660    3    

Многострочный контекст событий

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

Разбор технологического журнала с группировкой событий по первой или последней строке многострочного контекста.

31.03.2020    2721    0    vasilev2015    9    

Анализ взаимоблокировок

Производительность и оптимизация (HighLoad) Технологический журнал v8 Бесплатно (free)

Скрипт Bash, который выводит полную информацию взаимоблокировок по технологическому журналу. Не имеет аналогов в отечественных публикациях.

20.03.2020    3983    0    vasilev2015    21    

5 простых шагов и 15 минут на разворачивание инструмента мониторинга проблем производительности базы 1С

Производительность и оптимизация (HighLoad) v8 Бесплатно (free)

В этой статье мы разберем механизм использования конфигурации "Анализ технологического журнала" на практике, и всего через 15 минут работы вы получите функциональный, удобный инструмент мониторинга проблем производительности базы 1С.

18.04.2019    27564    0    ivanov660    77    

Решение проблемы быстродействия в ERP на рабочем примере

Производительность и оптимизация (HighLoad) v8 ERP2 Абонемент ($m)

Рассмотрим практический пример оптимизации, определим последовательность действий и воспользуемся специализированными инструментами.

3 стартмани

18.12.2018    15343    102    ivanov660    17    

Простые регулярные выражения

Производительность и оптимизация (HighLoad) Технологический журнал v8 Россия Бесплатно (free)

Шпаргалка к экзамену "Эксперт по технологическим вопросам".

30.04.2018    17210    3    vasilev2015    38