安装和管理 Azure Monitor 代理
本文内容
本文详细介绍在 Azure 虚拟机、规模集和已启用 Azure Arc 的服务器上安装、卸载、更新和配置 Azure Monitor 代理 的不同方法。
重要
Azure Monitor 代理安装到客户端计算机后,至少需要一个数据收集规则 (DCR) 才能开始收集数据。 根据你使用的安装方法,可能会也可能不会自动创建 DCR。 如果没有,则需要按照使用 Azure Monitor 代理收集数据 中的指导配置数据收集。
先决条件
有关 Azure Monitor 代理的先决条件和其他要求,请参阅以下文章:
重要
安装、升级或卸载 Azure Monitor 代理不需要重启计算机。
安装选项
下表列出了在 Azure 虚拟机和已启用 Azure Arc 的服务器上安装 Azure Monitor 代理的不同选项。 Azure Arc 代理 必须安装在任何不在 Azure 中的计算机上,才能安装 Azure Monitor 代理。
安装方法
说明
VM 扩展
采用以下任一方法使用 Azure 扩展框架安装代理。 此方法不会创建 DCR,因此必须至少创建一个 DCR 并将其与代理关联,然后才能开始数据收集。
创建 DCR
在 Azure 门户中创建 DCR 时,Azure Monitor 代理会安装在添加为 DCR 资源的任何计算机上。 代理将立即开始收集 DCR 中定义的数据。
容器见解
在 Kubernetes 群集上启用容器见解后,Azure Monitor 代理的容器化版本会安装在群集中,并创建一个 DCR,立即开始收集数据。 可以根据使用数据收集规则在容器见解中配置数据收集和成本优化 的指导修改此 DCR。
客户端安装程序
使用适用于 Windows 10 和 Windows 11 客户端的 Windows MSI 安装程序安装代理。
Azure Policy
使用 Azure Policy 在 Azure 虚拟机和已启用 Azure Arc 的服务器上自动安装代理,并自动将它们与所需的 DCR 关联。
注意
若要跨租户发送数据,必须先启用 Azure Lighthouse 。
不支持克隆安装了 Azure Monitor 代理的计算机。 适合这些情况的最佳做法是使用 Azure Policy 或基础结构即代码工具大规模部署 AMA。
安装代理扩展
本部分提供有关使用虚拟机扩展安装 Azure Monitor 代理的详细信息。
可以使用 PowerShell 命令添加虚拟机扩展,由此在 Azure 虚拟机和已启用 Azure Arc 的服务器上安装 Azure Monitor 代理。
Azure 虚拟机
使用以下 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 虚拟机规模集
使用 Add-AzVmssExtension PowerShell cmdlet 在 Azure 虚拟机规模集上安装 Azure Monitor 代理。
已启用 Azure Arc 的服务器
使用以下 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 CLI 命令添加虚拟机扩展,由此在 Azure 虚拟机和已启用 Azure Arc 的服务器上安装 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 虚拟机规模集
使用 az vmss extension set CLI cmdlet 在 Azure 虚拟机规模集上安装 Azure Monitor 代理。
已启用 Azure Arc 的服务器
使用以下 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 Arc 的服务器上安装 Azure Monitor 代理,以及创建数据收集规则关联。 创建关联之前,必须先创建任何数据收集规则。
有关安装代理和创建关联的示例模板,请参阅以下资源:
使用任何资源管理器模板的部署方法 安装模板,例如以下命令。
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>"
卸载
若要使用 Azure 门户卸载 Azure Monitor 代理,请转到虚拟机、规模集或已启用 Azure Arc 的服务器。 选择“扩展”选项卡,然后选择“AzureMonitorWindowsAgent”或“AzureMonitorLinuxAgent”。 在打开的对话框中,选择“卸载”。
在 Azure 虚拟机上卸载
使用以下 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 虚拟机规模集上安装
使用 Remove-AzVmssExtension PowerShell cmdlet 在 Azure 虚拟机规模集上卸载 Azure Monitor 代理。
在已启用 Azure Arc 服务器上卸载
使用以下 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 虚拟机上卸载
使用以下 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 虚拟机规模集上安装
使用 az vmss extension delete CLI cmdlet 在 Azure 虚拟机规模集上卸载 Azure Monitor 代理。
在已启用 Azure Arc 服务器上卸载
使用以下 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 虚拟机上的更新
若要执行代理的一次性更新,必须先卸载现有代理版本,然后按照说明安装新版本。
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 Arc 的服务器上更新
要执行代理的一次升级,请使用以下 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 虚拟机上的更新
若要执行代理的一次性更新,必须先卸载现有代理版本,然后按照说明安装新版本。
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 Arc 的服务器上更新
要执行代理的一次升级,请使用以下 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>
建议通过以下 PowerShell 命令启用自动扩展升级 功能,以启用代理的自动更新。
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
数据收集规则 (DCR) 充当计算机上 Azure Monitor 代理 (AMA) 的管理工具。 AgentSettings
DCR 可用于配置某些 AMA 参数,以便将代理配置为满足特定的监视需求。
注意
使用 AgentSettings
DCR 时应注意的重要事项:
AgentSettings
DCR 目前只能使用 ARM 模板进行配置。
AgentSettings
必须是没有其他设置的单个 DCR。
虚拟机和 AgentSettings
DCR 必须位于同一区域。
支持的参数
AgentSettings DCR 当前支持配置以下参数:
参数
说明
有效值
MaxDiskQuotaInMB
为了提供复原能力,代理在其无法发送数据时在本地缓存中收集数据。 还原连接后,代理将能在缓存中发送数据。 该参数是 Azure Monitor 代理日志文件和缓存使用的磁盘空间量 (MB)。
Linux:1025-51199 Windows:4000-51199
UseTimeReceivedForForwardedEvents
更改 Sentinel WEF 表中的 WEF 列,以使用 TimeReceived 而不是 TimeGenerated 数据
0 或 1
设置 AgentSettings DCR
准备环境:
在虚拟机上安装 AMA 。
创建 DCR:
以下示例将 AMA 缓存使用的最大磁盘空间量设置为 5000 MB。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"name": "dcr-contoso-01",
"apiVersion": "2023-03-11",
"properties":
{
"description": "A simple agent settings",
"agentSettings":
{
"logs": [
{
"name": "MaxDiskQuotaInMB",
"value": "5000"
}
]
}
},
"kind": "AgentSettings",
"location": "chinanorth"
}
]
}
将 DCR 与计算机相关联:
使用这些 ARM 模板和参数文件:
ARM 模板文件
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"type": "string",
"metadata": {
"description": "The name of the virtual machine."
}
},
"dataCollectionRuleId": {
"type": "string",
"metadata": {
"description": "The resource ID of the data collection rule."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRuleAssociations",
"apiVersion": "2021-09-01-preview",
"scope": "[format('Microsoft.Compute/virtualMachines/{0}', parameters('vmName'))]",
"name": "agentSettings",
"properties": {
"description": "Association of data collection rule. Deleting this association will break the data collection for this virtual machine.",
"dataCollectionRuleId": "[parameters('dataCollectionRuleId')]"
}
}
]
}
参数文件
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"value": "my-azure-vm"
},
"dataCollectionRuleId": {
"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
}
}
}
激活设置:
重启 AMA 以应用更改。
后续步骤
创建数据收集规则 ,通过代理收集数据并将其发送给 Azure Monitor。