教程:使用 Azure 门户添加工作区转换

本教程介绍如何使用 Azure 门户在工作区数据收集规则(DCR)中配置示例转换。 Azure Monitor 转换会在将传入的数据发送到目标位置之前,对其进行筛选或修改。 工作区转换可为尚未使用Azure Monitor 数据引入管道的工作流提供引入时转换。

工作区转换统一存储在该工作区的单个 DCR 中,称为工作区转换 DCR。 每个转换都与特定表相关联,该转换适用于从不使用 DCR 的任何工作流发送到该表的所有数据。

注意

本教程使用 Azure 门户来配置工作区转换。 有关使用 Azure 资源管理器模板和 REST API 的同一教程,请参阅教程:使用资源管理器模板将工作区数据收集规则中的转换添加到 Azure Monitor

在本教程中,你将了解如何执行以下操作:

  • 为 Log Analytics 工作区中的表配置工作区转换
  • 为工作区转换编写日志查询。

先决条件

要完成本教程,需要:

工作区转换概述

在本教程中,通过筛选出某些记录来减少表的 LAQueryLogs 存储要求。 还可以删除列的内容,同时分析列数据以在自定义列中存储一段数据。 LAQueryLogs 表是在工作区中启用日志查询审核时创建的。 使用相同的基本过程为Log Analytics工作区中的任何受支持的表创建转换。

本教程使用 Azure 门户,该门户提供了一个向导来指导你创建引入时间转换。 完成这些步骤后,向导将:

  • 使用查询中的任何其他列更新表架构。
  • 创建一个工作区转换 DCR(名称由您提供),如果尚未有 DCR 链接到该工作区,则将其链接到该工作区。
  • 创建一个引入时转换,并将其添加到 DCR 中。

启用查询审核日志

为您的工作区启用查询审计,以创建本教程中要使用的LAQueryLogs表。 并非所有摄取时转换都需要此步骤。 它仅生成此处使用的示例数据。

  1. 在 Azure 门户中的“Log Analytics 工作区”菜单中,选择“诊断设置”“添加诊断设置”。

    显示诊断设置的屏幕截图。

  2. 为诊断设置输入一个名称。 选择工作区,以便审核数据存储在同一工作区中。 选择“审核”类别,然后选择“保存”以保存诊断设置并关闭“诊断设置”页。

    显示新诊断设置的屏幕截图。

  3. 选择日志,然后运行一些查询,向填充一些数据。 这些查询不需要返回要添加到审核日志中的数据。

    显示示例日志查询的屏幕截图。

向表中添加转换

创建该表后,为其创建转换。

  1. 在 Azure 门户中的“Log Analytics 工作区”菜单中,选择“表”。 找到 LAQueryLogs 表,然后选择“创建转换”。

    显示创建新转换的屏幕截图。

  2. 由于此转换是工作区中的第一个转换,因此必须创建工作区转换 DCR。 如果为同一工作区中的其他表创建转换,请将它们存储在同一 DCR 中。 选择“创建新的数据收集规则”。 已经为工作区填充了 订阅资源组。 输入 DCR 的名称,然后选择“完成”。

    显示创建新数据收集规则的屏幕截图。

  3. 选择“下一步”以查看表中的示例数据。 定义转换时,结果将应用于示例数据。 此行为允许在将转换应用到实际数据之前评估结果。 选择“转换编辑器”以定义转换。

    显示日志表中示例数据的屏幕截图。

  4. 在转换编辑器中,检查在数据导入表之前应用于该数据的转换。 传入数据由名为 source 的虚拟表表示,该虚拟表具有与目标表本身相同的列集。 转换最初包含一个简单的查询,该查询返回没有任何更改的 source 表。

  5. 将查询修改为以下示例:

    source
    | where QueryText !contains 'LAQueryLogs'
    | extend Context = parse_json(RequestContext)
    | extend Workspace_CF = tostring(Context['workspaces'][0])
    | project-away RequestContext, Context
    

    此修改做出以下更改:

    • 它删除了与查询 LAQueryLogs 表本身以节省空间相关的行,因为这些日志条目不起作用。
    • 它为所查询的工作区的名称添加一列。
    • 它会从 RequestContext 列中删除数据以节省空间。

    注意

    通过使用Azure门户,转换的输出会根据需要启动对表架构的更改。 如果这些列尚不存在,门户会添加相应的列,使其与转换输出匹配。 确保输出不包含任何不想添加到表中的列。 如果输出不包含表中已有的列,则不会删除这些列,但不会添加数据。

    添加到内置表中的任何自定义列必须以 _CF 结尾。 添加到自定义表中的列不需要有此后缀。 自定义表的名称以 _CL 结尾。

  6. 将查询复制到转换编辑器中,然后选择“运行”查看示例数据的结果。 确认查询中包含新的 Workspace_CF 列。

    显示转换编辑器的屏幕截图。

  7. 选择“应用”保存转换,然后选择“下一步”查看配置。 选择Create以使用新的转换更新 DCR。

    显示正在保存转换的屏幕截图。

测试转换。

允许转换生效大约 30 分钟,然后通过查询表对其进行测试。 仅应用转换后发送到表的数据才会反映更改。

  1. 选择 “日志 ”并运行几个示例查询,包括至少一个引用 LAQueryLogs的查询,以生成新的审核记录。

  2. 大约 30 分钟后,运行以下查询以确认转换筛选掉了引用 LAQueryLogs的记录:

    LAQueryLogs
    | where TimeGenerated > ago(30m)
    | where QueryText contains 'LAQueryLogs'
    

    查询不返回任何行,因为转换会删除包含QueryTextLAQueryLogs的每个传入记录。

  3. 运行以下查询以确认新 Workspace_CF 列存在并填充:

    LAQueryLogs
    | where TimeGenerated > ago(30m)
    | project TimeGenerated, Workspace_CF, RequestContext
    

    结果包括 Workspace_CF 列,该列包含所查询的工作区名称,而 RequestContext 列不再包含数据。

故障排除

本部分介绍你可能会遇到的不同错误情况,以及如何更正它们。

Log Analytics 中的 IntelliSense 无法识别表中的新列

用于驱动 IntelliSense 的缓存可能需要长达 24 小时的时间才能更新。

动态列上的转换不起作用

一个已知问题当前影响动态列。 临时的解决方法是在对动态列数据执行任何操作之前,使用 parse_json() 显式分析这些数据。