你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过数据收集规则进行指标导出(预览版)

数据收集规则 (DCR) 用于从 Azure 资源收集监视数据。 有关数据收集方案的列表,请参阅数据收集规则 - 概述。 现在可以使用 DCR 来收集和导出平台指标。

目前,可以使用 DCR 和诊断设置来收集平台指标。 越来越多的资源支持使用 DCR 进行指标导出。 请参阅支持的资源和区域获取支持资源的列表。

与使用诊断设置相比,使用 DCR 导出指标可获得以下优势:

  • DCR 配置支持导出带有维度的指标。
  • DCR 配置支持根据指标名称进行筛选 - 因此可以仅导出所需的指标。
  • 与诊断设置相比,DCR 更加灵活且可缩放。
  • DCR 的端到端延迟不超过 3 分钟。 与指标导出延迟为 6-10 分钟的诊断设置相比,这有了重大改进。

通过 DCR 使用指标导出来连续导出指标数据。 要查询历史数据,请使用数据平面指标批处理 API。 要比较这两项服务,请参阅数据平面指标批处理 API 查询与指标导出的比较

使用 REST API、Azure CLI 或 Azure PowerShell 为指标创建 DCR。 有关如何为指标导出创建 DCR 的信息,请参阅为指标创建数据收集规则

创建 DCR 时,必须创建数据收集规则关联 (DCRA),以将 DCR 与要监视的资源相关联。 可为多种资源类型创建单个 DCR。 有关如何创建 DCRA 的信息,请参阅创建数据收集规则关联。 使用 Azure 门户时,会自动创建 DCRA。

注意

可以同时使用 DCR 和诊断设置。 建议在使用 DCR 时禁用指标的诊断设置,以避免收集重复数据。

导出目标

对于每个 DCR,可以将指标导出到以下目标之一:

  • Log Analytics 工作区。
    可以跨区域导出到 Log Analytics 工作区。 Log Analytics 工作区和 DCR 必须位于同一区域,但受监视的资源可以位于任何区域。 发送到 Log Analytics 工作区的指标存储在 AzureMetricsV2 表中。

  • Azure 存储帐户。
    存储帐户、DCR 和受监视的资源必须位于同一区域。

  • 事件中心。
    事件中心、DCR 和受监视的资源必须位于同一区域。

有关每个目标中的数据示例,请参阅导出的数据

注意

导出指标的延迟大约为 3 分钟。 完成初始设置后,经过最长 15 分钟,指标就会开始出现在目标中。

限制

用于指标导出的 DCR 存在以下限制:

  • 对于每个 DCR,只能指定一种目标类型。
  • 最多可以将 5 个 DCR 与单个 Azure 资源相关联。

支持的资源和区域

以下资源支持使用数据收集规则进行指标导出:

资源类型 流规范
虚拟机规模集 Microsoft.compute/virtualmachinescalesets
虚拟机 Microsoft.compute/virtualmachines
Redis 缓存 Microsoft.cache/redis
IOT 中心 Microsoft.devices/iothubs
Key Vault Microsoft.keyvault/vaults
存储帐户 Microsoft.storage/storageaccounts
Microsoft.storage/Storageaccounts/blobservices
Microsoft.storage/storageaccounts/fileservices
Microsoft.storage/storageaccounts/queueservices
Microsoft.storage/storageaccounts/tableservices
SQL Server Microsoft.sql/servers
Microsoft.sql/servers/databases
操作见解 Microsoft.operationalinsights/workspaces
媒体服务 Microsoft.media/mediaservices
Microsoft.media/mediaservices/streamingendpoints
Microsoft.media/mediaservices/liveevents
数据保护 Microsoft.dataprotection/backupvaults
Azure Kubernetes 服务 Microsoft.ContainerService/managedClusters

支持的区域

可以在任何区域中创建用于指标导出的 DCR,但要从中导出指标的资源必须位于以下区域之一:

  • 澳大利亚东部
  • 美国中部
  • CentralUsEuap
  • 美国中南部
  • 美国东部
  • 美国东部 2
  • Eastus2Euap
  • 美国西部
  • 美国西部 2
  • 北欧
  • 西欧
  • 英国南部

DCR 规范

数据收集规则在 JSON 对象中定义。 需要提供以下属性才能创建用于指标导出的 DCR。

properties 说明
dataSources.platformTelemetry.streams 列出资源类型和指标。 指定 Metrics-Group-All 以收集资源的所有指标或指定单个指标。 格式:<resource type>:Metrics-Group-All | <metric name>
例如: Microsoft.Compute/virtualMachines:Percentage CPU
dataSources.platformTelemetry.name 数据源的名称。
destinations 指标的目标。 每个 DCR 仅支持一个目标。
有效目标类型:
storageAccounts
logAnalytics
eventHubs
dataflows.streams 要传递给目标的流列表,格式为:<resource type>:Metrics-Group-All |<metric name>
例如,Microsoft.Compute/virtualMachines:Percentage CPU"
dataflows.destinations 根据 destinations 属性中的定义将流传递到的目标。
identity.type 用于 DCR 的标识类型。 对于存储帐户目标是必需的。
有效值:
systemAssigned
userAssigned
kind 数据收集规则的类型。 设置为指标导出的 PlatformTelemetry
location DCR 的位置。

