Azure 为用户提供了可以自己配置的性能监控功能:Azure 诊断扩展。但是在具体配置中,经常会遇到各种各样的问题。不了解监控的工作机制常常给排查带来一定难度。这里我们整理了关于 Azure 虚拟机监控的工作原理,以及在出现问题时的大致排查步骤,希望对读者和用户有所帮助。
以下是 Azure 诊断的简易原理图。简单来说,我们通过在门户中启用诊断,将配置信息发送给虚拟机中运行的 VM 代理。VM 代理收到请求后,进行 Azure 诊断扩展的安装和配置。然后,Azure 诊断根据配置文件,收集虚拟机中的性能数据等,并将其上传到存储账户对应的表中。最后,门户通过 Microsoft.insights 这个资源提供程序,从对应的存储账户中获取数据,并展现出来。Azure 警告可以根据这些监控数据进行告警设置,触发后续行动等。这个过程中的每个环节,每个应用和服务,缺一不可,才能保证监控能正常工作。
现在大家了解了基本的过程,那么在遇到性能数据无法显示的问题时,大概的思路也就很清楚了。
检查诊断扩展是否安装成功
检查
最简单的检查方法,就是在门户中查看扩展状态。
虚拟机中的 Extensions 边栏里列出了该虚拟机安装的所有扩展。诊断扩展在 Linux 系统中为 LinuxDiagnostic; 在 Windows 系统中为 IaaSDiagnostic。
若状态为 Provisioning succeeded,则说
明扩展安全成功。若是其他状态如 Not Available 或者 Failed,则说明安装可能有问题。这时就需要排查安装问题。
问题排查
由于 Azure 对虚拟机的管理都是通过 VM Agent 来完成的。因此,安装不成功的大多数原因都在于 VM Agent 工作不正常。那么如何检查呢?
-
Linux
以 root 身份运行下面命令,查看 VM Agent 的版本,系统版本,Python 版本和运行状态。
# waAgent -daemon 2017/07/19 12:19:19.184938 INFO Azure Linux Agent Version:2.2.13 2017/07/19 12:19:19.189233 INFO OS: centos 7.3.1611 2017/07/19 12:19:19.194076 INFO Python: 2.7.5 2017/07/19 12:19:19.198558 INFO Daemon is already running: 808
检查代理版本和状态
默认情况下,系统会自动更新版本到最新版。请参考 WALinuxAgent 查看是否是最新的版本。在排查问题过程中,建议首先尝试将 VM Agent 升级到最新版本后再继续操作。参考文档 进行 VM Agent 的安装和升级。
若当时虚拟机中 VM Agent 服务处于停止状态,以 root 身份执行下面命令进行启动:
# waAgent -start
如果是经典模式虚拟机,您还需要检查虚拟机是否启用了 VM Agent。如果未更新 Azure 虚拟机的配置文件,即使安装成功,Azure 也无法判断您是否安装了 VM Agent,因此也不会使用该 Agent 进行扩展管理。
以下步骤需要在 AzurePowershell 中执行。首先判断 VM 是否已经设置了启用 VM Agent:
$vm = Get-AzureVM -ServiceName $serviceName -Name $vmname “$vm.VM.ProvisionGuestAgent”
如果 $vm.VM.ProvisionGuestAgent
为 true
,说明 VM 已启用 VM Agent。剩余步骤即可跳过。 如果 $vm.VM.ProvisionGuestAgent
为 false
,说明尚未启用 VM Agent。执行以下命令启用:
$vm = Get-AzureVM -serviceName $serviceName -Name $vmname $vm.VM.ProvisionGuestAgent = $TRUE Update-AzureVM -Name $name -VM $vm.VM -ServiceName $svc
在 VM Agent 工作正常的情况下,诊断扩展依旧安装不成功,则需要通过日志来排查问题。 /var/log/waAgent.log 是 VM Agent 的日志输出,日志中会记录所有的虚拟机通过 VM Agent 与 Azure 平台的交互。
关于Windows下如何进行排查的步骤,可以点击这里进行查看。