Azure 虚拟机诊断设置问题排查
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
查看 VM Agent 是否安装。
C:\WindowsAzure\Packages是否有 WaAppAgent 这个应用程序。若没有安装,请参考VM Agent 和扩展程序的VM Agent 和扩展程序 - 第 2 部分进行安装和配置。
经典虚拟机需要同时检查 VM Agent 是否在虚拟机中启用,具体参见 Linux 部分问题排查)。
任务管理器中查看 WindowsAzureGuestAgent 是否运行。
若没有截图中的进程,说明 VM Agent 可能没有运行。点击C:\WindowsAzure\Packages中的应用程序WaAppAgent进行启动。
同时避免重启后 VM Agent 不会自动启动,在服务管理中查看该服务是否设置为自动启动。
若运行不正常,请提供以下日志以供排查:
复制
C:\WindowsAzure\Logs
C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
关于 Windows VM agent 的更多信息,请参考Azure 虚拟机代理概述及VM Agent 和扩展程序。
检查诊断配置文件是否正确
通过门户配置的诊断扩展,平台会首先验证用户的输入,再给 VM Agent 发送标准的配置,因此扩展配置一般不会有问题。但有些用户可能希望使用 PowerShell 脚本来启用扩展,这样可以自定义一些需要保存的日志文件,或者添加删除某些性能指标;在这种情况下,若配置文件设置不当,很可能造成扩展安装成功,但工作不正常的情况。
通过查看扩展日志来找到原因:
Linux 中日志位于/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//下面,extension.log 记录了所有的配置变更,以及错误信息。根据错误信息进行配置文件的修正,一般能解决大多数问题:如性能指标写的不对;存储账号密、SAS 配置错误等。
Windows 中日志位于C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\Status中。
如果在更新了 VM agent 版本,重启 Waagent 服务,甚至重启了虚拟机的情况下,安装扩展仍然出现问题,或者扩展仍然无法正常工作,请将下面日志打包提供:
复制
Linux:
/var/log/waagent.log
/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//*
/var/lib/waagent/*.xml
Windows:
C:\WindowsAzure\Logs
C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
检查存储账号是否有性能数据
若诊断扩展运行正常,则对应的存储账号中将会存在对应的存放性能数据的表。且表中会有虚拟机的性能数据存在。
使用 Microsoft Azure Storage Explorer 连接到存储账户,展开 Tables 检查表。用于存放性能数据的表以 WADMetrics 开头。根据存放的性能数据的时间频度,后跟 PT1M 或者 PT1H,分别代表过去一分钟和过去一小时。该表每 10 天会新建一个,因此,P10D 代表存最最多存放 10 天的数据。最后是表的版本和最新数据的时间段。如 WADMetricsPT1HP10DV2S20170510 代表该表存放的是 2017 年 05 月 10 日之后 10 天内的每小时的统计数据。
表中的数据,一行为某个虚拟机的某个时间点的单个性能指标的统计数据。其中记录了虚拟机名,时间戳,性能指标名称,时间范围内的采样次数,最大值,最小值,平均值,以及总量。
Note
对于不同的性能指标,并不是每一列都会用到。
在排查性能视图不可见的问题时,用户首先要明确的是什么时间段的数据不可见,然后找到对应的表,查看表中是否有虚拟机的对应时刻的性能指标记录。由于表中包含数以万计的实体,您可以使用 Microsoft Azure Storage Explorer 提供的过滤功能筛选结果,但由于单次下载到内存中的数据并不多,不一定能查到所需数据;在这种情况下,建议将表导出到本地 csv 文件中进行筛选。
如果表中确实没有对应的数据,则需要再次检查配置文件确认存储账号设置是否有误,或者数据上传是否有错。如果是上传错误,在 VM agent 的日志,或者扩展日志中将会有对应的记录。
检查订阅是否注册了 Microsoft.insights
通过以上步骤的排查,但数据依旧没有显示,则最大的可能性就是负责处理性能数据显示的资源提供程序 Microsoft.insights 没有注册,导致门户无法获取和处理数据。检查方法如下:
门户中搜索 Subscription。打开后点击对应的订阅,在 Resource Providers 边栏中查看 Microsoft.insights 是否是注册的状态。若没有注册,点击注册将其注册到订阅中。再回到虚拟机页面查看性能视图。
联系技术支持
如果上述所有操作都尝试过,但还是有问题,请收集下面信息提供给技术支持团队进行个案分析。
复制
Linux:
/var/log/waagent.log
/var/log/azure/Microsoft.OSTCExtensions.LinuxDiagnostic//*
/var/lib/waagent/*.xml
Windows:
C:\WindowsAzure\Logs
C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\\*
立即访问http://market.azure.cn
Azure 虚拟机诊断设置问题排查的更多相关文章
- 排查 Azure 虚拟机的远程桌面连接问题
与基于 Windows 的 Azure 虚拟机 (VM) 的远程桌面协议 (RDP) 连接可能会因各种原因而失败,使用户无法访问 VM. 问题可能出在 VM 上的远程桌面服务.网络连接或主计算机上的远 ...
- 运行预构建 Linux 映像的 Windows Azure 虚拟机中的交换空间 – 第 1 部分
本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 随着基础结构服务(虚拟机和虚拟网络)近期在 Windows Azure 上正式发布,越来越多的企业工作负荷正在向 ...
- Azure 虚拟机安全加固整理
这篇文档不是原创,只是基于Azure官网上的Doc进行了相关链接的整理,从简单层面的安全设置,到更高层面的安全架构考量,以及Azure安全的白皮书及最佳实践,送给需要的你们,定有一款适合你! 做好数据 ...
- Azure Backup (3) 使用Azure备份服务,备份Azure虚拟机
<Windows Azure Platform 系列文章目录> 本将介绍,如何使用Azure备份服务,备份Azure虚拟机. 我们先预先创建2台Windows VM (命名为LeiVM00 ...
- 使用mysqlslap对mysql进行压测,观察Azure虚拟机cpu使用率
一直想做这个测试,原因很简单,很多人一直比较怀疑Azure的虚拟机性能,说相同的配置凭啥比阿里的虚拟机贵那么多,其实,我自己以前也怀疑过,但是接触Azure的几个月,确实发现Azure的虚拟机性能真的 ...
- Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机
<Windows Azure Platform 系列文章目录> 本文介绍的是国外的Azure Global.如果是国内由世纪互联运维的Azure China,请参考这篇文档: Azure ...
- Windows Azure Virtual Machine (31) 迁移Azure虚拟机
<Windows Azure Platform 系列文章目录> 为什么要写这篇Blog? 之前遇到过很多客户提问: (1)我之前创建的虚拟机,没有加入虚拟网络.现在需要重新加入虚拟机网络, ...
- Windows Azure Virtual Machine (33) Azure虚拟机删除重建
<Windows Azure Platform 系列文章目录> 注意:本文介绍的重建Azure虚拟机,必须在同一个订阅内删除重建,必须在同一个订阅内删除重建,必须在同一个订阅内删除重建. ...
- Windows Azure 虚拟机备份
如果我们要在Windows Azure的虚拟机上进行一些“重要且高危”的操作,我们通常会想到使用快照或者备份功能.但是在Windows Azure上是没有虚拟机快照功能的,尽管我们可以对虚拟机的磁盘文 ...
随机推荐
- 全网最全的Windows下Python2 / Python3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
不多说,直接上干货! 建议,你用Anaconda2或Anaconda3. 见 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库( ...
- 如何用Python来处理数据表的长宽转换(图文详解)
不多说,直接上干货! 很多地方都需用到这个知识点,比如Tableau里. 通常可以采取如python 和 r来作为数据处理的前期. Tableau学习系列之Tableau如何通过数据透视表方式读取 ...
- gridvew使用技巧2
GridVew1_RowDataBindGridView1.DataKeys[e.Row.RowIndex].Values[].ToString(); foreach (GridViewRow t i ...
- WPF设置控件获取键盘焦点时的样式FocusVisualStyle
控件获取焦点除了用鼠标外,可以通过键盘来获取,比如Tab键或者方向键等,需要设置控件获取键盘焦点时的样式,可以通过设置FrameworkElemnt.FocusVisualStyle属性, 因为几乎所 ...
- Spring Boot项目的内嵌容器
一.关于容器 刚才开始使用spring boot的开发者会有种很直观的感觉,servlet容器“不见了”.之前开发web项目,都是把程序写完后部署到servlet容器(比如Tomcat),但是使用sp ...
- 简单Demo 使用Code Fisrt步骤
使用Code Fisrt步骤 1.开启VS,创建控制台项目:CodeFirstDemo1 2.利用NuGet引进 Entity Framework类库 图住:右击项目名称,在弹出的选 ...
- Repeater控件添加onmouseover和onmouseout事件
网友有问题,在Repeater控件中,需要添加onmouseover和onmouseout事件功能.Insus.NET有叫他参考<onmouseover和onmouseout在Repeater控 ...
- 在jQuery定义自己的扩展方法函数
今早复习昨天的练习jQuery的DropDownList联动功能,如果想看回<jQuery实现DropDownList(MVC)>http://www.cnblogs.com/insus/ ...
- XML反序列化出错,XML 文档(2, 2)中有错误
XML转换为实体类的错误处理方案 一.错误描述: XML反序列化出错,XML 文档(2, 2)中有错误 二.解决方案: 在实体类的字段要加上XmlElement属性 三.具体实现: 1.XML文档 & ...
- Java基础——线程
一. 进程 是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程. 比如在Windows系统中,一个运行的exe就是一个进程. 二.线程 是指进程中的一个执行流 ...