将 Azure 网络观察程序扩展更新到最新版本
Azure 网络观察程序是一项网络性能监视、诊断和分析服务,可对 Azure 网络进行监视。 若要按需捕获网络流量和使用 Azure VM 上的其他高级功能,必须具备网络观察程序代理虚拟机 (VM) 扩展。 它用于连接监视器、连接故障排除和数据包捕获。
先决条件
- 具有活动订阅的 Azure 帐户。 如果没有,请创建一个试用版订阅。
- 已安装网络观察程序扩展的 Azure 虚拟机 (VM)。
最新版本
网络观察程序扩展的最新版本为 1.4.3422.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 'chinaeast'
使用 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 网络观察程序扩展,并从输出中的“TypeHandlerVersion”字段识别版本号。
应会看到类似以下屏幕截图的内容:
更新扩展
如果你的版本低于上面提到的最新版本,请使用以下任一选项更新扩展。
选项 1:使用 PowerShell
运行以下命令:
#Linux command
Set-AzVMExtension -ResourceGroupName "myResourceGroup1" -Location "ChinaNorth" -VMName "myVM1" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentLinux"
#Windows command
Set-AzVMExtension -ResourceGroupName "myResourceGroup1" -Location "ChinaNorth" -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 "chinaeast" -VMName "Sample-VM" -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentLinux" -typeHandlerVersion "1.4"
#Windows command
Set-AzVMExtension -ResourceGroupName "SampleRG" -Location "chinaeast" -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 的网络观察程序扩展文档。 还可通过 Azure 支持联系 Azure 专家。 或者,提交 Azure 支持事件。 请转到 Azure 支持站点提交请求。 有关使用 Azure 支持的信息,请阅读 Azure 支持常见问题。