Azure Monitor 中数据收集规则的结构

数据收集规则 (DCR) 是一组说明,用于确定如何收集和处理发送到 Azure Monitor 的遥测数据。 某些 DCR 将由 Azure Monitor 创建和管理。 本文介绍在需要直接使用 DCR 的情况下,用于创建和编辑 DCR 的 JSON 结构。

属性

下表描述了 DCR 顶层的属性。

properties 说明
description 用户定义的数据收集规则的可选说明。
dataCollectionEndpointId DCR 使用的数据收集终结点 (DCE) 的资源 ID(如果你在创建 DCR 时提供 ID)。 不使用 DCE 的 DCR 中不存在此属性。
endpoints1 包含 DCR 终结点的 logsIngestionmetricsIngestion URL。 只有当 DCR 中的 kind 特性为 Direct 时,创建 DCR 时才会自动创建此部分及其属性。
immutableId 数据收集规则的唯一标识符。 创建 DCR 时,会自动创建此属性及其值。
kind 指定 DCR 用于的数据收集方案。 下面进一步介绍了此参数。

1此属性不是为 2024 年 3 月 31 日之前创建的 DCR 创建的。 在此日期之前创建的 DCR 需要 数据收集终结点 (DCE) 和要指定的 dataCollectionEndpointId 属性。 如果要使用这些嵌入式 DCE,则必须创建新的 DCR。

种类

DCR 中的 kind 属性指定了 DCR 用于的集合的类型。 每种 DCR 具有不同的结构和属性。

下表列出了不同类型的 DCR 及其详细信息。

种类 说明
Direct 通过日志引入 API 直接引入。 仅当使用此种类值时,才会为 DCR 创建终结点。
AgentDirectToStore 将收集的数据发送到 Azure 存储和事件中心。
AgentSettings 配置 Azure Monitor 代理参数。
Linux 从 Linux 计算机收集事件和性能数据。
PlatformTelemetry 导出平台指标。
Windows 从 Windows 计算机收集事件和性能数据。
WorkspaceTransforms 工作区转换 DCR。 此 DCR 不包括输入流。

DCR 数据流概述

DCR 的基本流如下图所示。 后续部分将介绍其中的每个组件。

说明 DCR 不同部分之间的关系的图示。

输入流

DCR 的输入流部分定义了正在收集的传入数据。 有两种类型的传入流,具体取决于特定的数据收集方案。 大多数数据收集方案使用其中一个输入流,而有些方案可能同时使用这两种类型。

注意

工作区转换 DCR 没有输入流。

输入流 说明
dataSources 没有输入流。 这通常是由 Azure Monitor 代理处理的数据,并使用已知数据类型传送到 Azure Monitor。
streamDeclarations 需要在 DCR 中定义的自定义数据。

从日志引入 API 发送的数据使用具有传入数据的架构的 streamDeclaration。 这是因为 API 会发送可具有任何架构的自定义数据。

AMA 中的文本日志是同时需要 dataSourcesstreamDeclarations 的数据收集示例。 数据源包括配置

数据源

数据源是监视数据的唯一源,每个都具有自己的格式和数据公开方法。 每个数据源类型都有一组唯一的参数,必须为每个数据源配置这些参数。 数据源返回的数据通常是已知类型,因此不需要在 DCR 中定义架构。

例如,使用 Azure Monitor 代理 (AMA) 从 VM 收集的事件和性能数据使用 windowsEventLogsperformanceCounters 等数据源。 为要收集的事件和性能计数器指定条件,但不需要定义数据本身的结构,因为这是潜在传入数据的已知架构。

通用参数

所有数据源类型都共享下面的常见参数。

参数 说明
name 用于标识 DCR 中的数据源的名称。
streams 数据源将收集的流列表。 如果这是标准数据类型(如 Windows 事件),则流将以 Microsoft-<TableName> 的形式显示。 如果它是自定义类型,则它将采用 Custom-<TableName> 形式

有效数据源类型

下表列出了当前可用的数据源类型。

