在 Azure 门户的“监视”菜单中,选择“数据收集规则”,然后选择“创建”。
若要创建 DCR 以收集平台指标数据,请选择页面顶部的链接。
在“创建数据收集规则”页上,输入规则名称,为该 DCR 选择一个订阅、资源组和区域。
如果要将指标发送到存储帐户或事件中心,请选择“启用托管标识”。
选择下一个
在“资源”页上,选择“添加资源”以添加要从中收集指标的资源。
选择“下一步”以前进到“收集和传递”选项卡。
选择“添加新数据集”。
将自动选择你在上一步中选择的资源的资源类型。 如果你想在将来使用此规则从多个资源类型收集指标,请添加更多资源类型。
选择“下一步: 目标”以前进到“目标”选项卡。
若要将指标发送到 Log Analytics 工作区,请从“目标类型”下拉列表中选择“Azure Monitor 日志”。
- 选择要将指标发送到的订阅和 Log Analytics 工作区。
若要将指标发送到事件中心,请从“目标类型”下拉列表中选择“事件中心”。
- 选择订阅、事件中心命名空间和事件中心实例名称。
若要将指标发送到存储帐户,请从“目标类型”下拉列表中选择“存储帐户”。
- 选择要在其中存储指标的订阅、存储帐户和 Blob 容器。
注意
若要将指标发送到存储帐户或事件中心,生成指标的资源,DCR 和存储帐户或事件中心必须全部位于同一区域中。
若要将指标发送到 Log Analytics 工作区,DCR 必须与 Log Analytics 工作区位于同一区域中。 生成指标的资源可以位于任何区域中。
若要选择存储帐户或事件中心作为目标,必须在“基本信息”选项卡上为 DCR 启用托管标识。
选择“保存”,然后选择“查看 + 创建”。
创建一个包含收集规则规范的 JSON 文件。 有关详细信息,请参阅 DCR 规范。 有关示例 JSON 文件,请参阅示例指标导出 JSON 对象。
重要
规则文件的格式与用于 PowerShell 和 REST API 的格式相同,但该文件不得包含 identity
、location
或 kind
。 这些参数是在 az monitor data-collection rule create
命令中指定的。
通过 Azure CLI 使用以下命令为指标创建数据收集规则。
az monitor data-collection rule create
--name
--resource-group
--location
--kind PlatformTelemetry
--rule-file
[--identity "{type:'SystemAssigned'}" ]
对于存储帐户和事件中心目标,必须使用 --identity "{type:'SystemAssigned'}"
为 DCR 启用托管标识。 对于 Log Analytics 工作区,标识不是必需的。
例如,
az monitor data-collection rule create
--name cli-dcr-001
--resource-group rg-001
--location centralus
--kind PlatformTelemetry
--identity "{type:'SystemAssigned'}"
--rule-file cli-dcr.json
复制 DCR 的 id
和 principalId
以用于分配角色,从而在 DCR 和资源之间创建关联。
"id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg-001/providers/Microsoft.Insights/dataCollectionRules/cli-dcr-001",
"identity": {
"principalId": "eeeeeeee-ffff-aaaa-5555-666666666666",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "systemAssigned"
},
向托管标识授予写入权限
当目标为存储帐户或事件中心时,DCR 使用的托管标识必须对目标具有写入权限。
若要为规则的托管实体授予权限,请将合适的角色分配给该实体。
下表显示了每种目标类型所需的角色。
目标类型 |
角色 |
Log Analytics 工作区 |
或 VPN |
Azure 存储帐户 |
Storage Blob Data Contributor |
事件中心 |
Azure Event Hubs Data Sender |
有关分配角色的详细信息,请参阅将 Azure 角色分配给托管标识。
若要使用 CLI 将角色分配给托管标识,请使用 az role assignment create
。 有关详细信息,请参阅角色分配 - 创建。
将合适的角色分配给 DCR 的托管标识。
az role assignment create --assignee <system assigned principal ID> \
--role <`Storage Blob Data Contributor` or `Azure Event Hubs Data Sender` \
--scope <storage account ID or eventhub ID>
以下示例将 Storage Blob Data Contributor
角色分配给存储帐户的 DCR 的托管标识。
az role assignment create --assignee eeeeeeee-ffff-aaaa-5555-666666666666 \
--role "Storage Blob Data Contributor" \
--scope /subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f/resourceGroups/ed-rg-DCRTest/providers/Microsoft.Storage/storageAccounts/metricsexport001
创建数据收集规则关联
创建数据收集规则后,创建一个数据收集规则关联 (DCRA),以将规则与要监视的资源相关联。 有关详细信息,请参阅数据收集规则关联 - 创建。
使用 az monitor data-collection rule association create
在数据收集规则与资源之间创建关联。
az monitor data-collection rule association create --name
--rule-id
--resource
下面的示例在数据收集规则与密钥保管库之间创建关联。
az monitor data-collection rule association create --name "keyValut-001" \
--rule-id "/subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f/resourceGroups/rg-dcr/providers/Microsoft.Insights/dataCollectionRules/dcr-cli-001" \
--resource "/subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f/resourceGroups/rg-dcr/providers/Microsoft.KeyVault/vaults/keyVault-001"
创建一个包含收集规则规范的 JSON 文件。 有关详细信息,请参阅 DCR 规范。 有关示例 JSON 文件,请参阅示例指标导出 JSON 对象。
通过 PowerShell 使用 New-AzDataCollectionRule
命令为指标创建数据收集规则。 有关详细信息,请参阅 New-AzDataCollectionRule。
New-AzDataCollectionRule -Name
-ResourceGroupName
-JsonFilePath
例如,
New-AzDataCollectionRule -Name dcr-powershell-hub -ResourceGroupName rg-001 -JsonFilePath dcr-storage-account.json
复制 DCR 的 id
和 IdentityPrincipalId
以用于分配角色,从而在 DCR 和资源之间创建关联。
Id : /subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f/resourceGroups/rg-001/providers/Microsoft.Insights/dataCollectionRules/dcr-powershell-hub
IdentityPrincipalId : eeeeeeee-ffff-aaaa-5555-666666666666
IdentityTenantId : 0000aaaa-11bb-cccc-dd22-eeeeee333333
IdentityType : systemAssigned
IdentityUserAssignedIdentity : {
}
向托管标识授予写入权限
当目标为存储帐户或事件中心时,DCR 使用的托管标识必须对目标具有写入权限。
若要为规则的托管实体授予权限,请将合适的角色分配给该实体。
下表显示了每种目标类型所需的角色。
目标类型 |
角色 |
Log Analytics 工作区 |
或 VPN |
Azure 存储帐户 |
Storage Blob Data Contributor |
事件中心 |
Azure Event Hubs Data Sender |
有关详细信息,请参阅将 Azure 角色分配给托管标识。
若要使用 PowerShell 将角色分配给托管标识,请参阅 New-AzRoleAssignment
使用 New-AzRoleAssignment
将合适的角色分配给 DCR 的托管标识。
New-AzRoleAssignment -ObjectId <objectId> -RoleDefinitionName <roleName> -Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
以下示例在订阅级别将 Azure Event Hubs Data Sender
角色分配给 DCR 的托管标识。
New-AzRoleAssignment -ObjectId eeeeeeee-ffff-aaaa-5555-666666666666 -RoleDefinitionName "Azure Event Hubs Data Sender" -Scope /subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f
创建数据收集规则关联
创建数据收集规则后,创建一个数据收集规则关联 (DCRA),以将规则与要监视的资源相关联。 使用 New-AzDataCollectionRuleAssociation
在数据收集规则与资源之间创建关联。 有关详细信息,请参阅 New-AzDataCollectionRuleAssociation
New-AzDataCollectionRuleAssociation
-AssociationName <String>
-ResourceUri <String>
-DataCollectionRuleId <String>
下面的示例在数据收集规则与密钥保管库之间创建关联。
New-AzDataCollectionRuleAssociation
-AssociationName keyVault-001-association
-ResourceUri /subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f/resourceGroups/rg-dcr/providers/Microsoft.KeyVault/vaults/keyVault-001
-DataCollectionRuleId /subscriptions/bbbb1b1b-cc2c-DD3D-ee4e-ffffff5f5f5f/resourceGroups/rg-dcr/providers/Microsoft.Insights/dataCollectionRules/vaultsDCR001
使用 REST API 创建数据收集规则
为指标创建数据收集规则需要以下步骤:
- 创建数据收集规则。
- 向规则的托管实体授予向目标写入数据的权限
- 创建数据收集规则关联。
创建数据收集规则
若要使用 REST API 创建 DCR,必须使用持有者令牌发出经过身份验证的请求。 有关使用 Azure Monitor 进行身份验证的详细信息,请参阅对 Azure Monitor 请求进行身份验证。
通过 REST API 使用以下终结点为指标创建数据收集规则。
有关详细信息,请参阅数据收集规则 - 创建。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/dataCollectionRules/{dataCollectionRuleName}?api-version=2023-03-11
例如
https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.Insights/dataCollectionRules/dcr-001?api-version=2023-03-11
有效负载是定义收集规则的 JSON 对象。 有效负载是在请求的正文中发送的。 有关 JSON 结构的详细信息,请参阅 DCR 规范。 有关示例 DCR JSON 对象,请参阅示例指标导出 JSON 对象。
向托管标识授予写入权限
当目标为存储帐户或事件中心时,DCR 使用的托管标识必须对目标具有写入权限。
若要为规则的托管实体授予权限,请将合适的角色分配给该实体。
下表显示了每种目标类型所需的角色。
目标类型 |
角色 |
Log Analytics 工作区 |
或 VPN |
Azure 存储帐户 |
Storage Blob Data Contributor |
事件中心 |
Azure Event Hubs Data Sender |
有关详细信息,请参阅将 Azure 角色分配给托管标识。
若要使用 REST 将角色分配给托管标识,请参阅角色分配 - 创建
创建数据收集规则关联
创建数据收集规则后,创建一个数据收集规则关联 (DCRA),以将规则与要监视的资源相关联。 有关详细信息,请参阅数据收集规则关联 - 创建。
若要使用 REST API 创建 DCRA,请使用以下终结点和有效负载:
PUT https://management.azure.com/{resourceUri}/providers/Microsoft.Insights/dataCollectionRuleAssociations/{associationName}?api-version=2022-06-0
正文:
{
"properties":
{
"description": "<DCRA description>",
"dataCollectionRuleId": "/subscriptions/{subscriptionId}/resourceGroups/{resource group name}/providers/Microsoft.Insights/dataCollectionRules/{DCR name}"
}
}
例如,
https://management.azure.com//subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.Compute/virtualMachines/vm002/providers/Microsoft.Insights/dataCollectionRuleAssociations/dcr-la-ws-vm002?api-version=2023-03-11
{
"properties":
{
"description": "Association of platform telemetry DCR with VM vm002",
"dataCollectionRuleId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001/providers/Microsoft.Insights/dataCollectionRules/dcr-la-ws"
}
}
使用以下模板创建 DCR。 有关详细信息,请参阅 Microsoft.Insights dataCollectionRules
模板文件
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"type": "string",
"metadata": {
"description": "Specifies the name of the Data Collection Rule to create."
}
},
"location": {
"type": "string",
"metadata": {
"description": "Specifies the location in which to create the Data Collection Rule."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"name": "[parameters('dataCollectionRuleName')]",
"kind": "PlatformTelemetry",
"identity": {
"type": "userassigned" | "systemAssigned",
"userAssignedIdentities": {
"type": "string"
}
},
"location": "[parameters('location')]",
"apiVersion": "2023-03-11",
"properties": {
"dataSources": {
"platformTelemetry": [
{
"streams": [
"<resourcetype>:<metric name> | Metrics-Group-All"
],
"name": "myPlatformTelemetryDataSource"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaceId')]",
"name": "myDestination"
}
]
},
"dataFlows": [
{
"streams": [
"<resourcetype>:<metric name> | Metrics-Group-All"
],
"destinations": [
"myDestination"
]
}
]
}
}
]
}
参数文件
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"value": "metrics-dcr-001"
},
"workspaceId": {
"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/azuremonitorworkspaceinsights/providers/microsoft.operationalinsights/workspaces/amw-insight-ws"
},
"location": {
"value": "eastus"
}
}
}
示例 DCR 模板:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2023-03-11",
"name": "[parameters('dataCollectionRuleName')]",
"location": "[parameters('location')]",
"kind": "PlatformTelemetry",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"dataSources": {
"platformTelemetry": [
{
"streams": [
"Microsoft.Compute/virtualMachines:Metrics-Group-All",
"Microsoft.Compute/virtualMachineScaleSets:Metrics-Group-All",
"Microsoft.Cache/redis:Metrics-Group-All",
"Microsoft.keyvault/vaults:Metrics-Group-All"
],
"name": "myPlatformTelemetryDataSource"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaceId')]",
"name": "myDestination"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft.Compute/virtualMachines:Metrics-Group-All",
"Microsoft.Compute/virtualMachineScaleSets:Metrics-Group-All",
"Microsoft.Cache/redis:Metrics-Group-All",
"Microsoft.keyvault/vaults:Metrics-Group-All"
],
"destinations": [
"myDestination"
]
}
]
}
}
]
}
创建 DCR 和 DCRA 后,第一个平台指标数据最多需要 30 分钟才会出现在 Log Analytics 工作区中。 在数据开始流动后,流向 Log Analytics 工作区、存储帐户或事件中心的平台指标时序的延迟约为 3 分钟,具体取决于资源类型。