С обнаружением аномалий в реальном времени

Журналы - это святой Грааль для компании, которая может реагировать на любую техническую проблему, определять первопричину и устранять проблему для клиента. Все больше и больше компаний продвигаются к прогнозированию проблемы и ее заблаговременному устранению, чтобы улучшить качество обслуживания клиентов и сократить свои затраты на ее устранение.

Однажды я работал с компанией, которой приходилось привозить технического специалиста к заказчику, чтобы он осмотрел продукт, определил неисправную деталь, прилетел обратно и снова доставил новую деталь заказчику. Сквозной процесс от получения звонка от клиента до окончательного ремонта продукта занял около 5–8 дней, 4 полета и все связанные с этим расходы.

Представьте себе разочарование конечного пользователя все это время.

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

С тех пор я работал с различными клиентами (Интернет вещей и большие данные) в разных доменах и регионах, чтобы реализовать такое решение. Ниже представлен общий обзор такого решения, которое вы можете реализовать или поэкспериментировать.

Решение использует следующие ключевые сервисы:

  1. Amazon Elasticsearch Service: краткосрочное хранение журналов и полнотекстовый поиск. Вы можете использовать Splunk, Elastic’s Elasticsearch, SumoLogic или любой аналогичный продукт / услугу.
  2. Amazon S3: долгосрочное хранение журналов для построения и обучения моделей машинного обучения.
  3. AWS Lambda: распознавание образов при потоковой передаче данных путем вызова развернутой модели машинного обучения.
  4. Amazon Kinesis: обнаружение аномалий в потоковых данных в реальном времени.

Давайте рассмотрим высокоуровневую архитектуру, которая включает в себя получение как локальных, так и облачных журналов.

Шаг 1. Журналы с различных серверов, приложений, баз данных и т. д. из локальной сети передаются в Amazon S3 или Amazon Kinesis в облаке практически в реальном времени с помощью различных вариантов передачи. Вы можете узнать больше о некоторых вариантах передачи данных в моем предыдущем блоге здесь.

Шаг 2: журналы Cloudtrail (журналы следа) настроены для потоковой передачи в Cloudwatch с использованием фильтров подписки. Эти журналы следа и журналы облачных наблюдений передаются в AWS Lambda, где их можно преобразовать для последующих приложений.

Шаг 3. Журналы Cloudwatch также передаются напрямую в сервис Amazon Elasticsearch через фильтры подписки.

Шаг 4: файлы журналов, передаваемые в Amazon S3 на шаге 1, запускают лямбда-функцию через триггер события S3-put. Эта лямбда-функция также преобразует данные для последующих приложений.

Шаг 5. Преобразованные журналы лямбда-функций из шагов 2 и 4 загружаются в Elasticsearch. Elasticsearch используется для полнотекстового поиска и краткосрочного (менее 12 месяцев) хранения логов. Более старые журналы с определенными ключевыми словами сбоя также могут храниться в Elasticsearch в течение более длительного времени. Пользователи могут искать различные ошибки / ключевые слова в Elasticsearch и соответственно выполнять базовую и расширенную аналитику журналов.

Шаг 6. Amazon S3 - один из самых экономичных сервисов для хранения больших объемов данных. Лямбда-функция также передает журналы в Amazon S3 для долгосрочного хранения данных. Корзины S3 настроены с использованием политик хранения и жизненного цикла данных для перемещения старых данных в еще более дешевое хранилище, такое как Glacier.

Пользователь ищет ключевое слово ошибки в Elasticsearch, чтобы найти самые последние и исторические случаи возникновения ошибки в журналах. После этого пользователь извлекает определенные журналы примерно в интересующее время из Amazon S3 или Elasticsearch для подробного анализа.

Шаг 7. Amazon Sagemaker используется для обучения, тестирования и развертывания моделей машинного обучения для прогнозирования потенциальных сбоев. Журналы в S3 служат источником для обучения и тестирования этих моделей машинного обучения. После развертывания эти модели машинного обучения вызываются лямбда-функциями (развернутыми на шагах 2 и 4) для выявления любых потенциальных проблем в журналах потоковой передачи.

Шаг 8. На предыдущем шаге мы прогнозируем отказы по шаблонам отказов, которые мы уже определили в наших моделях. На этом этапе мы выполняем обнаружение аномалий в реальном времени с помощью Kinesis Analytics, чтобы выявить любые аномалии в потоковых данных.

Шаг 9: при обнаружении аномалии запись сохраняется в DynamoDB, и заинтересованный пользователь получает предупреждение, чтобы он проанализировал и предпринял соответствующие действия.

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

Данные, хранящиеся в Elasticsearch, можно визуализировать или запросить с помощью Kibana - программного обеспечения для визуализации Elasticsearch. Бизнес-пользователи могут просматривать отчеты и информационные панели в Amazon Quickight, основанные на данных, хранящихся в Amazon S3 и DynamoDB. Опытные пользователи или инженеры бизнес-аналитики могут запрашивать данные в Athena и использовать их для создания отчетов в Quicksight.