Azure Monitor 中的转换会在将传入数据发送到 Log Analytics 工作区之前,对其进行筛选或修改。 转换在数据源提供数据之后、发送到目标端之前执行。 它们在 数据收集规则(DCR)中定义。
标准转换使用 Kusto 查询语言 (KQL) 语句,该语句会分别应用于传入的数据中的每个条目。
下图演示了传入数据的转换过程,并显示了可能使用的示例查询。 在此示例中,仅收集message列包含单词error的记录。
受支持的表
在 Log Analytics 工作区中,以下表支持转换。
- Azure Monitor 日志中支持转换的表中列出的任何 Azure 表。 Azure Monitor数据引用还包括表是否支持转换并列出每个表的其他属性。
- 为 Azure Monitor 代理创建的任意自定义表。
创建转换
某些数据收集方案支持通过 Azure 门户添加转换,但大多数方案需要使用其 JSON 定义创建新的 DCR 或向现有 DCR 添加转换。 有关不同选项,请参阅在 Azure Monitor 中创建转换;有关常见方案的示例转换查询,请参阅Azure Monitor 中转换的最佳做法和示例。
工作区改造 DCR
转换在数据收集规则 (DCR) 中定义,但 Azure Monitor 中仍有尚未使用 DCR 来收集数据的情况。 示例包括 诊断设置 收集的资源日志和 Application Insights 收集的应用程序数据。
工作区转换数据收集规则 (DCR)是直接应用于 Log Analytics 工作区的特殊DCR。 此 DCR 的目的是对那些尚未使用 DCR 进行数据收集的数据执行 转换,因此无法定义转换的手段。
每个工作区只能有一个工作区 DCR,但可以为支持转换的任意数量表添加转换。 这些转换应用于发送到这些表的任何数据,除非该数据来自另一 DCR。
例如,事件表用于存储来自 Windows 虚拟机的事件。 如果在工作区转换 DCR 中为事件表创建转换,转换将应用于运行 Log Analytics 代理1 的虚拟机收集的事件,因为此代理不使用 DCR。 但从 Azure Monitor 代理 (AMA) 发送的任何数据都会忽略转换,因为此代理使用 DCR 来定义数据收集。 你仍然可以将转换与 Azure Monitor 代理配合使用,但应将转换添加到与此代理关联的 DCR 中,而不是工作区转换 DCR。
1 Log Analytics 代理已被弃用,但某些环境仍可能使用它。 这只是一个不使用 DCR 的数据源示例。
转换的成本
处理 Azure Monitor 云管道中的日志(转换和筛选)会产生不同的计费影响,具体取决于在 Log Analytics 工作区中引入数据的表类型。
分析功能或基本日志
对于 Analytics 或基本日志,转换本身通常不会产生任何费用,但以下方案可能会导致额外费用:
- 如果转换增加传入数据的大小,例如通过添加计算列,系统会为额外数据收取标准引入费率。
- 如果转换将引入数据减少了 50% 以上,则需要为超过 50% 的筛选数据量付费。
若要计算转换产生的数据处理费用,请使用以下公式:
[由转换导致丢失的 GB 数据] - ([GB 传入数据大小] / 2)。
下表显示了示例。
| 传入数据大小 | 经转换而丢失或添加的数据 | 作为分析或基础日志表导入到 Log Analytics 工作区的数据 | 数据处理可计费 GB | 数据摄入计费 GB |
|---|---|---|---|---|
| 20 GB | 丢失 12 GB | 8 GB | 2 GB | 8 GB |
| 20 GB | 减少 8 GB | 12 GB | 0 GB | 12 GB |
| 20 GB | 增加了 4 GB的内存 | 24 GB | 0 GB | 24 GB |
为了避免产生此费用,应在应用转换之前使用替代方法筛选引入的数据。 通过这样做,可以减少转换处理的数据量,从而最大限度地减少任何额外的成本。
有关日志处理和日志数据引入的定价,请参阅 Azure Monitor 定价 。
重要
如果为 Log Analytics 工作区启用了 Microsoft Sentinel,无论筛选出的数据量多少,转换为 Analytics 表格都不收取任何成本。
后续步骤
- 阅读有关数据收集规则 (DCR) 的详细信息。
- 在Azure Monitor中创建转换。
- 完整的 JSON 架构(包括多阶段部分
transformations。 - 创建工作区转换 DCR,用于未通过 DCR 收集的数据。