将数据发送到 Azure 事件中心和存储(预览版)
本文介绍如何使用 Azure Monitor 代理 (AMA) 将数据上传到 Microsoft Azure 存储和事件中心。 此功能为预览版。
Azure Monitor 代理是新的合并遥测代理,用于从 IaaS 资源(如虚拟机)收集数据。 使用此预览版中的上传功能,可以将你发送到 Log Analytics 工作区的日志1上传到 Azure 事件中心和存储。 这两个数据目标都使用数据收集规则来配置代理的收集设置。
注意
Azure 诊断扩展将于 2026 年 3 月 31 日弃用。 在此日期之后,Azure 将不再为 Azure 诊断扩展提供支持。
脚注
1:并非所有数据类型都受支持;有关详细信息,请参阅支持的操作。
从适用于 Linux 和 Windows 的 Azure 诊断扩展 (LAD/WAD) 迁移
- Azure Monitor 代理可以收集数据并将其发送到多个目标,包括 Log Analytics 工作区、Azure 事件中心和 Azure 存储。
- 若要检查 VM 上安装了哪些扩展,请选择 VM 上“设置”下的“扩展 + 应用程序”。
- 在设置 Azure Monitor 代理以将相同的数据收集到事件中心或 Azure 存储后,请删除 LAD 或 WAD,以避免数据重复。
- 作为存储的替代方法,强烈建议在 Log Analytics 工作区中设置一个使用辅助计划的表,以实现经济高效的日志记录。
支持的操作
数据类型
Windows:
- Windows 事件日志 - 到 eventhub 和存储
- 性能计数器 - eventhub 和存储
- IIS 日志 - 到存储 blob
- 自定义日志 - 到存储 blob
Linux:
- Syslog - 到 eventhub 和存储
- 性能计数器 - 到 eventhub 和存储
- 自定义日志/日志文件 – 到存储
操作系统
- Windows 和 Linux 上的 Azure Monitoring 代理支持的环境
- 此功能仅受支持,并计划为 Azure VM 提供支持。 没有将此功能引入本地或 Azure Arc 方案。
不支持的功能
数据类型
- Windows:
- ETW 日志(在后续版本中发布)
- Windows 故障转储(未计划也不受支持)
- 应用程序日志(未计划也不受支持)
- .NET 事件源日志(未计划也不受支持)
先决条件
需要现有的计算资源(虚拟机、虚拟机规模集或已启用 Arc 的服务器)。 部署 Azure Monitor 代理的计算机必须启用系统分配的托管标识,或与其关联的用户分配的托管标识。 强烈建议使用用户分配的托管标识来提高可伸缩性和性能。 必须将 Azure Monitor 代理配置为使用此托管标识进行身份验证,如先决条件中所述。
必须预配希望通过 Azure Monitor 代理向其发布数据所需的存储帐户和/或事件中心。 此外,必须根据所需的数据目标将适当的内置 RBAC 角色分配给所选的托管标识:
- 存储表:
Storage Table Data Contributor
角色 - 存储 blob:
Storage Blob Data Contributor
角色 - 事件中心:
Azure Event Hubs Data Sender
角色
创建数据收集规则
创建数据收集规则,用于收集事件并发送到存储和事件中心。
在 Azure 门户的搜索框中,输入“模板”,然后选择“部署自定义模板”。
选择“在编辑器中生成自己的模板”。
将此 Azure 资源管理器模板粘贴到编辑器中:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } }, "dataCollectionRulesName": { "defaultValue": "[concat(resourceGroup().name, 'DCR')]", "type": "String" }, "storageAccountName": { "defaultValue": "[concat(resourceGroup().name, 'sa')]", "type": "String" }, "eventHubNamespaceName": { "defaultValue": "[concat(resourceGroup().name, 'eh')]", "type": "String" }, "eventHubInstanceName": { "defaultValue": "[concat(resourceGroup().name, 'ehins')]", "type": "String" } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRules", "apiVersion": "2022-06-01", "name": "[parameters('dataCollectionRulesName')]", "location": "[parameters('location')]", "kind": "AgentDirectToStore", "properties": { "dataSources": { "performanceCounters": [ { "streams": [ "Microsoft-Perf" ], "samplingFrequencyInSeconds": 10, "counterSpecifiers": [ "\\Process(_Total)\\Working Set - Private", "\\Memory\\% Committed Bytes In Use", "\\LogicalDisk(_Total)\\% Free Space", "\\Network Interface(*)\\Bytes Total/sec" ], "name": "perfCounterDataSource10" } ], "windowsEventLogs": [ { "streams": [ "Microsoft-Event" ], "xPathQueries": [ "Application!*[System[(Level=2)]]", "System!*[System[(Level=2)]]" ], "name": "eventLogsDataSource" } ], "iisLogs": [ { "streams": [ "Microsoft-W3CIISLog" ], "logDirectories": [ "C:\\inetpub\\logs\\LogFiles\\W3SVC1\\" ], "name": "myIisLogsDataSource" } ], "logFiles": [ { "streams": [ "Custom-Text-logs" ], "filePatterns": [ "C:\\JavaLogs\\*.log" ], "format": "text", "settings": { "text": { "recordStartTimestampFormat": "ISO 8601" } }, "name": "myTextLogs" } ] }, "destinations": { "eventHubsDirect": [ { "eventHubResourceId": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubInstanceName'))]", "name": "myEh1" } ], "storageBlobsDirect": [ { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedPerf", "containerName": "PerfBlob" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedWin", "containerName": "WinEventBlob" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedIIS", "containerName": "IISBlob" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedTextLogs", "containerName": "TxtLogBlob" } ], "storageTablesDirect": [ { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "tableNamedPerf", "tableName": "PerfTable" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "tableNamedWin", "tableName": "WinTable" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "tableUnnamed" } ] }, "dataFlows": [ { "streams": [ "Microsoft-Perf" ], "destinations": [ "myEh1", "blobNamedPerf", "tableNamedPerf", "tableUnnamed" ] }, { "streams": [ "Microsoft-Event" ], "destinations": [ "myEh1", "blobNamedWin", "tableNamedWin", "tableUnnamed" ] }, { "streams": [ "Microsoft-W3CIISLog" ], "destinations": [ "blobNamedIIS" ] }, { "streams": [ "Custom-Text-logs" ], "destinations": [ "blobNamedTextLogs" ] } ] } } ] }
更新 Azure 资源管理器模板中的以下值。 有关示例,请参阅 Azure 资源管理器模板示例。
事件中心
值 说明 dataSources
根据要求定义它。 对于 Windows,支持直接上传到 Azure 事件中心的类型为 performanceCounters
和windowsEventLogs
,对于 Linux,它们为performanceCounters
和syslog
。destinations
使用 eventHubsDirect
直接上传到事件中心。eventHubResourceId
事件中心实例的资源 ID。
注意:它不是事件中心命名空间资源 ID。dataFlows
在 dataFlows
下,包括目标名称。存储表
值 说明 dataSources
根据要求定义它。 对于 Windows,支持直接上传到存储表的类型为 performanceCounters
、windowsEventLogs
,对于 Linux,它们为performanceCounters
和syslog
。destinations
使用 storageTablesDirect
直接上传到表存储。storageAccountResourceId
存储帐户的资源 ID。 tableName
带有事件数据的 JSON blob 上传到的表的名称。 dataFlows
在 dataFlows
下,包括目标名称。存储 Blob
值 说明 dataSources
根据要求定义它。 对于 Windows,支持直接上传到存储 blob 的类型为 performanceCounters
、windowsEventLogs
、iisLogs
、logFiles
,对于 Linux,它们为performanceCounters
、syslog
和logFiles
。destinations
使用 storageBlobsDirect
直接上传到 blob 存储。storageAccountResourceId
存储帐户的资源 ID。 containerName
带有事件数据的 JSON blob 上传到的容器的名称。 dataFlows
在 dataFlows
下,包括目标名称。选择“保存”。
创建 DCR 关联并部署 Azure Monitor 代理
使用自定义模板部署创建 DCR 关联和 AMA 部署。
在 Azure 门户的搜索框中,输入“模板”,然后选择“部署自定义模板”。
选择“在编辑器中生成自己的模板”。
将此 Azure 资源管理器模板粘贴到编辑器中。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "vmName": { "defaultValue": "[concat(resourceGroup().name, 'vm')]", "type": "String" }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } }, "dataCollectionRulesName": { "defaultValue": "[concat(resourceGroup().name, 'DCR')]", "type": "String", "metadata": { "description": "Data Collection Rule Name" } }, "dcraName": { "type": "string", "defaultValue": "[concat(uniquestring(resourceGroup().id), 'DCRLink')]", "metadata": { "description": "Name of the association." } }, "identityName": { "type": "string", "defaultValue": "[concat(resourceGroup().name, 'UAI')]", "metadata": { "description": "Managed Identity" } } }, "resources": [ { "type": "Microsoft.Compute/virtualMachines/providers/dataCollectionRuleAssociations", "name": "[concat(parameters('vmName'),'/microsoft.insights/', parameters('dcraName'))]", "apiVersion": "2021-04-01", "properties": { "description": "Association of data collection rule. Deleting this association will break the data collection for this virtual machine.", "dataCollectionRuleId": "[resourceID('Microsoft.Insights/dataCollectionRules',parameters('dataCollectionRulesName'))]" } }, { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(parameters('vmName'), '/AMAExtension')]", "apiVersion": "2020-06-01", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Compute/virtualMachines/providers/dataCollectionRuleAssociations', parameters('vmName'), 'Microsoft.Insights', parameters('dcraName'))]" ], "properties": { "publisher": "Microsoft.Azure.Monitor", "type": "AzureMonitorWindowsAgent", "typeHandlerVersion": "1.0", "autoUpgradeMinorVersion": true, "settings": { "authentication": { "managedIdentity": { "identifier-name": "mi_res_id", "identifier-value": "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('identityName'))]" } } } } } ] }
选择“保存”。
疑难解答
使用以下部分排查将数据发送到 Azure 事件中心和存储的问题。
在存储帐户 blob 存储中找不到数据
- 检查是否为内置角色
Storage Blob Data Contributor
分配了存储帐户上的托管标识。 - 检查是否已将托管标识分配给 VM。
- 检查 AMA 设置是否具有托管标识参数。
在存储帐户表存储中找不到数据
- 检查是否为内置角色
Storage Table Data Contributor
分配了存储帐户上的托管标识。 - 检查是否已将托管标识分配给 VM。
- 检查 AMA 设置是否具有托管标识参数。
不流向事件中心的数据
- 检查是否在事件中心实例上使用托管标识分配了内置角色
Azure Event Hubs Data Sender
。 - 检查是否已将托管标识分配给 VM。
- 检查 AMA 设置是否具有托管标识参数。
AMA 和 WAD/LAD 收敛
Azure Monitoring 代理是否支持将数据上传到 Application Insights?
否,此支持不是路线图的一部分。 Application Insights 现在由 Log Analytics 工作区提供支持。
Azure Monitoring 代理是否支持 Windows 故障转储作为要上传的数据类型?
否,此支持不是路线图的一部分。 Azure Monitoring 代理适用于遥测日志,而不是大型文件类型。
这是否意味着 Linux (LAD) 和 Windows (WAD) 诊断扩展不再受支持/已停用?
LAD 和 WAD 将于 2026 年 3 月 31 日停用。 除了必需的安全修补程序和 bug/回归修复之外,没有针对 WAD/LAD 规划任何增强功能和功能开发。 强烈建议尽快迁移到 Azure Monitor 代理。
如何为事件中心和存储数据目标配置 AMA
目前,配置体验是使用 DCR API。
你是否仍会在 WAD 和 LAD 上积极开发?
WAD 和 LAD 只会获得未来的安全/修补程序。 大部分工程资金都流向了 Azure Monitor 代理。 强烈建议迁移到 Azure Monitoring 代理,以便从其所有出色的功能中受益。
另请参阅
- 有关创建数据收集规则的详细信息,请参阅使用 Azure Monitor 代理从虚拟机收集数据。