Кирилл Черятов. Эволюция системы логирования...

34
Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа логов в 9 раз. Черятов Кирилл МТС ИТ [email protected]

Transcript of Кирилл Черятов. Эволюция системы логирования...

Page 1: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Эволюция системы логирования интеграционного ПО.Сокращаем время сбора и анализа логов в 9

раз.

Черятов Кирилл МТС ИТ

[email protected]

Page 2: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Проблемы. Сложность сбора логов.

Логи сгруппированы по модулям/системам, а не по бизнес-процессам.

В случае FORIS количество папок с логами ~ 300.

Page 3: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Проблемы. Сложность сбора логов.

• Невозможно выделить логи, относящиеся к конкретному тестовому сценарию.

• Для сбора логов нужно знать, какие модули вызываются при выполнении бизнес-процесса.

Page 4: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Проблемы. Пинг-понг багов.

из письма 2013 года

…Наблюдаю пинг-понг в подавляющем большинстве багов…

Page 5: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Пользовательская история.

Я, как инженер группы тестирования, хочу

собирать все необходимые разработке логи

тестового сценария, не зная подробностей о

реализации модулей.

Page 6: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Название системы.

Central Logging

Page 7: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Идея.

Page 8: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Реализация. Идентификатор сессии.

Если сессия еще не создана, то она создается при первой попытке записи лога. Идентификатор сессии – GUID.

Транспорт: WCF/Soap headers, BPM context, .net CallContext.

Page 9: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Реализация. Сбор логов.

Для сбора логов разработан log4net appender, WCF служба для группировки, сжатия и записи логов.

Хранилище логов - DB Oracle.

Page 10: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Реализация.

Page 11: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Реализация. Поиск логов.

Для поиска логов разработано WPF приложение. Тиражируется с помощью ClickOnce.

Page 12: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Реализация. Поиск логов.

Page 13: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Реализация. Средства для анализа логов.

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

Page 14: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Внедрение.

Внедрение проходило несколько этапов:• Proof на небольшой группе тестирования. • Отдали в эксплуатацию в аутсорсную команду

тестирования (~30 человек). • CL – стал стандартным инструментом для поиска

логов для большинства UC.

В баге не приложены логи CL – баг возвращается в тестирование с просьбой приложить логи.

Page 15: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Результаты.

• Термин «пинг-понг багов» безнадежно устарел и перестал употребляться.

• Оценка сокращения временных затрат по результатам тестовой эксплуатации

Название БП Поиск логов с CL Поиск логов без CLСмена ТП 5 30

Продажа контракта 5 45

ДУУ 5 15

Заказ документов 5 20

Расторжение контракта 5 25

Объединение ЛС 5 25

Page 16: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Сокращаем время сбора и анализа логов в 9 раз.

Название БП c CL без CL

Продажа контракта

5 45

Page 17: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 1. Результаты. Затраты на 1 баг -30%.На один баг:

Testing (Test) — 1 час

Testing (Creation) — 15 мин сбор логов

Integration (Localization) — 15 мин изучения стенда и логов

50% Testing (Add Logs) — 15 мин досбор других логов

50% Integration (Localization) — 15 мин изучения стенда и логов

Dev Team 1 (Localization) — 15 мин изучение логов

30% Testing (Add Logs) — 15 мин сбор логов (если удалились, то ретест)

Dev Team 1 (Localization) — 15 мин изучение логов

30%

Dev Team 2 (Localization) — 15 мин изучение логов

Testing (Retest + Add Logs) — 1 час на ретест (уже точно удалились) + сбор логов

Dev Team 1 или 2 (Fix) — 2 часа на исправление

Testing (Retest) – 1 час

Page 18: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2.

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

Page 19: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2. Отличия от этапа 1.

Тестовый стенд:

1-30 серверов БЛ,

несколько тысяч БП.

Продуктив:

300 серверов БЛ,

50 млн. БП в сутки.

Page 20: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2. Идея.

Модуль фильтрации логов

Page 21: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2. Реализация.

Модуль фильтрации состоит из 3 элементов:• Метод, который применяет фильтры к логам.• Таймер, который периодически получает

обновленные фильтры• Флаг «пиши логи», который передается

аналогично идентификатору сессии, если сработал фильтр.

Page 22: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2. Реализация.

Page 23: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2. Реализация. Типы фильтров.

• Логин оператора,• Временной интервал,• Тип бизнес-процесса,• Абонент

Page 24: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 2. Внедрение.

Система развернута и эксплуатируется на продуктиве.

Для ряда интеграционных проблем CL позволяет ускорить локализацию на несколько дней.

Page 25: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 3.

Я, как разработчик, хочу в результатах запуска интеграционных автотестов видеть логи бизнес-процесса, который запускался в автотесте.

Page 26: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 3. Идея.

Позволяем помечать сессии

атрибутами,

реализуем службу,

которая ищет сессии

по заданным атрибутам.

Page 27: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 3. Реализация.

Page 28: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 3. Внедрение.

О том, что в итоге получилось, чуть позже расскажет Павел Бирюков.

Page 29: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 4.

Я, как представитель разработки системы, которая интегрируется с FORIS, хочу получить возможность писать логи в CL.

Page 30: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

FORIS

SCP НКИП

COCAT

BSSmBP

BMS

Этап 4.

Page 31: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 4. Реализация.

Добавили еще 1 интерфейс для записи логов в CL – RabbitMQ.

(асинхронное взаимодействие, кроссплатформенный клиент)

Как правило, взаимодействие между модулями происходит с помощью SOAP, поэтому идентификатор сессии передается стандартным образом.

Page 32: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Этап 4. Внедрение.

Внедрено в рамках задачи интеграции с платформой SMBP (unix, c++, java)

В процессе внедрения в online платформу SCP (unix, c++).

Page 33: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Подведем итоги.

• Сократили календарь исправления бага за счет сокращения количества ретестов и сбора логов.

• Сократили трудоемкость исправления бага ~30%.

• Упростили сбор логов для ошибок на продуктиве.

Page 34: Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем время сбора и анализа

Спасибо.

Черятов Кирилл

МТС ИТ

[email protected]