教程:使用 Azure 门户在工作区数据收集规则中添加转换

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

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

注意

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

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

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

先决条件

要完成本教程,需要:

教程概述

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

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

  • 使用查询中的任何其他列更新表架构。
  • 创建一个 WorkspaceTransforms DCR,如果默认 DCR 尚未链接到工作区,则将其链接到工作区。
  • 创建一个引入时间转换,并将其添加到 DCR 中。

启用查询审核日志

需要为你的工作区启用查询审核,以创建你将使用的LAQueryLogs表。 此步骤不是所有引入时间转换所必需的。 它只是为了生成我们将要使用的示例数据。

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

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

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

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

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

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

向表中添加转换

现在已创建了表,可以为它创建转换了。

  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. 选择“应用”保存转换,然后选择“下一步”查看配置。 选择“创建”以使用新的转换更新 DCR。

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

测试转换。

大约 30 分钟后,转换才会生效,然后便可通过对表运行查询来对测试转换。 只有应用转换后发送到表的数据才会受到影响。

对于本教程,请运行一些示例查询,将数据发送到LAQueryLogs表。 包括一些对 LAQueryLogs 的查询,使你可以验证转换是否筛选这些记录。 请注意,输出包含新的 Workspace_CF 列,并且没有 LAQueryLogs 的记录。

疑难解答

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

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

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

动态列上的转换不起作用

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

后续步骤