Partilhar via


Microsoft Azure 托管服务监测

没有什么服务是无敌的。当服务发生故障时,每分每秒都意味着客户的影响和经济损失。因此,通过服务监测来迅速报警,以及快速定位和修复问题都非常重要。

从外部或者客户角度来看,Azure托管服务和其他传统服务没有什么区别,因此,很多的监测工具仍然可以用在托管服务上,比如Probe探测,Google analytics。

若从服务内部接口来看,Azure托管服务和传统服务还是有很多不同之处的:托管服务运行在分布式环境下,每台服务器都是无状态的,随时可能被回收重建。因此,把监测日志放到服务器不太可靠,日志随时可能丢失。而且,把日志分散的保存在多台机器上也不利于查询使用。另外,托管服务往往依赖其他云服务(如存储),用户不能够登录到这些依赖服务的后端来检测,其实用户也没有这个义务。

在这篇文章,我想列举一下适用于Azure托管服务的监测方法,当作一个索引。

监测位置

监测方法

虚拟机

虚拟机日志

如:Application Log, Windows Event Log, IIS Log 及自定义日志文件

性能数据

如CPU,Memory,每秒请求数…

GuestOS Agent Log

3rd party monitoring tool (e.g. NewRelic)

外部

Probe

analytics (e.g. google analytics)

Azure内置监控功能

Azure服务仪表盘(Status Dashboard)

Storage Metrics & Logs

Azure管理网站

其他

Application Insight

 

 

 

虚拟机日志

有很多的日志默认输出到服务器本地磁盘上,比如Application Log,Windows Event Log 和 IIS Log,对于此类型的日志,全都可以使用WAD来自动上传到Azure Storage上,这样便于数据查看和过滤。在可靠性设计这篇文章中已经提到了配置方法,大家也可以直接看官方MSDN文档。

https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-diagnostics/

https://msdn.microsoft.com/library/azure/gg433048.aspx

 

性能数据

性能数据是评价服务器运行状态、负载的重要指标。WAD可以收集性能数据并存放到Table Storage上。

用WAD收集性能数据的方式与收集日志基本一致,用户可以从常用Counter集合中勾选需要的Counter,并调整采样率,也可以直接输入定义的Counter名称。

 

至于如何查看和使用这些性能数据,开发者可以自己编写监控程序来读取数据,也可以使用第三方的监控服务,如Azure Watch。我这里演示一下如何使用Azure管理网站查看性能数据。

  1. 首先配置好WAD,部署网站。
  2. 登陆Azure管理网站,导航到托管服务配置页,把Monitoring LEVEL设置为 VERBOSE
  3. 导航到MONITOR页,点击 “ADD METRICS”,从列表中选择需要监视的Counter集合
  4. 性能数据会显示到上方的图表中,数据一般会有10-20分钟的延迟。

 

  1. 用户可以点击“ADD RULE”来添加警报规则,当性能数据超越规定阈值时,可以触发警报,自动发信给系统管理员。

 

 

GuestOS Agent Log

每个托管服务实例上运行了一组代理进程,他们的作用是初始化程序运行环境,启动程序并自动恢复程序,同时也会和平台沟通,汇报实例的运行状态。

作为一般的开发者,不需要关心此日志。不过感兴趣的话,可以远程登陆虚拟机,日志保存在C:\Logs目录下。这里推荐同事的一篇博文,他解释了代理进程的功能和启动流程。

https://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx

 

3rd party monitoring tool

有一些第三方的工具,以托管服务启动任务的形式运行,从虚拟机上观测程序,并把数据返回到他们的管理网页上,比如New Relic。我没有用过,大家可以自己尝试

https://newrelic.com/azure

 

Probe

我也不知道怎么翻译,总之是一种常见的监测方式。从外部定期发送请求到网站(或服务),探测服务器是否相应正确,以及响应是否迅速。很多第三方服务商提供此类服务。Azure平台也提供此类服务”ENDPOINTS MONITORING”,不过还处在Beta阶段,功能单一,不支持发信报警功能,好处是不要钱。

ENDPOINT MONITORING 的设置方法如下:

  1. 打开Azure管理网站,导航到托管服务的配置页。
  2. 设置ENDPOINTS节,填写监测的服务地址,以及监测地理位置。

 

  1. 在托管服务DASHBOARD页观看监测记录

 

 

Azure 服务仪表盘(Azure Status Dashboard)

Azure平台提供了一个服务仪表盘,它显示了所有Azure服务当前的运行状态。用户也可以查询历史上发生过的问题。当用户的程序出现故障时,不妨先看一眼仪表盘,若是Azure服务故障,可以等待Azure平台修复问题。

Global Azure

https://azure.microsoft.com/en-us/status/#current

China Azure (21世纪互联)

https://www.windowsazure.cn/support/service-dashboard/

 

Azure管理网站

Azure管理网站集成了各种Azure服务,用户可以从这里获得服务的运行状态信息。当Azure平台出故障时,平台也会推送通知到受影响用户的管理网站上。因此,当服务出问题时,用户可以登录管理网站,看看是否有平台故障,或者是否托管服器处在不正常的状态。

 

Storage Metrics & Logs

Azure Storage提供的服务器端的日志和监测功能。此功能常被用作Storage相关的Troubleshooting。

https://msdn.microsoft.com/en-us/library/azure/hh343270.aspx

 

Application Insight

大家可能发现,Azure托管服务的监测日志比较分散,用户需要很多的配置才能监测服务。 App Insight是微软正在开发的产品,他集成了上述多种监测日志,然后在统一的面板上显示关于目标服务的所有信息。App Insight简化了用户对监测的配置操作,使用和更容易洞察服务的问题。目前,此产品还在beta阶段,版本变化比较快,不过很有潜力。参考如下链接:

https://msdn.microsoft.com/en-us/library/dn481095.aspx