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

使用客户端安装程序在 Windows 客户端设备上安装 Azure Monitor 代理

使用客户端安装程序在 Windows 客户端设备上安装 Azure Monitor 代理,并将监视数据发送到 Log Analytics 工作区。

Azure Monitor 代理扩展 和安装程序会安装相同的基础代理,并使用数据收集规则 (DCR) 配置数据收集。

本文介绍如何使用客户端安装程序在 Windows 客户端设备上安装 Azure Monitor 代理,以及如何将 DCR 关联到 Windows 客户端设备。

注意

本文提供了在 Windows 客户端设备上安装 Azure Monitor 代理的具体指导,但存在限制。 有关代理的标准安装和管理指导,请参阅代理扩展管理指导

与虚拟机扩展的比较

下面是使用客户端安装程序和使用 Azure Monitor 代理的虚拟机 (VM) 扩展之间的比较:

功能组件 通过扩展的 VM 或服务器方法 通过安装程序的客户端方法
代理安装方法 VM 扩展 客户端安装程序
已安装代理 Azure Monitor 代理 Azure Monitor 代理
身份验证 托管的标识 Microsoft Entra 设备令牌
中央配置 DCR DCR
将配置规则关联到代理 DCR 直接关联到单个 VM 资源 DCR 关联到受监视的对象,该对象映射到 Microsoft Entra 租户中的所有设备
数据上传到 Log Analytics Log Analytics 终结点 Log Analytics 终结点
功能支持 所有记录的功能 依赖于不需要更多扩展的 Azure Monitor 代理扩展的功能(包括对 Microsoft Sentinel Windows 事件筛选的支持)
网络选项 代理支持、专用链接支持 仅限代理支持

支持的设备类型

设备类型 是否支持? 安装方法 其他信息
Windows 10、11 台式机和工作站 客户端安装程序 使用 Windows MSI 安装程序安装代理。
Windows 10、11 笔记本电脑 客户端安装程序 使用 Windows MSI 安装程序安装代理(安装适用于笔记本电脑,但代理尚未针对电池或网络消耗进行优化)。
VM、规模集 VM 扩展 使用 Azure 扩展框架安装代理。
本地服务器 虚拟机扩展(使用 Azure Arc 代理) 使用 Azure 扩展框架(通过安装 Azure Arc 代理为本地提供)来安装代理。

