Искусственный интеллект на страже логов: генерация аномалий из кода

Автор: Денис Аветисян


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

🐢

Ищешь ракеты? Это не к нам. У нас тут скучный, медленный, но надёжный, как швейцарские часы, фундаментальный анализ.

Телеграм канал
Система AnomalyGen выстраивает процесс обнаружения аномалий в три этапа: сначала проводится обрезка графа и извлечение подграфов на основе логов для фиксации внутрипроцедурной логики, затем - реконструкция межпроцедурных путей посредством моделирования на основе стека и сопоставление последовательностей логов с семантической проверкой, и, наконец, происходит автоматическая аннотация аномалий и контролируемая аугментация данных для генерации высококачественных размеченных сессий.
Система AnomalyGen выстраивает процесс обнаружения аномалий в три этапа: сначала проводится обрезка графа и извлечение подграфов на основе логов для фиксации внутрипроцедурной логики, затем — реконструкция межпроцедурных путей посредством моделирования на основе стека и сопоставление последовательностей логов с семантической проверкой, и, наконец, происходит автоматическая аннотация аномалий и контролируемая аугментация данных для генерации высококачественных размеченных сессий.

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

Ограниченность обучающих данных является ключевым препятствием для эффективного обнаружения аномалий на основе логов. В данной работе, представленной под названием ‘AnomalyGen: Enhancing Log-Based Anomaly Detection with Code-Guided Data Augmentation’, предложен новый подход, AnomalyGen, использующий статический анализ кода и большие языковые модели для генерации синтетических лог-последовательностей. Этот метод позволяет значительно расширить покрытие данных и повысить точность обнаружения аномалий, демонстрируя прирост F1-меры до 2.18% (HDFS) и 1.69% (Zookeeper). Не откроет ли это новые возможности для повышения надежности и отказоустойчивости современных распределенных систем?


Современные системы и неразрешимая проблема аномалий

Современные распределенные системы, такие как использующие HDFS и Zookeeper, генерируют колоссальные объемы данных журналов, что делает ручное обнаружение аномалий практически невозможным. Этот непрерывный поток информации, возникающий в результате множества взаимодействий между компонентами системы, превосходит возможности человеческого анализа. Каждый запрос, каждая ошибка, каждое событие фиксируется в логах, создавая огромный массив данных, который постоянно растет. Попытки вручную просматривать эти логи для выявления отклонений требуют не только значительных временных затрат, но и сопряжены с высокой вероятностью упущения важных сигналов, что делает данный подход неэффективным и неприменимым в реальных условиях эксплуатации крупных систем.

Традиционные методы обнаружения аномалий, разработанные для более простых систем, испытывают значительные трудности при анализе огромных объемов журнальных данных, генерируемых современными распределенными инфраструктурами. Сложность заключается не только в масштабе, но и в разнообразии форматов и взаимосвязей в этих данных. В результате, алгоритмы часто выдают большое количество ложных срабатываний, сигнализируя о проблемах, которых на самом деле нет. Это требует от специалистов по эксплуатации тратить значительное время на проверку этих предупреждений, снижая эффективность работы и увеличивая риск пропустить реальную аномалию, представляющую угрозу для системы. Повышение точности обнаружения аномалий — ключевая задача для обеспечения надежности и безопасности современных IT-систем.

Анализ существующих наборов данных для систем распределенного хранения, таких как HDFS и Zookeeper, выявил крайне ограниченное покрытие шаблонов журналов. В частности, зафиксировано, что текущие наборы данных содержат лишь 0.99% от всех возможных шаблонов журналов HDFS и всего 8.02% в Zookeeper. Данный факт указывает на серьезную проблему неполноты данных, препятствующую эффективному обучению моделей обнаружения аномалий. Ограниченное представление разнообразия логов приводит к тому, что модели могут упустить важные отклонения от нормального поведения, что критично для поддержания стабильности и безопасности сложных систем. Недостаточное покрытие шаблонов ставит под сомнение надежность существующих методов и подчеркивает необходимость разработки инновационных подходов к аугментации данных и обучению моделей для более точного и всестороннего обнаружения аномалий.

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

