Использование генеративного искусственного интеллекта для устранения проблем и повышения надежности программного обеспечения
25 июля 2023 г. автор Дотан Горовиц
В сегодняшней быстро меняющейся цифровой среде поддержание работоспособности и производительности ваших сервисов, особенно облачных и онлайн-сервисов, имеет решающее значение для сохранения конкурентоспособности. Проблемы с простоями или задержками могут отпугнуть клиентов, особенно когда достаточно одного щелчка мыши, чтобы переключиться на конкурирующее решение SaaS. Команды DevOps и проектирования надежности сайтов (SRE) постоянно сталкиваются с проблемой минимизации среднего времени исправления (MTTR) при работе с ошибками и проблемами. Какими бы ценными ни были поисковые системы, такие как Google, сам объем доступной информации может сделать поиск правильных решений трудоемкой задачей. Что, если бы существовал способ автоматизировать и упростить этот процесс, сделав расследование ошибок более интеллектуальным, целенаправленным и эффективным?
Эта статья проведет вас через путь устранения ошибок от первой непонятной строки журнала до выявления скрытой в нем проблемы. Мы решим проблему, используя несколько тактик, что в конечном итоге приведет к использованию генеративного искусственного интеллекта для сокращения среднего времени восстановления и предоставления точных ИТ-рекомендаций. Это путешествие включает в себя полезные меры и принципы, которые могут быть применены командами DevOps, и исследует потенциал применения генеративного ИИ.
Представьте себе: появляется строка журнала с непонятным сообщением об ошибке, и первым инстинктом является поиск этого сообщения в Google в поисках потенциальных решений. В конце концов, кто-то другой наверняка сталкивался с подобной проблемой, верно? Однако обилие ресурсов и результатов поиска может быть ошеломляющим. Результаты поиска часто отображаются на основе релевантности веб-сайта, а не релевантности самой ошибки. Следовательно, драгоценное время тратится на просмотр бесчисленных результатов поиска, что приводит к увеличению времени на понимание и исправление ошибки. Для команд DevOps и SRE, ответственных за поддержание стабильности системы, сокращение MTTR является важнейшим ключевым показателем производительности (KPI). Возникает вопрос: как мы можем использовать автоматизацию и искусственный интеллект, чтобы улучшить процесс поиска и ускорить устранение ошибок?
В первой попытке нашей организации решить эту проблему мы сосредоточились на использовании методов краудсорсинга для получения более релевантных результатов, чем грубый поиск в Google. Более того, мы хотели автоматизировать процесс и запустить его в автономном режиме, чтобы в случае возникновения инцидента мы могли предложить полезную информацию, а не начинать поиск, когда система не работает или неисправна.
Этот подход включает офлайн-фазу и онлайн-фазу. Автономный этап включал анализ всех загруженных журналов и выявление общих шаблонов журналов. Это также позволило нам подсчитать, как часто этот паттерн возникал в нашей системе и насколько он распространен. Затем мы просканировали соответствующие технологические форумы, такие как StackOverflow, группы Google и группы Bing, для обсуждения этих шаблонов журналов, которые могли бы предложить соответствующие решения. Следующим шагом было ранжирование результатов поиска по релевантности и взятие пятерки самых релевантных ссылок.
В результате автономного этапа была создана библиотека известных шаблонов журналов и для каждого из них когнитивная информация, содержащая эти ссылки, а также дополнительная информация, такая как уровень серьезности, сколько раз этот шаблон встречался в журналах, дата первого появления. и дополнительные теги задействованных технологий, инструментов и областей.
Онлайн-фаза происходит в режиме реального времени по мере поступления новых журналов. После приема журнала он автоматически сопоставляется со всеми известными шаблонами; если он соответствует одному, он получает когнитивное понимание этого шаблона. Это означает, что как только поступает проблемный журнал, инженер DevOps уже сфокусировал и ранжировал результаты поиска и контекст, с которого нужно начать, что ускоряет процесс расследования.
После размышлений о нашем первоначальном подходе к нам пришло прозрение. Большие языковые модели (LLM), такие как ChatGPT, уже просканировали Интернет и поглотили огромное количество информации. Так почему бы не использовать их возможности и не попросить их напрямую поделиться своими мыслями? Идея была проста: позволить ИИ «читать сообщения» за нас и давать рекомендации. Мы начали с формулировки конкретных вопросов, таких как «Какие могут быть возможные ошибки?» и даже пошел еще дальше, попросив провести дальнейшее расследование. Однако реализация этого, казалось бы, простого подхода сопряжена с рядом проблем. Нам нужно было запустить предварительную обработку перед запросом генеративного ИИ, а также запустить постобработку возвращаемых им ответов, чтобы получить то, что мы ожидали. Давайте посмотрим, что влечет за собой этот процесс.