先决条件

  • 计算机必须运行 Windows 客户端 OS 版本 10 RS4 或更高版本。

  • 若要下载安装程序,计算机应安装有 C++ 可再发行程序包版本 2015 或更高版本。

  • 计算机必须已加入到 Microsoft Entra 租户(已加入或已加入混合的计算机)。 加入域的计算机后,代理可以提取 Microsoft Entra 设备令牌,以便从 Azure 进行身份验证和提取 DCR。

  • 查看是否需要对该 Microsoft Entra 租户拥有租户管理员权限。

  • 设备必须具有以下 HTTPS 终结点的访问权限:

    • global.handler.control.monitor.azure.com

    • <virtual-machine-region-name>.handler.control.monitor.azure.com

      (示例:westus.handler.control.azure.com

    • <log-analytics-workspace-id>.ods.opinsights.azure.com

      (示例:12345a01-b1cd-1234-e1f2-1234567g8h99.ods.opinsights.azure.com

      如果在代理上使用专用链接,还必须添加数据收集终结点

  • 要与设备关联的 DCR。 如果尚不存在,请创建一条数据收集规则请勿将规则关联到任何资源。

  • 在使用任何 PowerShell cmdlet 之前,请确保已安装并导入与 cmdlet 相关的 PowerShell 模块。

限制

  • 为 Windows 客户端计算机创建的数据收集规则只能针对整个 Microsoft Entra 租户范围。 也就是说,与受监视对象关联的数据收集规则适用于所有在租户中使用此客户端安装程序安装 Azure Monitor 代理的 Windows 客户端计算机。 Windows 客户端设备尚不支持使用数据收集规则进行精细定位
  • Azure Monitor 代理不支持监视通过 Azure 专用链接连接的 Windows 计算机。
  • 使用 Windows 客户端安装程序安装的代理主要用于始终连接的 Windows 桌面或工作站。 尽管可以使用安装程序在笔记本电脑上安装 Azure Monitor 代理,但该代理并未针对笔记本电脑上的电池消耗和网络限制进行优化。
  • 不支持将 Azure Monitor 指标作为 Windows 客户端设备的目标。

安装代理

  1. 下载代理 Windows MSI 安装程序

    还可以在 Azure 门户中下载。 在门户菜单中,转到“监视”>“数据收集规则”>“创建”,如以下屏幕截图所示:

    在弹出消息中显示 Azure 门户链接的屏幕截图。

  2. 打开提升的管理员命令提示符窗口,并更改下载了安装程序的位置的目录。

  3. 若要使用默认设置进行安装,请运行以下命令:

    msiexec /i AzureMonitorAgentClientSetup.msi /qn
    
  4. 若要使用自定义文件路径、网络代理设置或在非公有云上进行安装,请使用以下命令。 使用下表中的值。

    msiexec /i AzureMonitorAgentClientSetup.msi /qn DATASTOREDIR="C:\example\folder"
    
    参数 说明
    INSTALLDIR 安装代理二进制文件的目录路径。
    DATASTOREDIR 代理存储其操作日志和数据的目录路径。
    PROXYUSE 必须设置为 true 才能使用代理。
    PROXYADDRESS 设置为代理地址。 PROXYUSE 必须设置为 true 才能正确应用。
    PROXYUSEAUTH 当代理需要身份验证时设置为 true
    PROXYUSERNAME 设置为代理用户名。 PROXYUSEPROXYUSEAUTH 必须设置为 true
    PROXYPASSWORD 设置为代理密码。 PROXYUSEPROXYUSEAUTH 必须设置为 true
    CLOUDENV 设置为云名称:Azure CommercialAzure ChinaAzure US GovAzure USNatAzure USSec
  5. 验证是否成功安装:

    1. 打开“控制面板”>“程序和功能” 确保 Azure Monitor 代理显示在程序列表中。
    2. 打开“服务”,确认“Azure Monitor 代理”出现,“状态”为“运行中”

转到下一部分,创建要与 DCR 关联的受监视对象以启动代理。

注意

如果使用客户端安装程序安装代理,则当前无法在安装代理后更新本地代理设置。 若要更新这些设置,请卸载并重新安装 Azure Monitor 代理。

创建并关联监视对象

接下来,创建一个监视对象,该对象表示 Azure 资源管理器中的 Microsoft Entra 租户。 然后,DCR 与 Azure 资源管理器实体相关联。 Azure 将监视对象关联到同一 Microsoft Entra 租户中的所有 Windows 客户端计算机。

目前,此关联的范围限制为 Microsoft Entra 租户。 应用于 Microsoft Entra 租户的配置将应用于属于租户的所有设备,并运行通过客户端安装程序安装的代理。 通过 VM 扩展安装的代理不在范围内,并且不会受到影响。

下图演示了受监视的对象关联的工作原理:

显示监视对象的用途和关联的图表。

然后,继续下一部分,使用 REST API 或 Azure PowerShell 命令创建 DCR 并将其关联到受监视的对象。

所需的权限

由于受监视的对象是租户级资源,因此权限范围大于订阅所需的权限范围。 可能需要成为 Azure 租户管理员才能执行此步骤。 完成步骤将 Microsoft Entra 租户管理员提升为 Azure 租户管理员。它将在根范围内向 Microsoft Entra 管理员授予“所有者”权限。 以下部分所述的所有方法都需要此权限范围。

使用 REST API

以下部分介绍使用 REST API 创建 DCR 并将其关联到受监视对象的步骤:

  1. 将“监视对象参与者”角色分配给操作员。
  2. 创建受监视对象。
  3. 将 DCR 关联到受监视的对象。

还介绍了这些任务:

  • 列出与监视对象的关联。
  • 取消 DCR 与监视对象的关联。

将“监视对象参与者”角色分配给操作员

此步骤授予用户或组创建和链接受监视对象的权限。

请求 URI

PUT https://management.azure.com/providers/microsoft.insights/providers/microsoft.authorization/roleassignments/{roleAssignmentGUID}?api-version=2021-04-01-preview

URI 参数

名称 类型 描述
roleAssignmentGUID path string 提供任何有效的全局唯一标识符 (GUID)。 可以使用 GUID 生成器 生成 GUID。

标头

  • 授权:Azure 资源管理器持有者令牌(使用 Get-AzAccessToken 或其他方法)
  • Content-Type:Application/json

请求正文

{
    "properties":
    {
        "roleDefinitionId":"/providers/Microsoft.Authorization/roleDefinitions/56be40e24db14ccf93c37e44c597135b",
        "principalId":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
    }
}

正文参数

名称 描述
roleDefinitionId 已修复值:监视对象参与者角色的角色定义 ID:/providers/Microsoft.Authorization/roleDefinitions/56be40e24db14ccf93c37e44c597135b
principalId 提供角色需要分配到的用户标识的 Object Id 值。 这可能是在步骤 1 开始时提升的用户,也可能是完成后续步骤的另一个用户或组。

完成此步骤后,对会话重新进行身份验证,并重新获取 Azure 资源管理器持有者令牌。

创建受监视对象

此步骤为 Microsoft Entra 租户范围创建监视对象。 它将用于表示使用该 Microsoft Entra 租户标识签名的客户端设备。

需要的权限:在相应范围内拥有“受监视对象参与者”角色的任何人都可以执行此操作,如步骤 1 中分配的那样。

请求 URI

PUT https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/{AADTenantId}?api-version=2021-09-01-preview

URI 参数

名称 类型 描述
AADTenantId path string 设备所属 Microsoft Entra 租户的 ID。 使用同一 ID 创建受监视的对象。

标头

  • 授权:Azure 资源管理器持有者令牌
  • Content-Type:Application/json

请求正文

{
    "properties":
    {
        "location":"eastus"
    }
}

正文参数

名称 描述
location 存储受监视对象的 Azure 区域。 它应是你创建 DCR 的同一区域。 此区域是发生代理通信的位置。

将 DCR 关联到受监视的对象

现在,通过创建数据收集规则关联 (DCR),将 DCR 关联到受监视的对象。

需要的权限:在相应范围内拥有“受监视对象参与者”角色的任何人都可以执行此操作,如步骤 1 中分配的那样。

请求 URI

PUT https://management.azure.com/{MOResourceId}/providers/microsoft.insights/datacollectionruleassociations/{associationName}?api-version=2021-09-01-preview

示例请求 URI

PUT https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/{AADTenantId}/providers/microsoft.insights/datacollectionruleassociations/{associationName}?api-version=2021-09-01-preview

URI 参数

名称 类型 描述
MOResourceId path string 步骤 2 中创建的受监视对象的完整资源 ID。 示例: providers/Microsoft.Insights/monitoredObjects/{AADTenantId}

标头

  • 授权:Azure 资源管理器持有者令牌
  • Content-Type:Application/json

请求正文

{
    "properties":
    {
        "dataCollectionRuleId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/dataCollectionRules/{DCRName}"
    }
}

正文参数

名称 描述
dataCollectionRuleID 在受监视对象所在的同一区域中创建的现有 DCR 的资源 ID。

列出与监视对象的关联

如果需要查看关联,则可以列出监视对象的关联。

需要的权限:在相应范围内拥有“读者”角色的任何人都可以执行此操作,类似于步骤 1 中分配的权限。

请求 URI

GET https://management.azure.com/{MOResourceId}/providers/microsoft.insights/datacollectionruleassociations/?api-version=2021-09-01-preview

示例请求 URI

GET https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/{AADTenantId}/providers/microsoft.insights/datacollectionruleassociations/?api-version=2021-09-01-preview
{
  "value": [
    {
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVm/providers/Microsoft.Insights/dataCollectionRuleAssociations/myRuleAssociation",
      "name": "myRuleAssociation",
      "type": "Microsoft.Insights/dataCollectionRuleAssociations",
      "properties": {
        "dataCollectionRuleId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionRules/myCollectionRule",
        "provisioningState": "Succeeded"
      },
      "systemData": {
        "createdBy": "user1",
        "createdByType": "User",
        "createdAt": "2021-04-01T12:34:56.1234567Z",
        "lastModifiedBy": "user2",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2021-04-02T12:34:56.1234567Z"
      },
      "etag": "070057da-0000-0000-0000-5ba70d6c0000"
    }
  ],
  "nextLink": null
}

取消 DCR 与监视对象的关联

如果需要删除 DCR 与监视对象的关联。

需要的权限:在相应范围内拥有“受监视对象参与者”角色的任何人都可以执行此操作,如步骤 1 中分配的那样。

请求 URI

DELETE https://management.azure.com/{MOResourceId}/providers/microsoft.insights/datacollectionruleassociations/{associationName}?api-version=2021-09-01-preview

示例请求 URI

DELETE https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/{AADTenantId}/providers/microsoft.insights/datacollectionruleassociations/{associationName}?api-version=2021-09-01-preview

URI 参数

名称 类型 描述
MOResourceId path string 步骤 2 中创建的受监视对象的完整资源 ID。 示例: providers/Microsoft.Insights/monitoredObjects/{AADTenantId}
associationName path string 关联的名称。 此名称不区分大小写。 示例: assoc01

标头

  • 授权:Azure 资源管理器持有者令牌
  • Content-Type:Application/json

使用 Azure PowerShell 进行加入

以下 Azure PowerShell 脚本创建 DCR 并将其关联到受监视的对象,然后列出关联。

$TenantID = "xxxxxxxxx-xxxx-xxx"  #Your tenant ID
$SubscriptionID = "xxxxxx-xxxx-xxxxx" #Your subscription ID
$ResourceGroup = "rg-yourResourceGroup" #Your resource group

#If the following cmdlet produces the error 'Interactive authentication is not supported in this session,' run
#cmdlet Connect-AzAccount -UseDeviceAuthentication
#uncomment -UseDeviceAuthentication on next line
Connect-AzAccount -Tenant $TenantID #-UseDeviceAuthentication

#Select the subscription
Select-AzSubscription -SubscriptionId $SubscriptionID

#Grant access to the user at root scope "/"
$user = Get-AzADUser -SignedIn

New-AzRoleAssignment -Scope '/' -RoleDefinitionName 'Owner' -ObjectId $user.Id

#Create the auth token
$auth = Get-AzAccessToken

$AuthenticationHeader = @{
    "Content-Type" = "application/json"
    "Authorization" = "Bearer " + $auth.Token
    }


#Assign the Monitored Object Contributor role to the operator
$newguid = (New-Guid).Guid
$UserObjectID = $user.Id

$body = @"
{
            "properties": {
                "roleDefinitionId":"/providers/Microsoft.Authorization/roleDefinitions/56be40e24db14ccf93c37e44c597135b",
                "principalId": `"$UserObjectID`"
        }
}
"@

$requestURL = "https://management.azure.com/providers/microsoft.insights/providers/microsoft.authorization/roleassignments/$newguid`?api-version=2021-04-01-preview"


Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method PUT -Body $body


##########################

#Create a monitored object
#The 'location' property value in the 'body' section should be the Azure region where the monitored object is stored. It should be the same region where you created the data collection rule. This is the region where agent communications occurs.
$Location = "eastus" #Use your own location
$requestURL = "https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/$TenantID`?api-version=2021-09-01-preview"
$body = @"
{
    "properties":{
        "location":`"$Location`"
    }
}
"@

$Respond = Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method PUT -Body $body -Verbose
$RespondID = $Respond.id

##########################

#Associate a DCR to the monitored object
#See reference documentation https://learn.microsoft.com/rest/api/monitor/data-collection-rule-associations/create?tabs=HTTP
$associationName = "assoc01" #You can define your custom association name, but you must change the association name to a unique name if you want to associate multiple DCRs to a monitored object.
$DCRName = "dcr-WindowsClientOS" #Your data collection rule name

$requestURL = "https://management.azure.com$RespondId/providers/microsoft.insights/datacollectionruleassociations/$associationName`?api-version=2021-09-01-preview"
$body = @"
        {
            "properties": {
                "dataCollectionRuleId": "/subscriptions/$SubscriptionID/resourceGroups/$ResourceGroup/providers/Microsoft.Insights/dataCollectionRules/$DCRName"
            }
        }

"@

Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method PUT -Body $body

#(Optional example) Associate another DCR to a monitored object. Remove comments around the following text to use it as a sample.
#See reference documentation https://learn.microsoft.com/en-us/rest/api/monitor/data-collection-rule-associations/create?tabs=HTTP
<#
$associationName = "assoc02" #You must change the association name to a unique name if you want to associate multiple DCRs to a monitored object.
$DCRName = "dcr-PAW-WindowsClientOS" #Your Data collection rule name

$requestURL = "https://management.azure.com$RespondId/providers/microsoft.insights/datacollectionruleassociations/$associationName`?api-version=2021-09-01-preview"
$body = @"
        {
            "properties": {
                "dataCollectionRuleId": "/subscriptions/$SubscriptionID/resourceGroups/$ResourceGroup/providers/Microsoft.Insights/dataCollectionRules/$DCRName"
            }
        }

"@

Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method PUT -Body $body

#(Optional) Get all the associations.
$requestURL = "https://management.azure.com$RespondId/providers/microsoft.insights/datacollectionruleassociations?api-version=2021-09-01-preview"
(Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method get).value
#>

验证安装是否成功

在 DCR 中指定为目标的 Log Analytics 工作区中,检查“检测信号”表以及已在规则中配置的其他表。

SourceComputerId、Computer 和 ComputerIP 列均应分别反映客户端设备信息,Category 列应显示“Azure Monitor Agent”。

显示 Azure 门户上代理检测信号日志的屏幕截图。

使用 PowerShell 进行登出

以下 PowerShell 脚本将 DCR 与受监视的对象取消关联。

#Remove the monitor object
$TenantID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"  #Your Tenant ID

Connect-AzAccount -Tenant $TenantID

#Create the auth token
$auth = Get-AzAccessToken

$AuthenticationHeader = @{
    "Content-Type" = "application/json"
    "Authorization" = "Bearer " + $auth.Token
}

#Get the monitored object
$requestURL = "https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/$TenantID`?api-version=2021-09-01-preview"
$MonitoredObject =  Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method Get

#Get DCRs associated to the monitored object 
$requestURL = "https://management.azure.com$($MonitoredObject.id)/providers/microsoft.insights/datacollectionruleassociations?api-version=2021-09-01-preview"
$MonitoredObjectAssociations = Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method Get

#Disassociate the monitored object from all DCRs
foreach ($Association in $MonitoredObjectAssociations.value){
    $requestURL = "https://management.azure.com$($Association.id)?api-version=2022-06-01"
    Invoke-RestMethod -Uri $requestURL -Headers $AuthenticationHeader -Method Delete
}

#Delete the monitored object
$requestURL = "https://management.azure.com/providers/Microsoft.Insights/monitoredObjects/$TenantID`?api-version=2021-09-01-preview"
Invoke-AzRestMethod -Uri $requestURL -Method Delete

管理代理

以下部分介绍如何管理代理:

  • 检查代理版本
  • 卸载代理
  • 更新代理

检查代理版本

  1. 打开“控制面板”>“程序和功能”
  2. 在程序列表中,选择 Azure Monitor 代理
  3. 检查“版本”的值。

还可以在“设置”中检查代理版本。

卸载代理

  1. 打开“控制面板”>“程序和功能”
  2. 在程序列表中,选择 Azure Monitor 代理
  3. 在菜单栏上选择“卸载”。

还可以在“设置”中卸载代理。

如果在卸载代理时出现问题,请参阅排查问题

更新代理

若要更新版本,请安装要更新到的新版本。

疑难解答

查看代理诊断日志

  1. 在启用日志记录的情况下重新运行安装,并指定日志文件名称 Msiexec /I AzureMonitorAgentClientSetup.msi /L*V <log file name>

  2. 运行时日志会自动收集到默认位置 C:\Resources\Azure Monitor Agent\ 或在安装过程中指定的文件路径。

    • 如果找不到该路径,在注册表上指示确切的位置为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AzureMonitorAgent 上的 AMADataRootDirPath
  3. “ServiceLogs”文件夹包含 Azure Monitor 代理 Windows 服务的日志,该服务启动和管理 Azure Monitor 代理进程。

  4. AzureMonitorAgent.MonitoringDataStore 包含 Azure Monitor 代理进程中的数据和日志。

解决安装和卸载问题

以下部分介绍如何解决安装和卸载问题。

缺少 DLL

错误消息:“此 Windows Installer 包存在问题。 无法运行完成此安装程序所需的 DLL……”

解析:在安装 Azure Monitor 代理之前,请确保已安装 C++ 可再发行组件(>2015)。 安装相关的可再发行文件,然后重试安装。

未建立 Microsoft Entra 联接

错误消息:“租户和设备 ID 检索失败”

解决方法:运行命令 dsregcmd /status。 预期的输出是 Device State 部分中的 AzureAdJoined : YES。 如果未显示此输出,请将设备联接到 Microsoft Entra 租户,并再次尝试进行安装。

命令提示符下的无提示安装失败

请确保使用“以管理员身份运行”选项启动安装程序。 只能在管理员命令提示符下启动无提示安装。

卸载失败,因为卸载程序无法停止服务

  1. 如果可以选择重试卸载,请重试。
  2. 如果从卸载程序中进行重试不起作用,请取消卸载并从“服务”>“桌面应用程序”停止 Azure Monitor 代理服务。
  3. 重试卸载。

卸载程序不起作用时手动强制卸载

  1. 停止 Azure Monitor 代理服务。 然后再次尝试卸载。 如果失败,请继续执行以下步骤。
  2. 通过在管理员命令提示符处运行 sc delete AzureMonitorAgent 来删除 Azure Monitor 代理服务。
  3. 下载目标工具,并卸载 Azure Monitor 代理。
  4. 删除 Azure Monitor 代理二进制文件。 默认情况下,代理二进制文件存储在“Program Files\Azure Monitor 代理”中。
  5. 删除 Azure Monitor 代理数据和日志。 默认情况下,代理数据和日志存储在“C:\Resources\Azure Monitor 代理”中。
  6. 打开注册表。 检查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure Monitor Agent。 如果它存在,则删除该键。

安装后和操作问题

成功安装代理后(即看到代理服务正在运行但没有看到预期的数据),请按照列出的分别针对 Windows VM已启用 Windows Arc 的服务器的标准故障排除步骤进行操作。

常见问题

获取常见问题的答案。

已加入 Microsoft Entra 的计算机是否需要 Azure Arc?

否。 运行 Windows 11 或 10(客户端 OS)的已加入 Microsoft Entra(或已加入混合 Microsoft Entra)的计算机不需要安装 Azure Arc。 相反,可以使用适用于 Azure Monitor Agent 的 Windows MSI 安装程序。

问题和反馈

完成此快速调查或共享有关客户端安装程序的反馈或问题。