Поделиться через


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

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

Замечание

Если вы не знакомы с KQL или созданием запросов журналов для данных Azure Monitor, начните с обзора Log Analytics в Azure Monitor и запросов журналов в Azure Monitor.

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

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

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

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

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

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

Замечание

Примеры и сценарии сбора данных в Azure Monitor см. в примерах и сценариях сбора данных для различных сценариев.

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

Перед созданием или изменением DCR, который будет включать преобразование, необходимо создать и проверить запрос преобразования. Обычно это можно сделать, выполнив тестовые запросы к существующим данным или тестируемым данным. Когда вы получите нужные результаты, вы можете заменить имя source таблицы и вставить его в DCR, как описано ниже в разделе "Добавление преобразования в DCR".

Это важно

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

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

Syslog | where SeverityLevel != 'info'

Вы можете вставить этот запрос в ваш DCR, а затем изменить название таблицы на source.

source | where SeverityLevel != 'info'

Используйте одну из следующих стратегий для использования данных для тестирования запроса.

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

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

После создания запроса преобразования его можно добавить в DCR. Используйте руководство по созданию и изменению правил сбора данных (DCR) в Azure Monitor , чтобы создать или изменить DCR с помощью сведений в этом разделе, чтобы включить запрос преобразования в определение DCR.

Замечание

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

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

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

Это важно

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

В следующем примере нет 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" 
        ] 
    } 
] 

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

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

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

Замечание

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

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

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

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

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

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

  3. Нажмите "Далее", чтобы просмотреть примеры данных из таблицы. Щелкните Редактор преобразований, чтобы определить запрос преобразования.

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

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

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

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

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

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

Это важно

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

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

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

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

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

Руководство

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

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

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

  • Не все таблицы в рабочей области Log Analytics поддерживают преобразования. Сведения о таблицах, поддерживающих преобразования в журналах Azure Monitor , см. в списке поддерживаемых таблиц.
  • Не все операторы KQL поддерживаются в запросах преобразования. Сведения о поддерживаемых функциях KQL см. в преобразованиях Azure Monitor.
  • Хотя преобразование может отправлять один источник данных в несколько таблиц, он не может отправлять данные в несколько рабочих областей. Чтобы отправить данные из одного источника данных в несколько рабочих областей, создайте несколько правил сбора данных (DCRs).
  • Преобразование рабочей области DCR не может отправлять один источник данных нескольким таблицам, так как преобразование применяется к самой таблице.
  • Преобразования в DCR рабочей области применяются ко всем данным, отправленным в таблицу, независимо от источника данных. Если необходимо применить различные преобразования к разным источникам данных, используйте where инструкцию в запросе преобразования, чтобы применить другую логику к данным из разных источников.

Дальнейшие действия