本教程介绍如何使用 Azure 门户在工作区数据收集规则(DCR)中配置示例转换。 Azure Monitor 转换会在将传入的数据发送到目标位置之前,对其进行筛选或修改。 工作区转换可为尚未使用Azure Monitor 数据引入管道的工作流提供引入时转换。
工作区转换统一存储在该工作区的单个 DCR 中,称为工作区转换 DCR。 每个转换都与特定表相关联,该转换适用于从不使用 DCR 的任何工作流发送到该表的所有数据。
注意
本教程使用 Azure 门户来配置工作区转换。 有关使用 Azure 资源管理器模板和 REST API 的同一教程,请参阅教程:使用资源管理器模板将工作区数据收集规则中的转换添加到 Azure Monitor。
在本教程中,你将了解如何执行以下操作:
- 为 Log Analytics 工作区中的表配置工作区转换。
- 为工作区转换编写日志查询。
先决条件
要完成本教程,需要:
- Log Analytics 工作区,你在其中至少拥有参与者权限。
- 在工作区中创建 DCR 对象的权限。
- 已包含某些数据的表。
- 该表格无法关联到工作区转换 DCR。
工作区转换概述
在本教程中,通过筛选出某些记录来减少表的 LAQueryLogs 存储要求。 还可以删除列的内容,同时分析列数据以在自定义列中存储一段数据。
LAQueryLogs 表是在工作区中启用日志查询审核时创建的。 使用相同的基本过程为Log Analytics工作区中的任何受支持的表创建转换。
本教程使用 Azure 门户,该门户提供了一个向导来指导你创建引入时间转换。 完成这些步骤后,向导将:
- 使用查询中的任何其他列更新表架构。
- 创建一个工作区转换 DCR(名称由您提供),如果尚未有 DCR 链接到该工作区,则将其链接到该工作区。
- 创建一个引入时转换,并将其添加到 DCR 中。
启用查询审核日志
为您的工作区启用查询审计,以创建本教程中要使用的LAQueryLogs表。 并非所有摄取时转换都需要此步骤。 它仅生成此处使用的示例数据。
在 Azure 门户中的“Log Analytics 工作区”菜单中,选择“诊断设置”“添加诊断设置”。
为诊断设置输入一个名称。 选择工作区,以便审核数据存储在同一工作区中。 选择“审核”类别,然后选择“保存”以保存诊断设置并关闭“诊断设置”页。
选择日志,然后运行一些查询,向填充一些数据。 这些查询不需要返回要添加到审核日志中的数据。
向表中添加转换
创建该表后,为其创建转换。
在 Azure 门户中的“Log Analytics 工作区”菜单中,选择“表”。 找到
LAQueryLogs表,然后选择“创建转换”。由于此转换是工作区中的第一个转换,因此必须创建工作区转换 DCR。 如果为同一工作区中的其他表创建转换,请将它们存储在同一 DCR 中。 选择“创建新的数据收集规则”。 已经为工作区填充了 订阅 和 资源组。 输入 DCR 的名称,然后选择“完成”。
选择“下一步”以查看表中的示例数据。 定义转换时,结果将应用于示例数据。 此行为允许在将转换应用到实际数据之前评估结果。 选择“转换编辑器”以定义转换。
在转换编辑器中,检查在数据导入表之前应用于该数据的转换。 传入数据由名为
source的虚拟表表示,该虚拟表具有与目标表本身相同的列集。 转换最初包含一个简单的查询,该查询返回没有任何更改的source表。将查询修改为以下示例:
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结尾。- 它删除了与查询
将查询复制到转换编辑器中,然后选择“运行”查看示例数据的结果。 确认查询中包含新的
Workspace_CF列。选择“应用”保存转换,然后选择“下一步”查看配置。 选择Create以使用新的转换更新 DCR。
测试转换。
允许转换生效大约 30 分钟,然后通过查询表对其进行测试。 仅应用转换后发送到表的数据才会反映更改。
选择 “日志 ”并运行几个示例查询,包括至少一个引用
LAQueryLogs的查询,以生成新的审核记录。大约 30 分钟后,运行以下查询以确认转换筛选掉了引用
LAQueryLogs的记录:LAQueryLogs | where TimeGenerated > ago(30m) | where QueryText contains 'LAQueryLogs'查询不返回任何行,因为转换会删除包含
QueryTextLAQueryLogs的每个传入记录。运行以下查询以确认新
Workspace_CF列存在并填充:LAQueryLogs | where TimeGenerated > ago(30m) | project TimeGenerated, Workspace_CF, RequestContext结果包括
Workspace_CF列,该列包含所查询的工作区名称,而RequestContext列不再包含数据。
故障排除
本部分介绍你可能会遇到的不同错误情况,以及如何更正它们。
Log Analytics 中的 IntelliSense 无法识别表中的新列
用于驱动 IntelliSense 的缓存可能需要长达 24 小时的时间才能更新。
动态列上的转换不起作用
一个已知问题当前影响动态列。 临时的解决方法是在对动态列数据执行任何操作之前,使用 parse_json() 显式分析这些数据。