Создание преобразования в Azure Monitor

Преобразования в Azure Monitor фильтруют или изменяют входящие данные перед сохранением в рабочей области Log Analytics. Реализуйте преобразования в виде инструкции языка запросов Kusto (KQL) в правиле сбора данных (DCR). В этой статье приведены рекомендации по созданию и тестированию запроса преобразования и его добавлению в DCR.

Базовая структура запросов

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

Выходные данные запроса должны соответствовать схеме целевой таблицы со следующими рекомендациями:

  • Исключите столбцы, которые не нужны, чтобы сократить затраты. При пропуске столбца этот столбец пуст для каждой записи в целевой таблице.
  • Исключите столбцы, которые не входят в выходную таблицу. Дополнительные столбцы принимаются без ошибок, но вы платите за прием данных, которые не хранятся.
  • Укажите допустимую метку времени в столбце с именем TimeGenerated и типом datetime. Если источник данных не включает это свойство, добавьте его с помощью extend или project.

Следующее преобразование — это пример, который выполняет три функции:

  • Фильтрует входящие данные с помощью инструкции where .
  • Добавляет новый столбец Properties с помощью extend оператора с parse_json функцией для анализа значений JSON из входящего properties столбца.
  • Форматирует выходные данные преобразования, чтобы точно соответствовать столбцам целевой таблицы с помощью project оператора.
source
| where severity == "Critical" 
| extend Properties = parse_json(properties)
| project
    TimeGenerated = todatetime(["time"]),
    Category = category,
    StatusDescription = StatusDescription,
    EventName = name,
    EventId = tostring(Properties.EventId)

См. примеры и сценарии правил сбора данных (DCR) в Azure Monitor, чтобы ознакомиться с примерами для различных сценариев.

Создание запроса преобразования

Перед добавлением преобразования в DCR создайте и протестируйте запрос в Log Analytics. Когда запрос возвращает ожидаемые результаты, замените имя таблицы на source и добавьте его в DCR, как описано в разделе «Добавление преобразования в DCR».

Это важно

Преобразования не поддерживают все функции KQL. Поддерживаемые функции KQL см. в преобразованиях Azure Monitor для поддерживаемых функций и ограничений.

Стратегия тестирования преобразований Description
Запрос существующих данных. Если вы уже собираете данные, которые вы хотите преобразовать, напишите запрос к этой таблице в Log Analytics. Убедитесь, что выходные данные отображают ожидаемые фильтры или изменения, а затем скопируйте текст запроса.
Используйте образцы данных с datatable. Напишите запрос с помощью datatable оператора для создания примера набора данных, представляющего входящие данные. Проверьте выходные данные запроса, а затем скопируйте текст запроса без datatable оператора.
Создайте тестовую таблицу на портале. Create новую таблицу на портале Azure и укажите примеры данных. Используйте встроенный редактор преобразований для записи и тестирования запроса. Скопируйте текст запроса, если вы удовлетворены результатами.

Например, чтобы отфильтровать события системного журнала, начните с этого запроса в Log Analytics:

Syslog | where SeverityLevel != 'info'

Затем замените имя таблицы на source в DCR:

source | where SeverityLevel != 'info'

Добавление преобразования в DCR

После создания запроса преобразования добавьте его в DCR, выполнив следующие действия:

  1. Получите текущее определение DCR. Откройте определение DCR в пользовательском интерфейсе и выберите представление JSON или экспортируйте JSON с помощью Azure CLI:

    az monitor data-collection rule show --name {dcrName} --resource-group {resourceGroupName} > dcr.json
    

    Дополнительные сведения см. в разделе Создание и изменение правил сбора данных (DCR) в Azure Monitor.

  2. dataFlows Найдите раздел DCR. Этот раздел связывает источник данных с назначением.

  3. Добавьте свойство transformKql JSON в поток данных, который нужно преобразовать. Задайте значение запроса преобразования в одной строке. Преобразование применяется к входящему потоку перед отправкой в место назначения. Он применяется только к тому потоку данных, даже если тот же поток или назначение используется в других потоках данных.

  4. Сохраните и разверните обновленный DCR:

    az monitor data-collection rule update --name {dcrName} --resource-group {resourceGroupName} --body @dcr.json
    

    Другие методы см. в разделе Создание и изменение правил сбора данных (DCR) в Azure Monitor.

Замечание

Некоторые источники данных предоставляют метод, использующий портал Azure для добавления преобразования в DCR. Например, сбор текста из виртуальной машины позволяет указать запрос преобразования в портал Azure. Однако в настоящее время в большинстве сценариев сбора данных требуется работать непосредственно с определением DCR.

