Кирилл Черятов. Эволюция системы логирования...
Transcript of Кирилл Черятов. Эволюция системы логирования...
Эволюция системы логирования интеграционного ПО.Сокращаем время сбора и анализа логов в 9
раз.
Черятов Кирилл МТС ИТ
Проблемы. Сложность сбора логов.
Логи сгруппированы по модулям/системам, а не по бизнес-процессам.
В случае FORIS количество папок с логами ~ 300.
Проблемы. Сложность сбора логов.
• Невозможно выделить логи, относящиеся к конкретному тестовому сценарию.
• Для сбора логов нужно знать, какие модули вызываются при выполнении бизнес-процесса.
Проблемы. Пинг-понг багов.
из письма 2013 года
…Наблюдаю пинг-понг в подавляющем большинстве багов…
Этап 1. Пользовательская история.
Я, как инженер группы тестирования, хочу
собирать все необходимые разработке логи
тестового сценария, не зная подробностей о
реализации модулей.
Этап 1. Название системы.
Central Logging
Этап 1. Идея.
Этап 1. Реализация. Идентификатор сессии.
Если сессия еще не создана, то она создается при первой попытке записи лога. Идентификатор сессии – GUID.
Транспорт: WCF/Soap headers, BPM context, .net CallContext.
Этап 1. Реализация. Сбор логов.
Для сбора логов разработан log4net appender, WCF служба для группировки, сжатия и записи логов.
Хранилище логов - DB Oracle.
Этап 1. Реализация.
Этап 1. Реализация. Поиск логов.
Для поиска логов разработано WPF приложение. Тиражируется с помощью ClickOnce.
Этап 1. Реализация. Поиск логов.
Этап 1. Реализация. Средства для анализа логов.
Контекстный поиск, навигация по результатам поиска.
Этап 1. Внедрение.
Внедрение проходило несколько этапов:• Proof на небольшой группе тестирования. • Отдали в эксплуатацию в аутсорсную команду
тестирования (~30 человек). • CL – стал стандартным инструментом для поиска
логов для большинства UC.
В баге не приложены логи CL – баг возвращается в тестирование с просьбой приложить логи.
Этап 1. Результаты.
• Термин «пинг-понг багов» безнадежно устарел и перестал употребляться.
• Оценка сокращения временных затрат по результатам тестовой эксплуатации
Название БП Поиск логов с CL Поиск логов без CLСмена ТП 5 30
Продажа контракта 5 45
ДУУ 5 15
Заказ документов 5 20
Расторжение контракта 5 25
Объединение ЛС 5 25
Сокращаем время сбора и анализа логов в 9 раз.
Название БП c CL без CL
Продажа контракта
5 45
Этап 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 час
Этап 2.
Я, как инженер технической поддержки, тоже хочу иметь возможность собрать логи выполнения бизнес-процесса на продуктиве, без перенастройки модулей, рестарта служб, существенного увеличения нагрузки на сервер.
Этап 2. Отличия от этапа 1.
Тестовый стенд:
1-30 серверов БЛ,
несколько тысяч БП.
Продуктив:
300 серверов БЛ,
50 млн. БП в сутки.
Этап 2. Идея.
Модуль фильтрации логов
Этап 2. Реализация.
Модуль фильтрации состоит из 3 элементов:• Метод, который применяет фильтры к логам.• Таймер, который периодически получает
обновленные фильтры• Флаг «пиши логи», который передается
аналогично идентификатору сессии, если сработал фильтр.
Этап 2. Реализация.
Этап 2. Реализация. Типы фильтров.
• Логин оператора,• Временной интервал,• Тип бизнес-процесса,• Абонент
Этап 2. Внедрение.
Система развернута и эксплуатируется на продуктиве.
Для ряда интеграционных проблем CL позволяет ускорить локализацию на несколько дней.
Этап 3.
Я, как разработчик, хочу в результатах запуска интеграционных автотестов видеть логи бизнес-процесса, который запускался в автотесте.
Этап 3. Идея.
Позволяем помечать сессии
атрибутами,
реализуем службу,
которая ищет сессии
по заданным атрибутам.
Этап 3. Реализация.
Этап 3. Внедрение.
О том, что в итоге получилось, чуть позже расскажет Павел Бирюков.
Этап 4.
Я, как представитель разработки системы, которая интегрируется с FORIS, хочу получить возможность писать логи в CL.
FORIS
SCP НКИП
COCAT
BSSmBP
BMS
Этап 4.
Этап 4. Реализация.
Добавили еще 1 интерфейс для записи логов в CL – RabbitMQ.
(асинхронное взаимодействие, кроссплатформенный клиент)
Как правило, взаимодействие между модулями происходит с помощью SOAP, поэтому идентификатор сессии передается стандартным образом.
Этап 4. Внедрение.
Внедрено в рамках задачи интеграции с платформой SMBP (unix, c++, java)
В процессе внедрения в online платформу SCP (unix, c++).
Подведем итоги.
• Сократили календарь исправления бага за счет сокращения количества ретестов и сбора логов.
• Сократили трудоемкость исправления бага ~30%.
• Упростили сбор логов для ошибок на продуктиве.