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


Примеры преобразований в Azure Monitor

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

Сокращение расходов на данные

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

Фильтрация строк данных

Используйте инструкцию where для фильтрации входящих данных, которые соответствуют определенным требованиям. Если входящие записи не соответствуют инструкции, запись не отправляется в место назначения. В следующем примере собираются только записи с серьезностью Critical .

source | where severity == "Critical" 

Фильтрация столбцов данных

Удалите столбцы из источника данных, которые не требуются для экономии затрат на прием данных. Используйте инструкцию project , чтобы указать столбцы в выходных данных или project-away указать только столбцы для удаления. В следующем примере RawData столбец удаляется из выходных данных.

source | project-away RawData

Анализ важных данных из столбца

Возможно, у вас есть столбец с важными данными, похороненными в чрезмерном тексте. Сохраните только ценные данные и удалите текст, который не нужен. Используйте такие строковые функции , как substring и extract для анализа нужных данных. Вы также можете проанализировать данные с помощью parse или split разбить один столбец на несколько значений и выбрать нужный. Затем используйте extend для создания нового столбца с проанализированными данными и project-away удаления исходного столбца.

Предупреждение

Дополнительные советы по использованию сложных команд синтаксического анализа см. в статье "Разделение больших команд синтаксического анализа".

В следующем примере RequestContext столбец содержит JSON с идентификатором ресурса рабочей области. split Функции parse_json используются для извлечения простого имени рабочей области. Для этого значения создается новый столбец, а другие столбцы удаляются.

source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF

Отправка строк в базовые журналы

Отправляйте строки в данных, для которых требуются базовые возможности запроса, в базовые таблицы журналов для снижения затрат на прием. Дополнительные сведения о отправке данных в несколько таблиц см. в статье "Отправка данных в несколько таблиц ".

Удаление конфиденциальных данных

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

Фильтрация конфиденциальной информации

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

source | project-away ClientIP

Скрытие конфиденциальной информации

Используйте строковые функции для замены таких сведений, как цифры в IP-адресе или номере телефона общим символом. В следующем примере имя пользователя в адресе электронной почты заменится на "*****".

source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")

Отправка в альтернативную таблицу

Отправка конфиденциальных записей в альтернативную таблицу с другой конфигурацией управления доступом на основе ролей. Дополнительные сведения о отправке данных в несколько таблиц см. в статье "Отправка данных в несколько таблиц ".

Обогащение данных

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

source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")

Форматирование данных для назначения

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

Изменение схемы

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

source | extend TimeGenerated = now()

Анализ данных

split Используйте оператор или parse для анализа данных в нескольких столбцах в целевой таблице. В следующем примере входящие данные имеют столбец RawData с разделителями-запятыми, разделенный на отдельные столбцы для целевой таблицы.

source 
| project d = split(RawData,",") 
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Предупреждение

Дополнительные советы по использованию сложных команд синтаксического анализа см. в статье "Разделение больших команд синтаксического анализа".

Следующие шаги