注意

对于每个 DCR,只能指定一种目标类型。

指标导出 DCR 的 JSON 格式

使用以下通用 JSON 对象中的格式为指标导出创建 DCR。 复制示例时请删除不需要的目标。

{
    "properties": {
        "dataSources": {
            "platformTelemetry": [
                {
                    "streams": [
                    // a list of resource types and metrics to collect metrics from
                        "<resourcetype>:<metric name> | Metrics-Group-All", 
                        "<resourcetype>:<metric name> | Metrics-Group-All"
                    ],
                    "name": "<data sources name>"
                }
            ]
        },
        "destinations": {
            // Choose a single destination type of either logAnalytics, storageAccounts, or eventHubs
            "logAnalytics": [
                {
                    "workspaceResourceId": "workspace Id",
                    "name": "<destination name>"
                }
            ],    
            "storageAccounts": [
                {
                    "storageAccountResourceId": "<storage account Id>", 
                    "containerName": "<container name>",
                    "name": "<destination name>"
                }
            ],
            "eventHubs": [ 
                 { 
                    "eventHubResourceId": "event hub id", 
                     "name": "<destination name>" 
                 } 
             ],     },
        "dataFlows": [
            {
                "streams": [
                 // a list of resource types and metrics to pass to the destination
                        "<resourcetype>:<metric name> | Metrics-Group-All", 
                        "<resourcetype>:<metric name> | Metrics-Group-All"               
                         ],
                "destinations": [
                    "<destination name>"               
                ]
            }
        ]
    },
    // identity is required for Storage Account and Event Hubs destinations
    "identity": {
         "type": "userassigned", 
         "userAssignedIdentities": { 
					 "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DRCIdentity": {} 
         }    
    },
"kind": "PlatformTelemetry",
    "location": "eastus"
}

注意

使用 CLI 创建用于指标导出的 DCR 时,kindlocationidentity 将作为参数传递,必须将其从 JSON 对象中删除。

用户和系统分配的标识

创建 DCR 时,支持用户和系统分配的标识。 存储帐户和事件中心目标需要标识。 可以使用系统分配或用户分配的标识。 有关详细信息,请参阅将 Azure 角色分配给托管标识

若要使用系统分配的标识,请如下所示添加 identity 对象:

    "identity": {
         "type": "systemAssigned"
    },

若要使用用户分配的标识,请如下所示添加 identity 对象:

    "identity": {
         "type": "userassigned", 

         "userAssignedIdentities": { 
           "/subscriptions/<subscriptionId>/resourceGroups/<resource group name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity name>": {} 
         }    

    }

筛选指标

指定要导出的指标时,可以按名称筛选指标,也可以使用 Metrics-Group-All 请求所有指标。 有关受支持指标的列表,请参阅按资源类型列出的受支持指标和日志类别

要指定同一资源类型的多个指标,请为每个指标创建单独的流项。

以下示例演示了如何按名称筛选指标。

{
    "properties": {
        "dataSources": {
            "platformTelemetry": [
                {
                    "streams": [
                        "Microsoft.Compute/virtualMachines:Percentage CPU",
                        "Microsoft.Compute/virtualMachines:Disk Read Bytes",
                        "Microsoft.Compute/virtualMachines:Inbound Flows",  
                        "Microsoft.Compute/virtualMachineScaleSets:Percentage CPU",
                        "Microsoft.Cache/redis:Cache Hits"
                    ],
                    "name": "myPlatformTelemetryDataSource"
                }
            ]
        },
        "destinations": {
            "logAnalytics": [
                {
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/arg-001/providers/microsoft.operationalinsights/workspaces/loganalyticsworkspace001",
                    "name": "destinationName"
                }
            ]
        },
        "dataFlows": [
            {
                "streams": [
                    "Microsoft.Compute/virtualMachines:Percentage CPU",
                    "Microsoft.Compute/virtualMachines:Disk Read Bytes",
                    "Microsoft.Compute/virtualMachines:Inbound Flows",
                    "Microsoft.Compute/virtualMachineScaleSets:Percentage CPU",
                    "Microsoft.Cache/redis:Cache Hits"
                ],
                "destinations": [
                    "destinationName"
                ]
            }
        ]
    },
    "kind": "PlatformTelemetry",
    "location": "eastus"
}

示例指标导出 JSON 对象

以下示例演示了每种目标类型的指标导出的示例 DCR JSON 对象。

