管理 网络观察程序 代理虚拟机扩展

网络观察程序代理虚拟机扩展是某些 Azure 网络观察程序功能所必需的,这些功能捕获网络流量以诊断和监视 Azure 虚拟机 (VM)。 有关详细信息,请参阅 什么是 Azure 网络观察程序?

在本文中,您将学习如何安装、更新和卸载Windows和Linux版的网络观察程序代理。 代理的安装不会中断虚拟机的运行,也不需要重新启动虚拟机。 如果虚拟机是由 Azure 服务部署的,请查看该服务的文档,以确定该服务是否允许在虚拟机中安装扩展。

Note

网络观察程序 Agent 扩展不支持 AKS 集群。

先决条件

  • 一个运行支持操作系统的 Azure 虚拟机(VM)。 更多信息请参见 支持的操作系统。

  • 对 169.254.169.254 的出站 TCP 连接通过 port 80,对 168.63.129.16 的连接通过 port 8037。 该代理使用这些 IP 地址与 Azure 平台进行通信。

  • 互联网连接:网络观察程序 Agent 需要互联网连接才能正常工作。 例如,系统需要连接到存储帐户才能上传抓包。

受支持的操作系统

您可以在以下操作系统上安装网络观察程序代理扩展Windows:

  • Windows Server 2012、2012 R2、2016、2019、2022 和 2025 版本。
  • Windows 10 和 11 版本发布。

Note

目前不支持 Nano Server。

您可以在以下Linux发行版上安装网络观察程序 Agent扩展:

分销 版本
AlmaLinux 9.2
Azure Linux 2.0
CentOS 1操作系统 6.10 和 7
Debian 7 和 8
openSUSE Leap 42.3+
Oracle Linux 6.10 2、7、8 和 9+
Red Hat Enterprise Linux (RHEL) 6.10 3、7、8 和 9.2
洛基Linux 9.1
SUSE Linux Enterprise Server (SLES) 12 和 15(SP2、SP3 和 SP4)
Ubuntu 16+

1 CentOS Linux 已于 2024 年 6 月 30 日结束其生命周期(EOL)。 有关详细信息,请参阅 CentOS 生命周期结束指南。

2延长生命周期 (ELS) 对 Oracle Linux 版本 6.X 的支持于 2024 年 7 月 1 日结束。

3延长生命周期 (ELS) 对 Red Hat Enterprise Linux 6.X 的支持于 2024 年 6 月 30 日结束。

Note

由于发行版特有的内核级限制,Oracle Linux 的 网络观察程序 代理目前不支持互联网控制消息协议(ICMP)监控。

扩展架构

以下 JSON 显示了网络观察程序代理扩展的架构。 该扩展不要求也不支持用户提供的设置,依赖默认配置。

{
    "name": "[concat(parameters('vmName'), '/AzureNetworkWatcherExtension')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "apiVersion": "2023-03-01",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
    ],
    "properties": {
        "autoUpgradeMinorVersion": true,
        "publisher": "Microsoft.Azure.NetworkWatcher",
        "type": "NetworkWatcherAgentWindows",
        "typeHandlerVersion": "1.4"
    }
}
{
    "name": "[concat(parameters('vmName'), '/AzureNetworkWatcherExtension')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "apiVersion": "2023-03-01",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
    ],
    "properties": {
        "autoUpgradeMinorVersion": true,
        "publisher": "Microsoft.Azure.NetworkWatcher",
        "type": "NetworkWatcherAgentLinux",
        "typeHandlerVersion": "1.4"
    }
}

列出已安装的扩展

在 Azure 门户的虚拟机页面,您可以按照以下步骤查看已安装的扩展:

  1. 在“设置”下,选择“扩展 + 应用程序”。

  2. 在“扩展”选项卡中,可以看到虚拟机上所有已安装的扩展。 如果列表很长,使用搜索框筛选。

安装 网络观察程序 Agent VM 扩展

在 Azure 门户中的虚拟机页中,可以按照以下步骤安装网络观察程序代理 VM 扩展:

  1. 在“设置”下,选择“扩展 + 应用程序”。

  2. 选择 + 添加,搜索 网络观察程序 Agent,然后安装。 如果扩展已安装,将显示在扩展列表中。

    显示 Azure 门户中虚拟机扩展页的屏幕截图。

  3. 在“安装扩展”的搜索框中,输入“网络观察程序 Agent”,从列表中选择与你操作系统匹配的扩展,然后选择“下一步”。

  4. 选择“查看 + 创建”,然后选择“创建” 。

更新 网络观察程序 代理虚拟机扩展

检查扩展版本

可使用 Azure 门户、Azure CLI 或 PowerShell 检查扩展版本。

  1. 在 Azure 门户中访问虚拟机的扩展 + 应用。

  2. 在扩展列表中,查看 AzureNetworkWatcherExtension 的版本栏。 如果有新版本可用,最新版本栏显示为(更新可用)。

    显示网络观察程序扩展的屏幕截图。

Note

网络观察程序扩展的最新版本为 1.4.3914.3。

启用自动升级

