Azure Monitor 中数据收集规则的结构
数据收集规则 (DCR) 是一组说明,用于确定如何收集和处理发送到 Azure Monitor 的遥测数据。 某些 DCR 将由 Azure Monitor 创建和管理。 本文介绍在需要直接使用 DCR 的情况下,用于创建和编辑 DCR 的 JSON 结构。
- 有关使用此处所述的 JSON 的详细信息,请参阅在 Azure Monitor 中创建和编辑数据收集规则 (DCR)。
- 有关不同方案的示例 DCR,请参阅 Azure Monitor 中的示例数据收集规则 (DCR)。
属性
下表描述了 DCR 顶层的属性。
properties | 说明 |
---|---|
description |
用户定义的数据收集规则的可选说明。 |
dataCollectionEndpointId |
DCR 使用的数据收集终结点 (DCE) 的资源 ID(如果你在创建 DCR 时提供 ID)。 不使用 DCE 的 DCR 中不存在此属性。 |
endpoints 1 |
包含 DCR 终结点的 logsIngestion 和 metricsIngestion 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 没有输入流。
输入流 | 说明 |
---|---|
dataSources |
没有输入流。 这通常是由 Azure Monitor 代理处理的数据,并使用已知数据类型传送到 Azure Monitor。 |
streamDeclarations |
需要在 DCR 中定义的自定义数据。 |
从日志引入 API 发送的数据使用具有传入数据的架构的 streamDeclaration
。 这是因为 API 会发送可具有任何架构的自定义数据。
AMA 中的文本日志是同时需要 dataSources
和 streamDeclarations
的数据收集示例。 数据源包括配置
数据源
数据源是监视数据的唯一源,每个都具有自己的格式和数据公开方法。 每个数据源类型都有一组唯一的参数,必须为每个数据源配置这些参数。 数据源返回的数据通常是已知类型,因此不需要在 DCR 中定义架构。
例如,使用 Azure Monitor 代理 (AMA) 从 VM 收集的事件和性能数据使用 windowsEventLogs
和 performanceCounters
等数据源。 为要收集的事件和性能计数器指定条件,但不需要定义数据本身的结构,因为这是潜在传入数据的已知架构。
通用参数
所有数据源类型都共享下面的常见参数。
参数 | 说明 |
---|---|
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 - 存储帐户的资源 IDtableName - 表的名称 |
storageBlobsDirect |
Azure Blob 存储 | storageAccountResourceId - 存储帐户的资源 IDcontainerName - 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 中的已知数据源,例如事件和性能数据,因为这些数据源会发送到预定义表。 |