将数据发送到 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 角色

创建数据收集规则

创建数据收集规则,用于收集事件并发送到存储和事件中心。

  1. 在 Azure 门户的搜索框中,输入“模板”,然后选择“部署自定义模板”。

    屏幕截图显示 Azure 门户,在搜索框中输入了模板,并在搜索结果中突出显示了“部署自定义模板”。

  2. 选择“在编辑器中生成自己的模板”。

    屏幕截图显示用于在编辑器中生成模板的门户屏幕。

  3. 将此 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"
                ]
            }
            ]
        }
        }
    ]
    }
    
  4. 更新 Azure 资源管理器模板中的以下值。 有关示例,请参阅 Azure 资源管理器模板示例。

    事件中心

    说明
    dataSources 根据要求定义它。 对于 Windows,支持直接上传到 Azure 事件中心的类型为 performanceCounterswindowsEventLogs,对于 Linux,它们为 performanceCounterssyslog
    destinations 使用 eventHubsDirect 直接上传到事件中心。
    eventHubResourceId 事件中心实例的资源 ID。

    注意:它不是事件中心命名空间资源 ID。
    dataFlows dataFlows 下,包括目标名称。

    存储表

    说明
    dataSources 根据要求定义它。 对于 Windows,支持直接上传到存储表的类型为 performanceCounterswindowsEventLogs,对于 Linux,它们为 performanceCounterssyslog
    destinations 使用 storageTablesDirect 直接上传到表存储。
    storageAccountResourceId 存储帐户的资源 ID。
    tableName 带有事件数据的 JSON blob 上传到的表的名称。
    dataFlows dataFlows 下,包括目标名称。

    存储 Blob

    说明
    dataSources 根据要求定义它。 对于 Windows,支持直接上传到存储 blob 的类型为 performanceCounterswindowsEventLogsiisLogslogFiles,对于 Linux,它们为 performanceCounterssysloglogFiles
    destinations 使用 storageBlobsDirect 直接上传到 blob 存储。
    storageAccountResourceId 存储帐户的资源 ID。
    containerName 带有事件数据的 JSON blob 上传到的容器的名称。
    dataFlows dataFlows 下,包括目标名称。
  5. 选择“保存”。

创建 DCR 关联并部署 Azure Monitor 代理

使用自定义模板部署创建 DCR 关联和 AMA 部署。

  1. 在 Azure 门户的搜索框中,输入“模板”,然后选择“部署自定义模板”。

    屏幕截图显示 Azure 门户,在搜索框中输入了模板,并在搜索结果中突出显示了“部署自定义模板”。

  2. 选择“在编辑器中生成自己的模板”。

    屏幕截图显示用于在编辑器中生成模板的门户屏幕。

  3. 将此 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'))]"
                }
            }
            }
        }
        }
    ]
    }
    
  4. 选择“保存”。

疑难解答

使用以下部分排查将数据发送到 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 代理,以便从其所有出色的功能中受益。

另请参阅