Широко распространенная стратегия мониторинга приложений сегодня иногда описывается как мониторинг «Black Box». Мониторинг Black Box фокусируется только на внешне видимых симптомах, в том числе те, которые приближаются к пользователю. Мониторинг Black Box — это хороший способ узнать, когда все сломаются.
Альтернативный подход называется мониторинг «White Box», который требует также глядя на внутреннюю работу системы, чтобы узнать, что на самом деле происходит (и переводит режимы отказа). Подобно в концепции более поздней термин «наблюдаемость» — в основном выводят внутреннее состояние системы путем наблюдения за достаточно полным набором сигналов.
Мониторинг Black Box имеет одно преимущество, которое учитывает его распространенность — это сохраняет вещи простыми. Поскольку большинство сложных приложений имеют огромное количество возможных режимов отказа, просто фокусировка на хорошо выбранном наборе симптомов отказа, намного проще, чем пытаться обнаружить и различать моды беспрепятственного отказа.
С другой стороны, многие команды хотят включить некоторую белую коробку мониторинга в их стратегии (например, книга Google Sre и моя философия на оповещение). Это потому, что мониторинг White Box имеет два преимущества себя:
- Это может помочь вам забрать скрытые или неизбежные сбои, прежде чем вещи фактически сломаются — такие вещи, как деградированные услуги, утечки памяти, переполнения буфера, вознаграждающие ретроты и т. Д. Для большинства приложений полезно знать о проблемах ранее, чтобы избежать или минимизировать влияние пользователя.
- И это на самом деле может сказать вам, что сломалось, и какие действия вам нужно взять. Многие моды неудачи имеют аналогичные внешние симптомы, поэтому просто зная, что симптом на самом деле не поможет вам исправить вещи — это требует дальнейшего сверла или устранения неполадок.
Когда конечная цель состоит в том, чтобы сохранить приложение здоровым (или по крайней мере, хотя быстрее исправить проблемы), мониторинг белого ящика заслуживает серьезного рассмотрения. Проблемы внутренней сложности могут быть решены с хорошо разработанным набором инструментов машинного обучения.
Давайте начнем с данных. Наиболее несуществующие сигналы, описывающие внутренние органы приложения, находятся в журналах. Журналы содержат самую богатую запись поведения приложения — поэтому, почему большинство по устранению неполадок в конечном итоге связаны с ними Spelunking. К сожалению, они обычно грязные, бесплатные текстовые сообщения. Это нормально для простых вещей, таких как текст, чтобы найти ключевые слова, такие как ошибки. К сожалению, журналы, как правило, не структурированы достаточно для надежных предупреждений с несколькими событиями, эффективным обучением шаблона или надежного обнаружения аномалии (которое не генерирует тонну ложных предупреждений). Хорошая новость заключается в том, что тип грубой силы, повторяющий сканирование и анализ того, что инженер данных сделает для структурирования журналов, является идеальным приложением для машинного обучения — Автоматически превращать в необработанный текст в чисто структурированные таблицы событий , параметры и метрики, извлеченные, набранные и хранятся в виде столбцов.
Привлечение такого типа структурирования состоит в том, чтобы превратить потенциально неограниченную проблему обучения схема обучения в реальную проблему изучения поведения ограниченного числа уникальных событий журнала. Даже сложное приложение, которое генерирует миллиарды журналов в день, в конечном итоге перегоняет в словаре, содержащий несколько тысяч уникальных типов сообщений. Это позволяет надежно узнать «нормальную» шаблон каждого типа сообщения, так что, когда все сломаются, аномальные узоры легко обнаружены с помощью изменений частоты, периодичности, тяжести и т. Д. (Примечание: интересный особый случай — это когда происходит нормально встречающееся сообщение, останавливается).
Это большой шаг в «изучении» внутренней работе комплексной машины, но недостаточно. Распределенное приложение может возникнуть много рутинной активности в течение десятков услуг и сотни экземпляров, с контейнерами, приходящими и продвижениями, обновлениями и перезапуском — никто из которых на самом деле не проблемами. Уточнение состоит в том, чтобы различать немного необычное событие и действительно серьезную ошибку или чрезвычайно необычный перерыв в узоре. Но даже это может легко сокрушить команду с точными, но практически бесполезными оповещениями, если оно поймало все эти «микроразвиты».
Следующим шагом является уточнение сигнала к шуму путем автоматически обнаружения корреляций между этими аномальными событиями. Поскольку цитата Wilde идет: «потерять одного родителя, можно рассматривать как несчастье; потерять оба выглядеть как небрежность. «В этой вене срывы в одном микросервере могут быть запланированы или в противном случае доброкачественная проблема, но шаблон очень аномальных событий, которые рябия по нескольким услугам, гораздо более вероятно, являются реальной проблемой, чем безвредное совпадение. Создание только одного оповещения для такого сценария (для переднего края проблемы) делает хорошую работу «открытия черного коробки», поднимая раннее осведомленность о серьезном отказе, которое еще не может быть видна в симптомах. Более того, он уменьшает шум — признание и связанные с коалицевым вопросами в одно неспособность.
Приведенное выше описание не является гипотетическим. Он встроен в службу SaaS, который поймал 56% серьезных режимов отказа (и улучшения) в тестировании по широкому диапазону стеков приложений, при создании очень малообеспеченного шума. Некоторые примеры включают в себя:
- Обнаружена критическая проверка аутентификации на шесть часов до того, как инструменты APM и мониторинга поймали проблему.
- Обнаруженная база данных перезапускается в стоп-след, который привел бы к сбою службы.
- Поймал ранний показатель отключения, обнаруживая авария критической службы. Быстрая сверла вниз выставленного переполнения буфера памяти в качестве корневой причины.
- Обнаружена редкая ошибка при сохранении ключей шифрования, что привело бы к потере данных, если они не обнаружены.
- Автозаветили Spike в Cache Time Time, что повлияло на пользовательский опыт (пропущенный инструментом мониторинга, как метрика, не было инструментона.
Он работает в режиме реального времени без больших учебных наборов данных или человеческого надзора (обычно учится в течение нескольких минут видения данных). Сейчас в бета-версии и бесплатно до 1 ГБ в день.
Пожалуйста, нажмите здесь, чтобы попробовать это Отказ
Примечание. Этот пост был создан Аджаем Сингхом, размещенным с разрешения.
Оригинал: «https://dev.to/gdcohen/using-machine-learning-to-shine-a-light-inside-the-monitoring-black-box-jh7»