Маркировка узлов с учетом логов и обрезка графа вызовов позволяют оптимизировать процесс анализа и уменьшить вычислительную нагрузку.
Маркировка узлов с учетом логов и обрезка графа вызовов позволяют оптимизировать процесс анализа и уменьшить вычислительную нагрузку.

AnomalyGen: Автоматическая генерация логов из исходного кода

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

Для моделирования поведения системы, фреймворк AnomalyGen использует статический анализ исходного кода с целью извлечения информации о потоке управления. Эта информация представлена в виде графов вызовов (Call Graphs) и ориентированных на логи графов потока управления (Log-Oriented Control Flow Graphs, LCFG). Статический анализ кодовой базы Hadoop занимает приблизительно 9 минут, что позволяет достаточно быстро получить необходимые данные о структуре и функционировании системы для последующей генерации синтетических логов.

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

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

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

Усиление реалистичности с помощью больших языковых моделей

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

Для обеспечения логической согласованности генерируемых параметров с поведением системы, AnomalyGen использует метод Chain-of-Thought (CoT) Reasoning. Данный подход предполагает, что LLM не просто генерирует значения параметров, а сначала формирует последовательность рассуждений, описывающих взаимосвязи между различными параметрами и их влиянием на системное состояние. Это позволяет модели учитывать зависимости и ограничения, присущие реальным системам, что приводит к генерации более правдоподобных и реалистичных вариаций параметров в синтетических лог-последовательностях. CoT Reasoning позволяет LLM «объяснить» логику генерации каждого параметра, обеспечивая тем самым более высокую степень контроля над процессом и предотвращая генерацию невозможных или нереалистичных значений.

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

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

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

Глубокое обучение и будущее обнаружения аномалий

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

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

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

Исследования показали, что разработанная система AnomalyGen демонстрирует значительное повышение точности обнаружения аномалий в реальных системах. В частности, применительно к HDFS (Hadoop Distributed File System) зафиксировано увеличение показателя F1 на 15.2%, а в системе Zookeeper — на 13.0%. Данный прирост точности указывает на эффективность предложенного подхода к генерации расширенных наборов данных и его способность существенно улучшать производительность алгоритмов глубокого обучения при выявлении нештатных ситуаций, что открывает новые возможности для повышения надежности и стабильности IT-инфраструктуры.

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

Наблюдается закономерность: стремление к идеальному покрытию тестовыми случаями, как и в случае с AnomalyGen, всегда натыкается на реальность. Авторы пытаются восполнить пробелы в данных для обнаружения аномалий, генерируя логи на основе анализа исходного кода. Это напоминает попытку задокументировать все возможные граничные случаи, прежде чем система отправится в продакшен. Как метко заметил Роберт Тарьян: «Программирование — это искусство объяснять компьютеру, как делать вещи, которые он сам бы никогда не стал делать». И в этом вся суть: мы создаем всё более сложные системы, а потом удивляемся, когда они падают не там, где ожидалось. Данная работа, с её упором на генерацию данных, лишь подтверждает, что даже самые элегантные алгоритмы нуждаются в достаточном количестве примеров, чтобы выжить в дикой природе продакшена.

Что Дальше?

Представленный подход, безусловно, добавляет ещё один слой сложности в бесконечную гонку между генерацией логов и их анализом. Однако, не стоит обольщаться — каждое «реалистичное» отклонение, сгенерированное моделью, лишь отодвигает момент, когда на продакшене возникнет нечто принципиально новое и непредсказуемое. Ведь код, как известно, всегда найдёт способ обмануть даже самую изощрённую статистику.

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

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


Оригинал статьи: https://arxiv.org/pdf/2604.11107.pdf

Связаться с автором: https://www.linkedin.com/in/avetisyan/

Смотрите также:

2026-04-14 17:57