Если свойство не задано transformKql или если задано его значение source, преобразование не применяется. Входящие данные отправляются в место назначения без изменений.

Это важно

Запрос преобразования должен находиться в одной строке В DCR. Если вы создаете преобразование на портале Azure, используйте несколько строк для удобочитаемости. Портал содержит новый символ \n в запросе. Если вы редактируете JSON напрямую, удалите все новые символы и дополнительные пробелы перед сохранением.

В следующем примере нет transformKql свойства, поэтому входящие данные отправляются в место назначения без изменения.

"dataFlows": [ 
    { 
        "streams": [ 
        "Microsoft-Syslog" 
        ], 
        "destinations": [ 
        "centralWorkspace" 
        ] 
    } 
] 

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

"dataFlows": [ 
    { 
        "streams": [ 
        "Microsoft-Syslog" 
        ], 
        "transformKql": "source", 
        "destinations": [ 
        "centralWorkspace" 
        ] 
    } 
] 

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

"dataFlows": [ 
    { 
        "streams": [ 
        "Microsoft-Syslog" 
        ], 
        "transformKql": "source | where message has 'error'", 
        "destinations": [ 
        "centralWorkspace" 
        ] 
    } 
] 

Создание многоэтапного преобразования (предварительная версия)

Это важно

В настоящее время многоэтапные преобразования находятся в общедоступной предварительной версии. Ознакомьтесь с Дополнительными условиями использования для предварительных версий Microsoft Azure, чтобы узнать юридические условия, применимые к функциям Azure, которые находятся в статусе бета, предварительного просмотра или иначе еще не выпущены в общий доступ.

Многоэтапные преобразования используют раздел transformations в DCR для определения конвейеров на основе обработчиков, на которые источники данных и потоки данных ссылаются с помощью свойства transform. В отличие от одноэтапных преобразований, использующих transformKqlмногоэтапные преобразования, выполняются на стороне клиента (до выхода данных из агента) или на стороне приема (до достижения рабочей области) или обоих.

  • Преобразования на стороне клиента — выполнение на агенте до отправки данных. Эти преобразования сокращают объем данных в источнике и могут фильтровать, анализировать или дополнять данные перед передачей.
  • Преобразования на стороне приема — выполняются в службе после поступления данных, но до хранения. Эти преобразования могут применять выражения KQL и дополнительно дополнять данные.

В многоэтапном конвейере процессор — это именованный шаг обработки, который выполняется в последовательности, например фильтрация, анализ, обогащение или применение KQL. Обработчик заголовков объявляет входной формат конвейера (например, header.Syslog для данных системного журнала).

Общие сведения см. в разделе " Многоэтапные преобразования". Полный справочник по схеме см. в разделе "Структура DCR — преобразования".

Создание многоэтапного преобразования

Создайте многоэтапное преобразование с помощью портала Azure или программно.

В следующем примере создается DCR с преобразованием на стороне клиента, которое фильтрует данные системного журнала, чтобы сохранить только события проверки подлинности, и преобразование на стороне приема, которое применяет KQL к потоку перед его сохранением.

Определение DCR включает следующие ключевые разделы:

  • streamDeclarations — определяет схему пользовательских потоков, используемых между этапами обработки
  • dataSources — настраивает источник данных с помощью свойства transform, которое ссылается по имени на преобразование на стороне клиента
  • destinations — место отправки данных
  • dataFlows — сопоставляет потоки с целевыми объектами с необязательным свойством transform для обработки на стороне приема данных
  • transformations — определяет именованные конвейеры обработчика, на которые ссылаются источники данных и потоки данных.

