Рубрики
Uncategorized

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

Вы когда -нибудь проводили время, отслеживая ошибку или неудачу, только чтобы обнаружить, что видели ее раньше? Или вар … Tagged с DevOps, Logfiles, Observicabity.

Вы когда -нибудь проводили время, отслеживая ошибку или неудачу, только чтобы обнаружить, что видели ее раньше? Или вариация этой проблемы: при завершении автоматического теста вы должны тратить время на то, чтобы на каждый сбой, хотя многие из них вызваны одной и той же ошибкой. Все это может повлиять на производительность, особенно в средах непрерывной интеграции и непрерывного развертывания (CI/CD), где все меняется быстро.

Существует решение в этом — когда возникает проблема, создайте «подпись», которая ищет конкретные шаблоны в файлах журналов и метрики, которые присутствуют, когда возникает проблема.

Большинство реализаций подписи включают в себя написание сценариев, которые анализируют данные, использующие регулярные выражения (режимы) и стандартные команды UNIX, такие как GREP и AWK.

Пример подписей

В большинстве текущих (нецесбримовых) реализаций подписи создаются с помощью сценариев, которые анализируют данные с использованием регулярных выражений (режимов) и стандартных команд UNIX, таких как GREP и AWK. Вот несколько типичных примеров:

Очень просто: Триггер, когда происходит событие «Хост: Linux01, не найдено», независимо от того, какое имя хоста: Если grep -q "host.*не найдено" ; затем эхо -триггеры; фигура

Просто: Триггер всякий раз, когда событие «использование памяти достигало XX% — происходит внимание», если XX% больше 95%: Awk ‘Match ($ 0,/использование памяти достигнуто. — Внимание необходимо/) {if ($ 4+0> 95) {print «Triggers»}} ‘*00

Это быстро становится сложным: Триггер, когда происходит событие «Хост: Linux01, не найдено», независимо от имени хоста, но только если оно соблюдается в течение 10 минут событием «Использование памяти» достигло XX% — необходимо внимание »и если XX% превышает 95%.

И еще сложнее, когда условия охватывают файлы журнала: Сначала посмотрите в файле журнала1 и найдите, когда тип события 1 происходит в течение 5 минут после типа 2 -го события, затем найдите самое последнее значение идентификатора транзакции, которое было установлено до события 1. Теперь запустите, если тип 3 -го типа 3 находится в файле журнала 2 с одним идентификатором транзакции, если он происходит в рамках временного промежутка между событиями 1 и 2.

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

Что мы видели во многих клиентах, так это то, что практические задачи очень затрудняют строительство и развертывание автоматического обнаружения подписи, за исключением небольшого количества проблем с низким висящим фруктом. Это потому что:

Это требуют специализированных навыков и значительного времени для разработки подписей, поэтому только небольшое подмножество инженеров (иногда в специализированной команде) создают их.

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

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

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

ПЕРЕМЕНСКАЯ

Ключевой частью нашей платформы построена вокруг того, чтобы разработчики и тестеры были простым для создания детерминированных подписей. Наша цель — сделать его настолько простым и быстрым, что он становится частью процесса CI/CD. Вот как это работает:

Как только проблема была решена, пользователь выбирает события и/или метрики, которые характеризуют проблему (это требует нескольких кликов в пользовательском интерфейсе). Поскольку мы используем машинное обучение для идеальной структуры логарифмических линий, мы смогли реализовать «подпись -строитель», предполагает определение, основанное на выбранных событиях, их относительной последовательности и времени, а также значения в параметрах (переменных) событий.

Вот пример того, как это выглядит:

Никогда не устраняйте одну и ту же проблему дважды в этом примере, подпись будет запустить, только если будут найдены три события (A, B и C), и будут выполнены следующие условия:

Событие A происходит первым, за которым следует события B и C.

Три события A, B и C соответствуют точной форме, показанной на рисунке выше (обратите внимание на переменные детали %s и фиксированный текст).

Все три события должны происходить в течение 60 секунд.

Конкретные переменные в событиях A и B должны соответствовать конкретному тексту (остановлен и Servicerunner)

Это выглядит сложным, нуждающимся в опыте создания, потребовалось много времени, чтобы создать, верно?

Вы будете удивлены! Это заняло менее 30 секунд и всего несколько кликов мыши. Фактически, просто выбрав 3 события, подписенный строитель выполнял большую часть работы. Но что действительно впечатляет, так это то, что она была создана, — структуры событий и постоянное управление схемами (поскольку структуры событий могут меняться в разных выпусках) автоматизируется нашим ML.

Пожалуйста, посетите Здесь Для предварительной регистрации для бета-доступа.

Оригинал: «https://dev.to/gdcohen/reliable-signatures-to-detect-known-software-faults-1897»