Log Analytics 工作区

以下示例演示了将虚拟机、虚拟机规模集中的特定指标和所有密钥保管库指标发送到 Log Analytics 工作区的指标数据收集规则:

{
    "properties": {
        "dataSources": {
            "platformTelemetry": [
                {
                    "streams": [
                        "Microsoft.Compute/virtualMachines:Percentage CPU",
                        "Microsoft.Compute/virtualMachines:Disk Read Bytes",
                        "Microsoft.Compute/virtualMachines:Inbound Flows",
                        "Microsoft.Compute/virtualMachineScaleSets:Available Memory Bytes",
                         "Microsoft.KeyVault/vaults:Metrics-Group-All"
                    ],
                    "name": "myPlatformTelemetryDataSource"
                }
            ]
        },
        "destinations": {
            "logAnalytics": [ 
                { 
                    "workspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/microsoft.operationalinsights/workspaces/laworkspace001", 
                    "name": "ladestination" 
                } 
            ] 
        },
        "dataFlows": [
            {
                "streams": [
                        "Microsoft.Compute/virtualMachines:Percentage CPU",
                        "Microsoft.Compute/virtualMachines:Disk Read Bytes",
                        "Microsoft.Compute/virtualMachines:Inbound Flows",
                        "Microsoft.Compute/virtualMachineScaleSets:Available Memory Bytes",
                        "Microsoft.KeyVault/vaults:Metrics-Group-All"
                        ],    
                "destinations": [
                    "ladestination"
                    
                ]
            }
        ]
    },

"kind": "PlatformTelemetry",
    "location": "centralus"
}

创建用于指标导出的 DCR

使用 Azure 门户、CLI、PowerShell、REST API 或 ARM 模板创建用于指标导出的 DCR。 有关详细信息,请参阅在 Azure Monitor 中创建和编辑数据收集规则 (DCR) 和关联

导出的数据

以下示例演示了导出到每个目标的数据。

Log Analytics 工作区

导出到 Log Analytics 工作区的数据按以下格式存储在 Log Analytics 工作区的 AzureMetricsV2 表中:

类型​​ 描述
平均值 real 在时间范围内收集的平均值。
_BilledSize real 记录大小(字节)
计数 real 该时间范围内收集的样本数量。
维度 动态 JSON 格式的指标关联维度。
_IsBillable string 指定引入数据是否计费。 当 _IsBillable 为 false 时,不会向 Azure 帐户计收引入费
最大 real 在时间范围内收集的最大值。
MetricCategory string 指标的类别名称。
MetricName string 指标的显示名称。
MetricResourceType string 报告指标的 Azure 资源的资源类型。
最低配置 real 在时间范围内收集的最小值。
_ResourceId 字符串 与记录关联的资源的唯一标识符
SourceSystem string 收集事件的代理的类型。 例如,适用于 Windows 代理的 OpsManager、直接连接或 Operations Manager、适用于所有 Linux 代理的 Linux 或适用于 Azure 诊断的 Azure
_SubscriptionId 字符串 与记录关联的订阅的唯一标识符
TenantId string Log Analytics 工作区 ID
TimeGenerated datetime 生成记录时的时间戳 (UTC)。
TimeGrain string 指标的时间粒度。
总计 real 时间范围内所有值的总和。
类型 字符串 表的名称
UnitName string 指标的单位。

例如:

AzureMetricsV2 表的 Log Analytics 查询的屏幕截图。

存储帐户

以下示例演示了导出到存储帐户的数据:

{
    "Average": "31.5",
    "Count": "2",
    "Maximum": "52",
    "Minimum": "11",
    "Total": "63",
    "resourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-dcrs/providers/microsoft.keyvault/vaults/dcr-vault",
    "time": "2024-08-20T14:13:00.0000000Z",
    "unit": "MilliSeconds",
    "metricName": "ServiceApiLatency",
    "timeGrain": "PT1M",
    "dimension": {
        "ActivityName": "vaultget",
        "ActivityType": "vault",
        "StatusCode": "200",
        "StatusCodeClass": "2xx"
    }
}

事件中心

以下示例演示了导出到事件中心的指标。

    {
      "Average": "1",
      "Count": "1",
      "Maximum": "1",
      "Minimum": "1",
      "Total": "1",
      "resourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-dcrs/providers/microsoft.keyvault/vaults/dcr-vault",
      "time": "2024-08-22T13:43:00.0000000Z",
      "unit": "Count",
      "metricName": "ServiceApiHit",
      "timeGrain": "PT1M",
      "dimension": {
        "ActivityName": "keycreate",
        "ActivityType": "key"
      },
      "EventProcessedUtcTime": "2024-08-22T13:49:17.1233030Z",
      "PartitionId": 0,
      "EventEnqueuedUtcTime": "2024-08-22T13:46:04.5570000Z"
    }

后续步骤