Windows Azure 平台即服务(PaaS)计算诊断数据

当必须解决问题时,需要了解的最重要的事项之一是可用的诊断数据。 如果不知道在何处查找日志或其他诊断信息,可能需要使用试用和错误或 shotgun 方法来进行故障排除。 如果有权访问日志,则可以更好地诊断任何问题,即使它不在你的专业知识范围内。

本文讨论 Azure 平台即服务(PaaS)计算环境中提供的数据。 其中介绍了如何从 Windows PaaS 虚拟机(VM)轻松收集此数据。

在 Windows PaaS VM 中排查问题时,以下部分包括最常用的数据源。 这些部分按重要性(使用日志诊断问题的频率)进行大致排序。

Windows Azure 事件日志

Windows Azure 事件日志包含 Azure 运行时的关键诊断输出。 日志记录有关此类事件的信息,如下所示:

  • 角色启动和停止
  • 启动任务
  • OnStart 启动和停止
  • OnRun 开始
  • 故障
  • 回收

若要查看 Windows Azure 事件日志,请执行以下操作:

  1. “开始”菜单上,搜索事件查看器,然后选择该应用。

  2. 在导航窗格中,展开 “应用程序和服务日志”,然后选择“ Windows Azure”。

此诊断源可帮助你确定导致 Azure 角色无法正确启动的几个最常见问题的原因。 其中包括启动任务失败和崩溃或OnStartOnRun崩溃。 事件查看器捕获运行角色入口点代码(例如WebRole.csWorkerRole.cs)的 Azure 运行时主机进程中的崩溃,并提供调用堆栈。

应用程序事件日志

可以使用应用程序事件日志在 Azure 和本地服务器上进行标准故障排除。 这些日志中通常可能会发现 w3wp.exe相关的错误。

若要查看应用程序事件日志,请执行以下操作:

  1. “开始”菜单上,搜索事件查看器,然后选择该应用。

  2. 在导航窗格中,展开 Windows 日志,然后选择“ 应用程序”。

应用代理运行时日志

应用代理运行时日志位于 C:\Logs\AppAgentRuntime.log ,由 WindowsAzureGuestAgent.exe 可执行文件编写。 日志包含有关来宾代理和 VM 中发生的事件的信息。 此事件信息包括但不限于以下类别:

  • 防火墙配置
  • 角色状态更改
  • 回收
  • 重新 启动
  • 运行状况更改
  • 角色停止和启动
  • 证书配置

此日志可用于快速概述随时间推移到角色的事件。 这是因为它记录角色的重大更改而不记录检测信号。 如果来宾代理无法正确启动角色(例如,如果锁定的文件阻止目录清理),则会看到此日志中记录的事件。

应用代理检测信号日志

应用代理检测信号日志位于 C:\Logs\WaAppAgent.log ,由 WindowsAzureGuestAgent.exe 可执行文件编写。 它包含有关主机引导程序运行状况探测的状态信息。

来宾代理过程负责向构造报告运行状况(例如, ReadyBusy)。 因此,此日志报告的运行状况与在管理门户中看到的状态相同。 日志可用于确定 VM 中角色的当前状态,或确定以前某个时间的状态。 可以提供问题说明,例如“我的网站昨天上午 10:00 到上午 11:30”,以使用检测信号日志来帮助确定该角色在此期间的运行状况。

主机引导程序日志

主机引导程序日志位于 C:\Resources\WaHostBootstrapper.log。 它包含启动任务的条目,包括缓存或远程桌面协议(RDP)等插件。 该日志还包含运行角色入口点代码的主机进程的运行状况探测(WaIISHost.exe 中运行的WebRole.cs代码)。