Проверьте DCR, проверив их на портале Azure в разделе Monitor>Правила сбора данных.

  1. Перейдите к разделу "Мониторинг>правил сбора данных " и нажмите кнопку "Создать".

  2. На вкладке "Основные сведения" укажите имя правила, подписку, группу ресурсов и регион. Выберите соответствующий тип Platform (Windows, Linux или Custom).

  3. На вкладке "Ресурсы" выберите "Добавить ресурсы " и выберите виртуальные машины или другие ресурсы, которые необходимо связать с этим DCR.

  4. На вкладке "Сбор и доставка " выберите "Добавить источник данных". Выберите тип источника данных и настройте параметры сбора на вкладке источника данных .

  5. Перейдите на вкладку Destination. Выберите Log Analytics Рабочие области в качестве типа назначения и выберите рабочую область Log Analytics. Перед созданием преобразования необходимо настроить назначение.

  6. Выберите вкладку Преобразование (необязательно). На вкладке отображается визуализация конвейера, которая показывает поток от Источника данных к Преобразованию, а затем к Назначению, а также предварительный просмотр схемы внизу.

    Снимок экрана, показывающий раздел шаблона многоэтапного преобразования при создании DCR.

  7. Нажмите кнопку "+ Добавить " в разделе "Преобразование ", чтобы начать добавление процессоров. Каждый процессор выполняется в заданном порядке.

    Замечание

    Не все процессоры имеют выделенную форму пользовательского интерфейса во время предварительной версии. Для процессоров без поддержки пользовательского интерфейса используйте параметр "Неизвестный процессор ", чтобы вставить конфигурацию JSON процессора напрямую. См. структуру DCR — типы процессоров для структуры JSON каждого процессора.

  8. Выберите "Добавить источник данных ", чтобы сохранить источник данных с его преобразованием и назначением.

  9. Выберите "Проверка и создание ", чтобы проверить и развернуть DCR.

Создайте преобразование рабочей области DCR

Правило сбора данных для преобразования рабочей области (DCR) — это специальное правило DCR, которое применяется напрямую к рабочей области Log Analytics. Каждая рабочая область может иметь только один DCR для рабочей области, но он может включать преобразования для любого числа таблиц.

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

Замечание

Для активации нового запроса преобразования может потребоваться до 60 минут.

Преобразование рабочей области (DCR) можно создать на портале Azure, добавив преобразование в поддерживаемую таблицу.

  1. В меню рабочих областей Log Analytics в портале Azure выберите Таблицы. Выберите многоточие (...) справа от таблицы, которую вы хотите преобразовать, и нажмите кнопку "Создать".

    Снимок экрана, показывающий опцию создания преобразования для таблицы в портале Azure.

  2. Если DCR преобразования для этой рабочей области еще не существует, выберите вариант, чтобы создать ее. Если он уже существует, портал выбирает этот DCR. Каждая рабочая область может иметь только одно преобразование рабочей области DCR.

    Снимок экрана: создание правила сбора данных.

  3. Выберите Далее, чтобы просмотреть образцы данных из таблицы. Выберите редактор преобразования , чтобы определить запрос преобразования.

    Снимок экрана: примеры данных из таблицы журналов.

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

  5. Когда вы удовлетворены запросом, нажмите кнопку "Применить ", а затем " Далее " и "Создать ", чтобы сохранить DCR с новым преобразованием.

    Снимок экрана: сохранение преобразования.

  6. Чтобы убедиться, что преобразование активно, перейдите в Монитор>Правила сбора данных и убедитесь, что DCR преобразования рабочей области имеет состояние Успешно. Затем запросите целевую таблицу после следующего цикла приема, чтобы подтвердить применение преобразований.

Оптимизация и мониторинг преобразований

Механизмы преобразования выполняют запрос KQL для каждой записи, собранной с помощью DCR, поэтому важно, чтобы они выполнялись эффективно. Время выполнения преобразования способствует общей задержке приема данных, а преобразования, которые занимают слишком много времени для выполнения, могут повлиять на производительность сбора данных и привести к потере данных. Для выполнения оптимальных преобразований должно потребоваться не более 1 секунды. Ознакомьтесь с рекомендациями по оптимизации запросов журналов в Azure Monitor для тестирования запроса перед его реализацией в качестве преобразования и рекомендаций по оптимизации запросов, которые не выполняются эффективно.

Это важно

Если преобразование занимает более 20 секунд, может возникнуть потеря данных.

Так как преобразования не выполняются в интерактивном режиме, важно постоянно отслеживать их, чтобы убедиться, что они выполняются правильно и не занимают слишком много времени для обработки данных. Сведения о журналах и метрик, отслеживающих работоспособность и производительность преобразований, см. в статье "Мониторинг и устранение неполадок сбора данных DCR в Azure Monitor ". Это включает выявление любых ошибок, возникающих в KQL и в метриках, для отслеживания продолжительности их выполнения.

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

  • Длительность трансформации логов за минуту
  • Ошибки преобразования логов в минуту

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

Устранение неполадок с преобразованиями

В следующих таблицах перечислены распространенные ошибки преобразования и их разрешения.

