本文介绍可用于在Azure虚拟机、虚拟机规模集和启用Azure Arc的服务器上安装、卸载、更新和配置 Azure Monitor Agent的不同方法。
先决条件
有关使用 Azure Monitor 代理的先决条件和其他要求,请参阅以下文章:
重要
安装、升级或卸载Azure Monitor代理时,无需重启计算机。
安装选项
下表列出了在Azure VM 和启用了Azure Arc的服务器上安装 Azure Monitor 代理的选项。
对于不在Azure中的任何计算机,必须在计算机上安装 Azure Arc 代理,然后才能安装Azure Monitor代理。
| 安装方法 |
说明 |
| 虚拟机 (VM) 扩展 |
使用本文中所述的任何方法通过 Azure 扩展框架安装代理。 此方法不会创建数据收集规则(DCR),因此在数据收集开始之前,必须至少创建一个 DCR 并将其与代理相关联。 |
|
创建 DCR |
在 Azure 门户中创建 DCR 时,Azure Monitor Agent 会被安装在作为 DCR 资源添加的任何计算机上。 代理会立即开始收集 DCR 中定义的数据。 |
|
容器洞察 |
在 Kubernetes 群集上启用 Prometheus 指标或容器日志收集时,会在群集中安装Azure Monitor代理的容器化版本,并创建 DCR 以立即开始收集数据。 可以根据使用 DCR 在容器见解中配置数据收集和成本优化的指南来修改 DCR。 |
|
客户端安装程序 |
使用Windows 11和Windows 10客户端的 Windows MSI 安装程序安装代理。 |
|
Azure Policy |
使用Azure Policy在Azure虚拟机和启用Azure Arc的服务器上自动安装代理,并自动将它们与所需的 DCR 相关联。 |
下表总结了可用于每个Azure Monitor代理操作的方法:
安装代理扩展
通过 Azure 门户安装Azure Monitor代理的建议方法是创建数据收集规则 (DCR)。 如有必要,会自动安装Azure Monitor代理,并在 DCR 与所选的每台计算机之间创建关联。
有关分步门户演练,包括如何设置平台类型、添加资源和配置数据源,请参阅“创建数据收集规则”(DCR)。
可以使用 PowerShell 命令在Azure虚拟机或启用Azure Arc的服务器上安装 Azure Monitor 代理,以添加虚拟机扩展。
在Azure虚拟机上安装Azure Monitor代理
使用以下 PowerShell 命令在Azure虚拟机上安装Azure Monitor代理。 根据所用身份验证方法选择相应的命令。
Windows
## User-assigned managed identity
Set-AzVMExtension -Name AzureMonitorWindowsAgent -ExtensionType AzureMonitorWindowsAgent -Publisher Microsoft.Azure.Monitor -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name> -Location <location> -TypeHandlerVersion <version-number> -EnableAutomaticUpgrade $true -SettingString '{"authentication":{"managedIdentity":{"identifier-name":"mi_res_id","identifier-value":"/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<my-user-assigned-identity>"}}}'
## System-assigned managed identity
Set-AzVMExtension -Name AzureMonitorWindowsAgent -ExtensionType AzureMonitorWindowsAgent -Publisher Microsoft.Azure.Monitor -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name> -Location <location> -TypeHandlerVersion <version-number> -EnableAutomaticUpgrade $true
Linux
## User-assigned managed identity
Set-AzVMExtension -Name AzureMonitorLinuxAgent -ExtensionType AzureMonitorLinuxAgent -Publisher Microsoft.Azure.Monitor -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name> -Location <location> -TypeHandlerVersion <version-number> -EnableAutomaticUpgrade $true -SettingString '{"authentication":{"managedIdentity":{"identifier-name":"mi_res_id","identifier-value":"/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<my-user-assigned-identity>"}}}'
## System-assigned managed identity
Set-AzVMExtension -Name AzureMonitorLinuxAgent -ExtensionType AzureMonitorLinuxAgent -Publisher Microsoft.Azure.Monitor -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name> -Location <location> -TypeHandlerVersion <version-number> -EnableAutomaticUpgrade $true
在 Azure 虚拟机规模集上安装 Azure Monitor 代理程序
使用 Add-AzVmssExtension PowerShell cmdlet 在 Azure 虚拟机规模集中安装 Azure Monitor 代理。
Windows
$vmss = Get-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name>
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name AzureMonitorWindowsAgent -Publisher Microsoft.Azure.Monitor -Type AzureMonitorWindowsAgent -TypeHandlerVersion <version-number> -EnableAutomaticUpgrade $true
Update-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name> -VirtualMachineScaleSet $vmss
Linux
$vmss = Get-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name>
Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name AzureMonitorLinuxAgent -Publisher Microsoft.Azure.Monitor -Type AzureMonitorLinuxAgent -TypeHandlerVersion <version-number> -EnableAutomaticUpgrade $true
Update-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name> -VirtualMachineScaleSet $vmss
在启用了Azure Arc的服务器上安装Azure Monitor代理
使用以下 PowerShell 命令在启用Azure Arc的服务器上安装Azure Monitor代理:
Windows
New-AzConnectedMachineExtension -Name AzureMonitorWindowsAgent -ExtensionType AzureMonitorWindowsAgent -Publisher Microsoft.Azure.Monitor -ResourceGroupName <resource-group-name> -MachineName <arc-server-name> -Location <arc-server-location> -EnableAutomaticUpgrade
Linux
New-AzConnectedMachineExtension -Name AzureMonitorLinuxAgent -ExtensionType AzureMonitorLinuxAgent -Publisher Microsoft.Azure.Monitor -ResourceGroupName <resource-group-name> -MachineName <arc-server-name> -Location <arc-server-location> -EnableAutomaticUpgrade
若要在Azure虚拟机或启用Azure Arc的服务器上安装Azure Monitor代理,请使用 Azure CLI 命令添加虚拟机扩展。
在Azure虚拟机上安装Azure Monitor代理
使用以下Azure CLI命令在Azure虚拟机上安装Azure Monitor代理。 根据所用身份验证方法选择相应的命令。
用户分配的托管标识
Windows
az vm extension set --name AzureMonitorWindowsAgent --publisher Microsoft.Azure.Monitor --ids <vm-resource-id> --enable-auto-upgrade true --settings '{"authentication":{"managedIdentity":{"identifier-name":"mi_res_id","identifier-value":"/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<my-user-assigned-identity>"}}}'
Linux
az vm extension set --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor --ids <vm-resource-id> --enable-auto-upgrade true --settings '{"authentication":{"managedIdentity":{"identifier-name":"mi_res_id","identifier-value":"/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<my-user-assigned-identity>"}}}'
系统分配的托管标识
Windows
az vm extension set --name AzureMonitorWindowsAgent --publisher Microsoft.Azure.Monitor --ids <vm-resource-id> --enable-auto-upgrade true
Linux
az vm extension set --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor --ids <vm-resource-id> --enable-auto-upgrade true
在 Azure 虚拟机规模集上安装 Azure Monitor 代理程序
使用 az vmss extension set Azure CLI 命令在 Azure 虚拟机规模集上安装 Azure Monitor 代理。
Windows
az vmss extension set --name AzureMonitorWindowsAgent --publisher Microsoft.Azure.Monitor --vmss-name <vmss-name> --resource-group <resource-group-name> --enable-auto-upgrade true
Linux
az vmss extension set --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor --vmss-name <vmss-name> --resource-group <resource-group-name> --enable-auto-upgrade true
若要使用用户分配的托管标识,请添加 --settings 参数:
az vmss extension set --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor --vmss-name <vmss-name> --resource-group <resource-group-name> --enable-auto-upgrade true --settings '{"authentication":{"managedIdentity":{"identifier-name":"mi_res_id","identifier-value":"/subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<my-user-assigned-identity>"}}}'
在启用了Azure Arc的服务器上安装Azure Monitor代理
使用以下Azure CLI命令在启用Azure Arc的服务器上安装Azure Monitor代理:
Windows
az connectedmachine extension create --name AzureMonitorWindowsAgent --publisher Microsoft.Azure.Monitor --type AzureMonitorWindowsAgent --machine-name <arc-server-name> --resource-group <resource-group-name> --location <arc-server-location> --enable-auto-upgrade true
Linux
az connectedmachine extension create --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor --type AzureMonitorLinuxAgent --machine-name <arc-server-name> --resource-group <resource-group-name> --location <arc-server-location> --enable-auto-upgrade true
可以使用Azure 资源管理器模板在Azure虚拟机或启用了Azure Arc的服务器上安装Azure Monitor代理,并创建与 DCR 的关联。 必须先创建 DCR,然后才能创建 DCR 的关联。
从以下资源中获取安装代理和创建关联的示例模板:
使用任意 资源管理器 模板的部署方法安装模板,包括以下命令。
PowerShell
New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "<template-filename.json>" -TemplateParameterFile "<parameter-filename.json>"
Azure CLI
az deployment group create --resource-group "<resource-group-name>" --template-file "<path-to-template>" --parameters "@<parameter-filename.json>"
安装期间创建的 Linux 用户帐户
在 Linux 计算机上安装Azure Monitor代理时,代理会创建本地用户帐户,以安全地运行其组件服务。 每个帐户在其自己的专用用户上下文下运行,以隔离特权并遵循适用于服务管理的 Linux 安全最佳做法。
下表列出了Azure Monitor代理创建的帐户。
| 帐户 |
Purpose |
出现时 |
azuremonitoragent |
运行Azure Monitor代理服务进程(mdsd)进行日志和指标收集。 |
代理扩展安装。 |
azureotelcollector |
运行 OpenTelemetry 收集器组件,该组件从 VM 收集可观测性数据(指标、日志、跟踪),并将其转发到Azure Monitor。 |
当代理启用 OpenTelemetry 数据收集时。 |
azuremetricsext |
运行指标扩展,该扩展使用代理发出的指标并将其发送到Azure Monitor指标。 指标扩展独立运行,但由代理启动和管理。 |
部署指标扩展程序时。 |
重要
请勿删除或修改这些帐户。 删除它们可以防止代理正常运行。
这些账户被创建为非交互式系统用户(useradd --system --no-create-home --shell /usr/sbin/nologin)。 每个帐户具有以下安全特征:
-
无交互式登录:登录 shell 设置为
/usr/sbin/nologin阻止交互式使用。
-
锁定的密码:密码默认处于锁定状态。 未授予
sudo 任何访问权限。
-
磁盘上没有主目录:(例如,
/etc/passwd)中列出的/home/azuremetricsext主目录路径只是元数据。 该目录特意不会在磁盘上创建。
Tip
标记“用户没有主目录”的安全扫描工具可以安全地列出这些帐户。 主目录缺失是设计使然,并不表示存在配置问题。
Azure Arc用户帐户
在启用了Azure Arc的服务器上,Azure Connected Machine Agent 及其扩展框架会创建附加的本地用户帐户(himds、arcproxy、arcuser)作为先决条件基础结构的一部分。 这些帐户不是由 Azure Monitor 代理创建的。 有关 Arc 相关帐户及其用途的详细信息,请参阅 Azure Connected Machine Agent 概述。
验证安装
安装Azure Monitor代理后,请验证代理是否正在运行并将数据发送到Log Analytics工作区。
在 Azure 门户中检查扩展状态
- 在 Azure 门户中,转到你的虚拟机或已启用 Azure Arc 的服务器。
- 选择 扩展 + 应用程序(对于已启用 Arc 的服务器,则选择 扩展)。
- 确认 AzureMonitorWindowsAgent 或 AzureMonitorLinuxAgent 已列出状态为 “预配成功”。
使用Azure CLI检查扩展状态
运行以下命令列出已安装的扩展,并验证Azure Monitor代理扩展是否存在并预配:
az vm extension list --resource-group <resource-group-name> --vm-name <virtual-machine-name> --output table
对于已启用Azure Arc的服务器,请使用:
az connectedmachine extension list --resource-group <resource-group-name> --machine-name <arc-server-name> --output table
使用 Heartbeat 查询验证数据采集情况
查询 Log Analytics 工作区中的 Heartbeat 表,以确认 Azure Monitor 代理正在发送心跳数据。 在Log Analytics中,运行:
Heartbeat
| where Category == "Azure Monitor Agent"
| where TimeGenerated > ago(5m)
| project Computer, TimeGenerated, Category, OSType
| order by TimeGenerated desc
如果查询返回结果,则已成功安装Azure Monitor代理并将数据发送到工作区。
注意
安装后,可能需要几分钟才会显示第一条心跳数据。 如果未看到结果,请验证 数据收集规则 是否与计算机相关联。
卸载
若要使用 Azure 门户卸载 Azure Monitor 代理,请转到虚拟机、扩展集或已启用 Azure Arc 的服务器。 选择“扩展”选项卡,然后选择“AzureMonitorWindowsAgent”或“AzureMonitorLinuxAgent”。 在打开的对话框中,选择“卸载”。
在Azure虚拟机上卸载Azure Monitor代理
使用以下 PowerShell 命令卸载Azure虚拟机上的Azure Monitor代理:
Windows
Remove-AzVMExtension -Name AzureMonitorWindowsAgent -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name>
Linux
Remove-AzVMExtension -Name AzureMonitorLinuxAgent -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name>
在 Azure 虚拟机规模集上卸载 Azure Monitor 代理
使用 Remove-AzVmssExtension PowerShell cmdlet 卸载Azure虚拟机扩展组上的Azure Monitor代理程序。
Windows
$vmss = Get-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name>
Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name AzureMonitorWindowsAgent
Update-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name> -VirtualMachineScaleSet $vmss
Linux
$vmss = Get-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name>
Remove-AzVmssExtension -VirtualMachineScaleSet $vmss -Name AzureMonitorLinuxAgent
Update-AzVmss -ResourceGroupName <resource-group-name> -VMScaleSetName <vmss-name> -VirtualMachineScaleSet $vmss
在启用了Azure Arc的服务器上卸载Azure Monitor代理
使用以下 PowerShell 命令在启用Azure Arc的服务器上卸载Azure Monitor代理:
Windows
Remove-AzConnectedMachineExtension -MachineName <arc-server-name> -ResourceGroupName <resource-group-name> -Name AzureMonitorWindowsAgent
Linux
Remove-AzConnectedMachineExtension -MachineName <arc-server-name> -ResourceGroupName <resource-group-name> -Name AzureMonitorLinuxAgent
在Azure虚拟机上卸载Azure Monitor代理
使用以下Azure CLI命令卸载Azure虚拟机上的Azure Monitor代理:
Windows
az vm extension delete --resource-group <resource-group-name> --vm-name <virtual-machine-name> --name AzureMonitorWindowsAgent
Linux
az vm extension delete --resource-group <resource-group-name> --vm-name <virtual-machine-name> --name AzureMonitorLinuxAgent
在 Azure 虚拟机规模集上卸载 Azure Monitor 代理
使用 az vmss 扩展 delete Azure CLI cmdlet 来卸载 Azure 虚拟机规模集上的 Azure 监控代理。
Windows
az vmss extension delete --name AzureMonitorWindowsAgent --vmss-name <vmss-name> --resource-group <resource-group-name>
Linux
az vmss extension delete --name AzureMonitorLinuxAgent --vmss-name <vmss-name> --resource-group <resource-group-name>
在启用了Azure Arc的服务器上卸载Azure Monitor代理
使用以下Azure CLI命令在启用Azure Arc的服务器上卸载Azure Monitor代理:
Windows
az connectedmachine extension delete --name AzureMonitorWindowsAgent --machine-name <arc-server-name> --resource-group <resource-group-name>
Linux
az connectedmachine extension delete --name AzureMonitorLinuxAgent --machine-name <arc-server-name> --resource-group <resource-group-name>
更新
注意
始终将代理程序更新为最新版本。
自动扩展推出遵循标准Azure部署做法,安全地部署最新版本的代理。 自动更新需要数周才能推出最新版本。
升级分批发布,因此某些虚拟机、规模集或启用Azure Arc的服务器可能会在其他虚拟机、规模集或启用Azure Arc的服务器之前升级。
如果需要立即升级扩展,请使用本文中所述的手动说明。 仅支持去年发布的代理。
若要更新代理程序,请转到相应的虚拟机或虚拟机规模集。 选择“ 扩展 ”选项卡,检查代理,然后选择“ 更新”。
更新 Azure 虚拟机上的 Azure Monitor 代理
若要一次更新代理,请安装本文中所述的新版本。
使用以下 PowerShell 命令:
Windows
Set-AzVMExtension -ExtensionName AzureMonitorWindowsAgent -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name> -Publisher Microsoft.Azure.Monitor -ExtensionType AzureMonitorWindowsAgent -TypeHandlerVersion <version-number> -Location <location> -EnableAutomaticUpgrade $true
Linux
Set-AzVMExtension -ExtensionName AzureMonitorLinuxAgent -ResourceGroupName <resource-group-name> -VMName <virtual-machine-name> -Publisher Microsoft.Azure.Monitor -ExtensionType AzureMonitorLinuxAgent -TypeHandlerVersion <version-number> -Location <location> -EnableAutomaticUpgrade $true
更新 Azure 虚拟机规模集上的 Azure Monitor 代理
若要手动更新代理, 请重新安装扩展。
在启用了Azure Arc的服务器上更新Azure Monitor代理
若要一次升级代理,请使用以下 PowerShell 命令:
Windows
$target = @{"Microsoft.Azure.Monitor.AzureMonitorWindowsAgent" = @{"targetVersion"=<target-version-number>}}
Update-AzConnectedExtension -ResourceGroupName $env.ResourceGroupName -MachineName <arc-server-name> -ExtensionTarget $target
Linux
$target = @{"Microsoft.Azure.Monitor.AzureMonitorLinuxAgent" = @{"targetVersion"=<target-version-number>}}
Update-AzConnectedExtension -ResourceGroupName $env.ResourceGroupName -MachineName <arc-server-name> -ExtensionTarget $target
选择启用自动扩展升级,即可自动更新代理程序。
使用以下 PowerShell 命令:
Windows
Update-AzConnectedMachineExtension -ResourceGroup <resource-group-name> -MachineName <arc-server-name> -Name AzureMonitorWindowsAgent -EnableAutomaticUpgrade
Linux
Update-AzConnectedMachineExtension -ResourceGroup <resource-group-name> -MachineName <arc-server-name> -Name AzureMonitorLinuxAgent -EnableAutomaticUpgrade
更新 Azure 虚拟机上的 Azure Monitor 代理
若要一次更新代理,请先卸载现有代理版本。 然后,按照本文中所述安装新版本。
Windows
az vm extension set --name AzureMonitorWindowsAgent --publisher Microsoft.Azure.Monitor --vm-name <virtual-machine-name> --resource-group <resource-group-name> --enable-auto-upgrade true
Linux
az vm extension set --name AzureMonitorLinuxAgent --publisher Microsoft.Azure.Monitor --vm-name <virtual-machine-name> --resource-group <resource-group-name> --enable-auto-upgrade true
更新 Azure 虚拟机规模集上的 Azure Monitor 代理
若要手动更新代理, 请重新安装扩展。
在启用了Azure Arc的服务器上更新Azure Monitor代理
若要一次性升级代理,请使用以下Azure CLI命令:
Windows
az connectedmachine upgrade-extension --extension-targets "{\"Microsoft.Azure.Monitor.AzureMonitorWindowsAgent\":{\"targetVersion\":\"<target-version-number>\"}}" --machine-name <arc-server-name> --resource-group <resource-group-name>
Linux
az connectedmachine upgrade-extension --extension-targets "{\"Microsoft.Azure.Monitor.AzureMonitorLinuxAgent\":{\"targetVersion\":\"<target-version-number>\"}}" --machine-name <arc-server-name> --resource-group <resource-group-name>
通过选择启用 自动扩展升级来启用代理的自动更新。
使用以下Azure CLI命令:
Windows
az connectedmachine extension update --name AzureMonitorWindowsAgent --machine-name <arc-server-name> --resource-group <resource-group-name> --enable-auto-upgrade true
Linux
az connectedmachine extension update --name AzureMonitorLinuxAgent --machine-name <arc-server-name> --resource-group <resource-group-name> --enable-auto-upgrade true
使用 AgentSettings 数据收集规则(DCR)配置Azure Monitor代理参数(例如本地缓存磁盘配额),以满足监视需求。 有关受支持的参数以及创建和关联 AgentSettings DCR 的步骤,请参阅 使用 Azure Monitor 代理设置来配置代理。
相关内容
创建数据收集规则从代理收集数据并将其发送到Azure Monitor。