每次重新启动主机引导程序时都会生成日志文件。 (换句话说,每当由于崩溃、回收、VM 重启或升级等事件而回收角色时,它都重新启动。这种做法使日志易于使用,以确定角色回收的频率或时间。

Internet Information Services 日志

Internet Information Services (IIS) 日志位于 C:\Resources\Directory\<DeploymentID>。<RoleName>。DiagnosticStore\LogFiles\Web。 这些日志用于 Azure 和本地服务器上的标准故障排除。

在“我的网站昨天上午 10:00 到上午 11:30”等情况下,通常忽略 IIS 日志。自然而然地将 Azure 归咎于中断。 (“我的网站工作了两个星期,所以问题必须是 Azure!但是,IIS 日志通常指示否则。 你可能会发现,在中断前立即发生响应时间增加。 或者,你可能会发现 IIS 返回了非成功状态代码。 这些代码将指示网站本身(即,在 w3wp.exe 中运行的 ASP.NET 代码中)中出现的问题,而不是在 Azure 中运行。

性能计数器

若要查看性能计数器,请选择“开始”菜单,搜索 perfmon,然后选择性能监视器。 此应用是Microsoft管理控制台(MMC)的管理单元。 或者,安装和配置 Windows Azure 诊断扩展(WAD)。

性能计数器用于 Azure 和本地服务器上的标准故障排除。 如果提前设置 WAD,通常会有宝贵的性能计数器来排查过去发生的问题(例如,“我的网站从昨天上午 10:00 下降到上午 11:30)。

除了收集特定性能计数器的问题之外,WAD 收集的性能计数器最常见的用途是按给定顺序查找以下项:

  1. 常规性能计数器条目

  2. 无条目的时间段

  3. 下表中的其中一个状态。

    状态 说明
    定期条目的恢复 VM 可能未运行的方案
    100% 的 CPU 使用率 网站代码本身中的无限循环或其他逻辑问题

HTTP.SYS日志

HTTP.SYS日志位于 D:\Windows\System32\LogFiles\HTTPERR。 这些日志用于 Azure 和本地服务器上的标准故障排除。

IIS 日志一样,通常忽略HTTP.SYS日志。 但是,当你尝试排查托管服务网站未响应的问题时,它们非常重要。 通常,此问题是由 IIS 无法处理传入的请求量引起的。 此原因的证据通常出现在HTTP.SYS日志中。

IIS 失败的请求日志文件

“IIS 失败请求”日志文件位于 C:\Resources\Directory\<DeploymentID>。<RoleName>。DiagnosticStore\FailedReqLogFiles。 这些日志用于 Azure 和本地服务器上的标准故障排除。

默认情况下,这些日志文件不会在 Windows Azure 中打开。 它们很少使用。 但是,如果要排查特定于 IIS 或 ASP.NET 的问题,应考虑启用 FREB(失败的请求事件缓冲)跟踪。 FREB 跟踪可以提供有关这些问题的更多详细信息。

Windows Azure 诊断表和配置

Windows Azure 诊断扩展(WAD)的表和配置位于 C:\Resources\Directory\<DeploymentID>。<RoleName>。DiagnosticStore\Monitor。 这些项表示 WAD 数据的本地 VM 缓存。

WAD 执行以下步骤:

  1. 捕获已配置的数据。

  2. 将数据存储在 VM 上的自定义 .tsf 文件中。

  3. 根据指定的计划传输周期将数据传输到存储。

遗憾的是,由于数据采用自定义 .tsf 格式,因此 WAD 数据的内容使用有限。 但是,它们包含诊断配置文件,这些配置文件可用于排查 WAD 无法正常工作的问题。 在 “配置” 文件夹中,查找名为 config.xml的文件。 此文件包括 WAD 的配置数据。 如果 WAD 无法正常工作,请检查此文件以确保它反映预期 WAD 的配置方式。

Windows Azure 缓存日志文件

Windows Azure 缓存日志文件位于 C:\Resources\Directory\<DeploymentID>。<RoleName>。DiagnosticStore\AzureCaching。 这些日志包含有关 Windows Azure 基于角色的缓存的详细信息。 日志可帮助解决缓存未按预期工作的问题。

WaIISHost 日志

WaIISHost 日志位于 C:\Resources\Directory\<DeploymentID>。<RoleName>。DiagnosticStore\WaIISHost.log。 它包含来自WaIISHost.exe过程的信息。 此过程适用于 WebRoles 的角色入口点代码(WebRole.cs)。 本文中讨论的其他日志(如 Windows Azure 事件日志)也包含了大部分此信息。 但是,有时可能会在此处找到更有用的信息。

IISConfigurator 日志

IISConfigurator 日志位于 C:\Resources\Directory\<DeploymentID>。<RoleName>。DiagnosticStore\IISConfigurator.log。 它包含有关 IISConfigurator 进程的信息。 此过程用于根据你在服务定义文件中定义的模型执行网站的实际 IIS 配置。 此过程很少失败或遇到错误。 但是,如果 IIS 或 w3wp.exe 似乎未为服务正确设置,则此日志是检查的位置。

角色配置文件

角色配置文件位于 C:\Config\<DeploymentID>。<RoleName>。<版本>.xml。 它包含有关角色配置的信息,例如以下项:

  • ServiceConfiguration.cscfg 文件中定义的设置

  • 本地资源目录

  • 动态 IP(DIP)和虚拟 IP 的 IP 地址和端口(VIP)

  • 证书指纹

  • 负载均衡器探测

  • 其他实例

角色配置文件类似于 角色模型定义文件 ,因为它不包含运行时生成的信息。 但是,确保按预期配置服务会很有用。

角色模型定义文件

角色模型定义文件位于 E:\RoleModel.xmlF:\RoleModel.xml。 它包含有关如何根据 Azure 运行时定义服务的信息。

该文件包含每个启动任务的条目以及有关任务运行方式的信息,包括以下特征:

  • 背景
  • 环境变量
  • 位置

还可以查看 <网站> 元素如何为 Web 角色定义。

角色模型定义文件不包含运行时生成的信息,但它可以帮助你验证 Azure 是否按预期运行服务。 在开发计算机上具有特定版本的服务定义时,此验证通常很有帮助,但生成和包服务器使用的是另一版本的服务定义文件。

关于 ETL 文件

C:\Logs 文件夹包含 RuntimeEvents_<Iteration.etl> 和 WaAppAgent_<Iteration.etl> 文件。 这些事件跟踪日志(ETL)文件是 Windows 事件跟踪(ETW)跟踪,其中包含在 Windows Azure 事件日志来宾代理日志和其他日志中找到的信息的编译。 这些文件是 Azure VM 中最重要的日志数据的方便编译。 由于文件采用 ETL 格式,因此必须执行一些额外的步骤来使用信息。 如果你有喜欢的 ETW 查看工具,则可以忽略许多提到的日志文件。 相反,只需查看这两个 ETL 文件中的信息。

后续步骤

详细信息

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区