自动升级让 Azure 平台无需手动干预即可将扩展升级到最新版本。 请按以下步骤检查是否已启用自动升级;如果未启用,请将其启用。

  1. 在Azure门户的虚拟机设置中,选择扩展+应用。

  2. 从扩展列表中选择 AzureNetworkWatcherExtension ,并勾选 自动升级状态 栏。

  3. 如果显示 “禁用”,请从工具栏中选择 “启用自动升级 ”。

    显示网络观察程序扩展的屏幕截图。

  4. 选择是以确认。

    截图显示了在网络观察程序扩展中启用自动升级的确认对话框。

Note

启用自动升级后,Azure会自动更新扩展,无需重启虚拟机。 新版本发布后,这一流程可能需要长达30天。

手动更新

  1. 在Azure门户的虚拟机设置中,选择扩展+应用。

  2. 从扩展列表中选择 AzureNetworkWatcherExtension ,然后从工具栏中选择 “更新 ”。

    显示网络观察程序扩展的屏幕截图。

  3. 选择是以确认。

    截图显示了将 网络观察程序 扩展更新到最新版本的确认对话框。

  4. 更新完成后, 版本 和 最新版本 列显示相同的版本号。

    截图显示了更新到最新版本后的 网络观察程序 扩展。

如果更新后没有应用最新版本,请移除扩展并重新安装:

  1. 从扩展列表中选择 AzureNetworkWatcherExtension,然后选择“卸载”。
  2. 选择 + 添加,搜索 网络观察程序 Agent,然后重新安装。 平台会自动安装最新版本。 更多信息请参见“安装 网络观察程序 代理虚拟机扩展”。

用PowerShell脚本进行大规模更新

如果你有大规模部署,可以用PowerShell脚本一次性更新订阅中的多个虚拟机。 以下脚本将更新订阅中所有未更新的虚拟机上的 网络观察程序 扩展:

<#
    .SYNOPSIS
    This script scans all VMs in the provided subscription and upgrades any out-of-date AzureNetworkWatcherExtensions to the latest available version.
    .DESCRIPTION
    This script is a no-op if AzureNetworkWatcherExtensions are already up to date.
    Requires Azure PowerShell 4.2 or higher to be installed.
    .EXAMPLE
    .\UpdateVMAgentsInSub.ps1 -SubID aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -NoUpdate
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory=$true)]
    [string] $SubID,
    [Parameter(Mandatory=$false)]
    [Switch] $NoUpdate = $false
)
function Get-LatestExtensionVersion($location, $extensionType)
{
    $latestImage = Get-AzVMExtensionImage -Location $location -PublisherName "Microsoft.Azure.NetworkWatcher" -Type $extensionType |
        Sort-Object -Property { [Version]$_.Version } -Descending |
        Select-Object -First 1
    return $latestImage.Version
}
Write-Host "Scanning all VMs in the subscription: $($SubID)"
Set-AzContext -SubscriptionId $SubID
$vms = Get-AzVM
$foundVMs = $false
Write-Host "Starting VM search, this may take a while"
foreach ($vmName in $vms)
{
    # Get Detailed VM info
    $vm = Get-AzVM -ResourceGroupName $vmName.ResourceGroupName -Name $vmName.name -Status
    $isitWindows = $vm.OsName -like "*Windows*"
    $type = if ($isitWindows) { "NetworkWatcherAgentWindows" } else { "NetworkWatcherAgentLinux" }
    $latestVersion = Get-LatestExtensionVersion -location $vmName.Location -extensionType $type

    foreach ($extension in $vm.Extensions)
    {
        if ($extension.Name -eq "AzureNetworkWatcherExtension")
        {
            if ([Version]$extension.TypeHandlerVersion -lt [Version]$latestVersion)
            {
                $foundVMs = $true
                if (-not ($NoUpdate))
                {
                    Write-Host "Found VM that needs to be updated: subscriptions/$($SubID)/resourceGroups/$($vm.ResourceGroupName)/providers/Microsoft.Compute/virtualMachines/$($vm.Name) -> Updating to $latestVersion " -NoNewline
                    Remove-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name -Name "AzureNetworkWatcherExtension" -Force
                    Write-Host "... " -NoNewline
                    Set-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -Location $vmName.Location -VMName $vm.Name -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type $type -TypeHandlerVersion $latestVersion
                    Write-Host "Done"
                }
                else
                {
                    Write-Host "Found $(if ($isitWindows) {"Windows"} else {"Linux"}) VM that needs to be updated to $($latestVersion): subscriptions/$($SubID)/resourceGroups/$($vm.ResourceGroupName)/providers/Microsoft.Compute/virtualMachines/$($vm.Name)"
                }
            }
        }
    }
}

if ($foundVMs)
{
    Write-Host "Finished $(if ($NoUpdate) {"searching"} else {"updating"}) out of date AzureNetworkWatcherExtension on VMs"
}
else
{
    Write-Host "All AzureNetworkWatcherExtensions up to date"
}

卸载 网络观察程序 代理 VM 扩展

你可以在 Azure 门户的虚拟机页上,按照以下步骤卸载 网络观察程序 代理 VM 扩展:

  1. 在“设置”下,选择“扩展 + 应用程序”。

  2. 从扩展列表中选择 AzureNetworkWatcherExtension,然后选择“卸载”。

    Note

    你可能会看到 网络观察程序 Agent VM 扩展的名称不同于 AzureNetworkWatcherExtension。

常见问题 (FAQ)

要解答关于网络观察程序 Agent的最常见问题,请参阅网络观察程序 Agent常见问题解答。