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

将 Azure 网络观察程序扩展更新到最新版本

项目03/19/2024

Azure 网络观察程序是一项网络性能监视、诊断和分析服务,可对 Azure 网络进行监视。 若要按需捕获网络流量和使用 Azure VM 上的其他高级功能,必须具备网络观察程序代理虚拟机 (VM) 扩展。 它用于连接监视器、连接故障排除和数据包捕获。

先决条件

    具有活动订阅的 Azure 帐户。 如果没有帐户,请创建免费帐户。 已安装网络观察程序扩展的 Azure 虚拟机 (VM)。

最新版本

1.4.3206.1

标识最新版本

使用 az vm extension image list 命令确定 VM 操作系统的网络观察程序扩展的最新版本。

# Identify latest version of Network Watcher extension for Linux. az vm extension image list --name 'NetworkWatcherAgentLinux' --publisher 'Microsoft.Azure.NetworkWatcher' --latest --location 'eastus' # Identify latest version of Network Watcher extension for Windows. az vm extension image list --name 'NetworkWatcherAgentWindows' --publisher 'Microsoft.Azure.NetworkWatcher' --latest --location 'eastus'

使用 PowerShell 脚本更新扩展

如果你拥有大型部署,请使用 PowerShell 脚本一次更新多个 VM。 以下 PowerShell 脚本可更新订阅中所有 Windows VM 的网络观察程序扩展:

<# 
    .SYNOPSIS 
    This script will scan all VMs in the provided subscription and upgrade any out of date AzureNetworkWatcherExtensions  
    .DESCRIPTION 
    This script should be no-op if AzureNetworkWatcherExtensions are up to date 
    Requires Azure PowerShell 4.2 or higher to be installed (e.g. Install-Module AzureRM). 
    .EXAMPLE 
    .\UpdateVMAgentsInSub.ps1 -SubID F4BC4873-5DAB-491E-B713-1358EF4992F2 -NoUpdate 
#>
 
[CmdletBinding()] 
param( 
    [Parameter(Mandatory=$true)] 
    [string] $SubID, 
    [Parameter(Mandatory=$false)] 
    [Switch] $NoUpdate = $false, 
    [Parameter(Mandatory=$false)] 
    [string] $MinVersion = "1.4.2573.1" 
)  
function NeedsUpdate($version) 
{ 
    if ([Version]$version -lt [Version]$MinVersion)
	{ 
        $lessThan = $true 
    }else{ 
        $lessThan = $false 
    } 
    return $lessThan 
}   
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*"
 
    foreach ($extension in $vm.Extensions) 
    { 
        if ($extension.Name -eq "AzureNetworkWatcherExtension") 
        { 
            if (NeedsUpdate($extension.TypeHandlerVersion)) 
            { 
                $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 " -NoNewline 
                    Remove-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name -Name "AzureNetworkWatcherExtension" -Force 
                    Write-Host "... " -NoNewline 
                    $type = if ($isitWindows) { "NetworkWatcherAgentWindows" } else { "NetworkWatcherAgentLinux" } 
                    Set-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -Location $vmName.Location -VMName $vm.Name -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type $type -typeHandlerVersion $MinVersion
                    Write-Host "Done" 
                } 
                else 
                { 
                    Write-Host "Found $(if ($isitWindows) {"Windows"} else {"Linux"}) VM that needs to be updated: 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" 
}

手动更新扩展

若要更新扩展,需要知道扩展版本。

检查扩展版本

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

使用 Azure 门户

    在 Azure 门户中转到 VM 的“扩展”窗格。 选择“AzureNetworkWatcher”扩展,查看“详细信息”窗格。 在“版本”字段中找到版本号。

使用 Azure CLI

在 Azure CLI 提示符下运行以下命令:

az vm get-instance-view --resource-group  "SampleRG" --name "Sample-VM"

在输出中找到“AzureNetworkWatcherExtension”,并从输出中的“TypeHandlerVersion”字段确定版本号。

有关扩展的信息会在 JSON 输出中多次出现。 “扩展”块下提供了扩展的完整版本号。

使用 PowerShell

在 PowerShell 提示符下运行以下命令:

Get-AzVM -ResourceGroupName "SampleRG" -Name "Sample-VM" -Status

在输出中找到“Azure Network Watcher extension”,并从输出中的“TypeHandlerVersion”字段确定版本号。

更新扩展

如果你的版本低于上面提到的最新版本,请使用以下任一选项更新扩展。

选项 1:使用 PowerShell

运行以下命令:

#Linux command
Set-AzVMExtension -ResourceGroupName "myResourceGroup1" -Location "WestUS" -VMName "myVM1" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentLinux"

#Windows command
Set-AzVMExtension -ResourceGroupName "myResourceGroup1" -Location "WestUS" -VMName "myVM1" -Name " AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -ForceRerun "True"

如果这不起作用。 请使用以下步骤移除并重新安装扩展,以安装最新版本。

删除扩展

#Same command for Linux and Windows
Remove-AzVMExtension -ResourceGroupName "SampleRG" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension"

重新安装扩展

#Linux command
Set-AzVMExtension -ResourceGroupName "SampleRG" -Location "centralus" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentLinux" -typeHandlerVersion "1.4"

#Windows command
Set-AzVMExtension -ResourceGroupName "SampleRG" -Location "centralus" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -typeHandlerVersion "1.4"

选项 2:使用 Azure CLI

强制执行升级。

#Linux command
az vm extension set --resource-group "myResourceGroup1" --vm-name "myVM1" --name "NetworkWatcherAgentLinux" --publisher "Microsoft.Azure.NetworkWatcher" --force-update

#Windows command
az vm extension set --resource-group "myResourceGroup1" --vm-name "myVM1" --name "NetworkWatcherAgentWindows" --publisher "Microsoft.Azure.NetworkWatcher" --force-update

如果不起作用,请删除再重新安装该扩展,然后按照以下步骤自动添加最新版本。

删除扩展.

#Same for Linux and Windows
az vm extension delete --resource-group "myResourceGroup1" --vm-name "myVM1" -n "AzureNetworkWatcherExtension"

再次安装该扩展。

#Linux command
az vm extension set --resource-group "DALANDEMO" --vm-name "Linux-01" --name "NetworkWatcherAgentLinux" --publisher "Microsoft.Azure.NetworkWatcher"

#Windows command
az vm extension set --resource-group "DALANDEMO" --vm-name "Linux-01" --name "NetworkWatcherAgentWindows" --publisher "Microsoft.Azure.NetworkWatcher"

选项 3:重启 VM

如果已将网络观察程序扩展的自动升级设置为 True,请重启 VM 安装以获取最新扩展。

支持

如果在本文的任何位置需要更多帮助,请参阅 Linux 或 Windows 的网络观察程序扩展文档。 还可以联系 MSDN Azure 和 Stack Overflow 论坛上的 Azure 专家。 或者,提交 Azure 支持事件。 请转到 Azure 支持站点并选择“获取支持”。 有关使用 Azure 支持的信息,请阅读 Microsoft Azure 支持常见问题解答。