Настройка пользовательских оповещений на основе метрик, извлечённых из логов

Материал из Документация Ключ-АСТРОМ

Настройка пользовательских оповещений на основе метрик, извлечённых из логов

Загруженные логи могут быть триггерами для открытия новых проблем ИИ. Используя комбинацию метрик на основе логов и пользовательских оповещений, вы можете задействовать мощь различных анализаторов данных ИИ Ключ-АСТРОМ для решения задач от простого порогового оповещения до сезонных базовых линий, например:

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

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

Предварительные требования

  • Вы настроили загрузку логов.
  • Вы используете OpenPipeline.
  • У вас есть необходимые разрешения для настройки пользовательского оповещения в приложении Обнаружение аномалий.

Шаги

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

1. Найдите логи, которые должны запускать оповещения

Вы можете найти оповещения, открыв Логи и используя следующий запрос DQL.

fetch logs
| filter matchesPhrase(content, "Dropping data because sending_queue is full")
| sort timestamp desc
  • Если ваш запрос DQL использует parse, fieldsAdd или другие преобразования, вам следует добавить правило обработки, чтобы установить эти поля при загрузке.
  • Чтобы найти, какой пайплайн обрабатывает ваши логи, выберите запись лога в Логах и проверьте поле dt.openpipeline.pipelines. Используйте это значение при выборе пайплайна в настройках OpenPipeline.

2. Извлеките метрику в OpenPipeline

Добавьте конфигурацию извлечения метрики в OpenPipeline.

  • Откройте Настройки > Обработка и контекстуализация > OpenPipeline > Логи > Пайплайны.
  • Найдите пайплайн, который хотите изменить, или добавьте новый пайплайн.
  • Выберите > Редактировать. Откроется страница конфигурации пайплайна.
  • Выберите этап Извлечение метрик. Задайте Имя метрики и ID. Задайте сопоставление DQL. Сопоставление устанавливает условие для события, которое должно быть извлечено. Это подмножество условий фильтрации в одном операторе DQL. В поле Условие сопоставления используйте сопоставление, как показано ниже.
matchesPhrase(content, "Dropping data because sending_queue is full")

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

  • Добавьте измерения. Для большинства логов можно добавить автоматическую корреляцию с сущностями в анализе первопричин ИИ. Для этого добавьте измерение dt.source_entity или любое другое поле, содержащее идентификатор сущности.
  • Если вы добавили правило извлечения в существующий пайплайн, логи уже направляются туда, и дополнительная настройка не требуется. Если вы создали новый пайплайн, настройте динамический маршрут, чтобы логи достигали его.

Поля, которые вычисляются или добавляются на этапе «Обработка», не могут использоваться в условиях сопоставления динамических маршрутов, поскольку маршрутизация оценивается до «Обработки». Это включает поля, добавленные самой платформой, такие как dt.entity.service. Полный список полей с этим ограничением см. в разделе «Поля с ограничениями для всех областей конфигурации».

  • Перейдите в Настройки > Обработка и контекстуализация > OpenPipeline > Логи > Динамическая маршрутизация.
  • Выберите Динамический маршрут и задайте:
    • Имя: например, используйте Dropping data alert route.
    • Условие сопоставления: используйте то же условие, что и сопоставление метрики, чтобы маршрут сужал данные до записей, которые вы действительно хотите обработать.
matchesPhrase(content, "Dropping data because sending_queue is full")
  • Пайплайн: выберите новый пайплайн.
  • Выберите Добавить. Маршруты оцениваются сверху вниз, и побеждает первый совпавший маршрут. Если у вас есть другие маршруты, которые могут соответствовать тем же логам, разместите этот маршрут выше них.

3. Настройте пользовательское оповещение

Настройте пользовательское оповещение в приложении Обнаружение аномалий.

  • Перейдите в Обнаружение аномалий.
  • Выберите Новое оповещение > Создать собственное оповещение.
  • В поле Имя введите описательное имя для оповещения.
  • В разделе Query введите DQL-запрос, который извлекает вашу метрику лога. Например:
timeseries avg(log.dropping_data_count), by:{dt.entity.service}
  • Настройте Порог. В этом примере мы хотим оповещать, когда среднее количество совпадающих записей превышает 10 в течение 5 минут.
    • Выберите Статический порог.
    • Установите Порог в 10.
    • Установите Период наблюдения в 5 minutes.
    • Выберите условие срабатывания (например, Выше порога).
  • Настройте Свойства события. Установите следующие пары «ключ-значение»:
    • event.type: CUSTOM_ALERT
    • event.description: Log metric 'log.dropping_data_count' exceeded threshold.
    • dt.source_entity: {dt.source_entity}
  • Выберите Сохранить.

Заключение

Использование метрик на основе логов с пользовательскими оповещениями идеально подходит для порогового оповещения и обнаружения аномалий.

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

После того как вы начнёте извлекать метрики и настраивать оповещения, вы можете использовать их для запуска автоматизаций с помощью простых рабочих процессов, как описано в разделе Создание простого рабочего процесса в Workflows Ключ-АСТРОМ.