Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Преобразования в 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 с идентификатором ресурса рабочей области. Функции parse_json
и split
используются для извлечения простого имени рабочей области. Для этого значения создается новый столбец, а другие столбцы удаляются.
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")
Нормализация данных
Нормализуйте данные в общую схему, чтобы упростить запросы и отчеты, такие как расширенная информационная модель безопасности (ASIM), используемая Microsoft Sentinel. Используйте преобразование для нормализации данных во время приема, как описано в нормализации времени приема.
В следующем примере входящие данные преобразуются в нормализованную схему таблицы ASimAuditEventLogs .
source
| project TimeGenerated = timestamp, EventOwner=owner, EventMessage=message, EventResult=result, EventSeverity=severity
Форматирование данных для места назначения
У вас может быть источник данных, который отправляет данные в формате, который не соответствует структуре целевой таблицы. Используйте преобразование для переформатации данных в требуемую схему.
Изменение схемы
Используйте такие команды, как 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])
Предупреждение
Дополнительные советы по использованию сложных команд синтаксического анализа см. в статье "Разделение больших команд синтаксического анализа".