Примеры преобразований в 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])
Предупреждение
Дополнительные советы по использованию сложных команд синтаксического анализа см. в статье "Разделение больших команд синтаксического анализа".