Error Причина Резолюция
Несоответствие схемы Выходные данные преобразования не соответствуют столбцам целевой таблицы. Убедитесь, что выходные данные project или extend соответствуют схеме целевой таблицы. См. справочник по данным для имен столбцов и типов.
Неподдерживаемый оператор KQL Использование оператора, недоступного в преобразованиях (например, join). Сведения о поддерживаемых функциях KQL см. в списке поддерживаемых операторов.
Запрос работает в Log Analytics, но завершается сбоем при преобразовании Некоторые операторы KQL, поддерживаемые в Log Analytics, не поддерживаются в преобразованиях. Сведения о поддерживаемых функциях KQL см. в разделе "Поддерживаемые функции KQL " для подмножества операторов, доступных в преобразованиях. Протестируйте запросы только с поддерживаемыми операторами перед добавлением в DCR.
Потеря данных после преобразования Для выполнения преобразования требуется более 20 секунд. Упростите запрос KQL. Рекомендации см. в разделе Оптимизация запросов к журналам.
Преобразование не применяется Оба transformKql и transform указанные в одном потоке данных. Эти свойства являются взаимоисключающими. Используйте что-то одно из двух для каждого потока данных.
Ошибки в журналах ошибок DCR Недопустимые ошибки синтаксиса KQL или среды выполнения. Включите журналы ошибок DCR и просмотрите таблицу DCRLogErrors .
Отклонено разрешение Недостаточно разрешений для создания или изменения DCR. Убедитесь, что у вас есть роль участника мониторинга в группе ресурсов или подписке.
Процессор не распознан Недопустимое имя типа процессора (например, filter.basic вместо filter.Basic). Имена процессоров чувствительны к регистру. Допустимые имена см. в разделе Типы процессоров.
Именованное преобразование не найдено Свойство transform ссылается на имя, которое не существует в transformations разделе. Убедитесь, что значение transform в источнике данных или потоке данных в точности соответствует name в массиве transformations.
Преобразование на стороне клиента не применяется Версия агента не поддерживает многоэтапные преобразования. Обновите агент Azure Monitor до последней версии. Для многоэтапных преобразований требуется версия 2025-05-11 API или более поздняя.

Руководства по преобразованию по источнику данных

Способы создания преобразований зависят от метода сбора данных. В следующей таблице приводятся рекомендации по различным способам создания преобразований.

Сбор данных Справка
API приема журналов Отправка данных в журналы Azure Monitor с помощью REST API (портал Azure)
Отправка данных в журналы Azure Monitor с помощью REST API (шаблоны Azure Resource Manager)
Виртуальная машина с агентом Azure Monitor Добавить преобразование в журнал Azure Monitor
Кластер Kubernetes с аналитикой контейнеров Преобразования данных в аналитике контейнеров
Центры событий Azure Руководство: Получение событий из Центров событий Azure в журналы Azure Monitor (общедоступная предварительная версия)

Ограничения и рекомендации

  • Преобразования выполняются при приёме данных и увеличивают затраты на обработку данных. Однако фильтрация данных с помощью преобразований может снизить затраты на прием и хранение. Дополнительные сведения см. в разделе Оптимизация затрат и Azure Monitor.
  • Не все таблицы в рабочей области Log Analytics поддерживают преобразования. Список поддерживаемых таблиц см. в разделе Tables, которые поддерживают преобразования в журналах Azure Monitor.
  • Не все операторы KQL поддерживаются в запросах преобразования. Дополнительные сведения см. в разделе Поддерживаемые возможности KQL в преобразованиях Azure Monitor.
  • Хотя преобразование может отправлять один источник данных в несколько таблиц, он не может отправлять данные в несколько рабочих областей. Чтобы отправить данные из одного источника данных в несколько рабочих областей, создайте несколько правил сбора данных (DCRs).
  • Преобразование рабочей области DCR не может отправлять один источник данных нескольким таблицам, так как преобразование применяется к самой таблице.
  • Преобразования в DCR рабочей области применяются ко всем данным, отправленным в таблицу, независимо от источника данных. Если необходимо применить различные преобразования к разным источникам данных, используйте where инструкцию в запросе преобразования, чтобы применить другую логику к данным из разных источников.
  • Для многоэтапных преобразований transform и transformKql взаимоисключают друг друга в каждом потоке данных. DCR может смешивать потоки данных старого типа (transformKql) и нового типа (transform) в разных потоках.
  • Для многоэтапных преобразований требуется версия 2025-05-11 API или более поздняя.
  • Для данных счётчиков производительности требуются отдельные правила сбора данных (DCR) для компьютеров с Windows и Linux при использовании многоэтапных преобразований. DCR типа All не может использовать одновременно header.WindowsPerformanceCounters и header.LinuxPerformanceCounters в одном преобразовании на стороне клиента.