数据源类型 说明 参数
eventHub 来自 Azure 事件中心的数据。 自定义1 consumerGroup - 要从中收集的事件中心的使用者组。
iisLogs Windows 计算机的 IIS 日志 Microsoft-W3CIISLog logDirectories - 在客户端上存储 IIS 日志的目录。
logFiles 虚拟机上的文本或 json 日志 自定义1 filePatterns - 要从客户端收集日志文件的文件夹和文件模式。
format - json 或 text
performanceCounters Windows 和 Linux 虚拟机的性能计数器 Microsoft-Perf
Microsoft-InsightsMetrics
samplingFrequencyInSeconds - 应采样性能数据的频率。
counterSpecifiers - 应收集的对象和计数器。
prometheusForwarder 从 Kubernetes 群集收集的 Prometheus 数据。 Microsoft-PrometheusMetrics streams - 要收集的流
labelIncludeFilter - 作为名称-值对的标签包含筛选器列表。 目前仅支持“microsoft_metrics_include_label”。
syslog Linux 虚拟机上的 Syslog 事件 Microsoft-Syslog facilityNames - 要收集的设备
logLevels - 要收集的日志级别
windowsEventLogs 虚拟机上的 Windows 事件日志 Microsoft-Event xPathQueries - XPath,指定应收集的事件的条件。
extension Azure Monitor 代理使用的基于扩展的数据源。 因扩展而异 extensionName - 扩展的名称
extensionSettings - 扩展所需的每个设置的值

1 这些数据源同时使用数据源和流声明,因为它们收集的数据架构可能有所不同。 数据源中使用的流应该是流声明中定义的自定义流。

流声明

向 Log Analytics 工作区发送不同类型的数据的声明。 每个流都是一个对象,其键表示流名称,该名称必须以 Custom- 开头。 流包含要发送的 JSON 数据中包含的顶级属性的完整列表。 发送到终结点的数据的形状不需要与目标表的形状匹配。 但是,输入数据之上的转换输出需要与目标形状匹配。

数据类型

可以分配给属性的可能数据类型包括:

  • string
  • int
  • long
  • real
  • boolean
  • dynamic
  • datetime

目标

destinations 部分包含要发送数据的每个目标的条目。 这些目标与 dataFlows 部分中的输入流匹配。

通用参数

参数 说明
name 用于标识 dataSources 部分中的目标的名称。

有效目标

下表列出了当前可用的目标。

目标 说明 必需的参数
logAnalytics Log Analytics 工作区 workspaceResourceId - 工作区的资源 ID。
workspaceID - 工作区的 ID

这仅指定工作区,而不是要在其中发送数据的表。 如果它是已知的目标,则无需指定任何表。 对于自定义表,表在数据源中指定。
azureMonitorMetrics Azure Monitor 指标 不需要配置,因为订阅只有一个指标存储。
storageTablesDirect Azure 表存储 storageAccountResourceId - 存储帐户的资源 ID
tableName - 表的名称
storageBlobsDirect Azure Blob 存储 storageAccountResourceId - 存储帐户的资源 ID
containerName - Blob 容器的名称
eventHubsDirect 事件中心 eventHubsDirect - 事件中心的资源 ID。

重要

一个流只能发送到 DCR 中的一个 Log Analytics 工作区。 如果单个流使用同一工作区中的不同表,则可以有多个 dataFlow 条目。 如果需要将数据发送到多个 Log Analytics 工作区,请为每个工作区创建单独的 DCR。

数据流

数据流将输入流与目标相匹配。 每个数据源可以选择性地指定转换,在某些情况下会在 Log Analytics 工作区中指定特定表。

数据流属性

部分 说明
streams 输入流部分中定义的一个或多个流。 如果要将多个数据源发送到同一目标,可以在单个数据流中包含多个流。 不过,仅当数据流包含转换时,才使用单个流。 如果你要将特定数据源发送到同一 Log Analytics 工作区中的多个表,则多个数据流也可以使用一个流。
destinations 上述 destinations 部分中的一个或多个目标。 多宿主方案允许多个目标。
transformKql 应用于传入流的可选转换。 转换必须了解目标表架构中传入数据和输出数据的架构。 如果使用转换,数据流应仅使用单个流。
outputStream 描述在要将数据发送到 destination 属性下指定的工作区中的哪个表。 数据被引入到标准表中时,outputStream 的值采用 Microsoft-[tableName] 格式;将数据引入自定义表时采用 Custom-[tableName] 格式。 每个流只允许有一个目标。

此属性不用于 Azure Monitor 中的已知数据源,例如事件和性能数据,因为这些数据源会发送到预定义表。

后续步骤

数据收集规则以及创建这些规则的方法的概述