Azure - 为 worker/web 角色启用诊断

Azure - Enable diagnostics for worker/web role

我想在我的 table 存储中记录发生的每个异常 (MVC cloudapp)。

我遵循了 Microsoft 的官方教程,但似乎他们把事情搞得太复杂了。教程可以在这里查看: https://azure.microsoft.com/sv-se/documentation/articles/cloud-services-dotnet-diagnostics/#how-to-enable-diagnostics-in-a-worker-role

就是默认不支持Azure Diagnostics 1.3,感觉太麻烦了?在为 web/worker 角色配置 window 中有一个更快更容易的选项,让您启用诊断,但仅适用于 1.0?

我只想在我的存储帐户中记录异常,所以 Azure Diagnostics 1.0 应该足够了,不是吗?

我做了什么:

  1. 通过单击网络和辅助角色配置 window 中的复选框,在我的辅助角色和网络角色中启用诊断。
  2. 指定存储帐户凭据。

我需要帮助:

我的存储帐户中没有创建 WAD 容器。在我启用并指定存储帐户凭据后,它们不应该被创建吗?

为什么启用 Azure 诊断 1.3 与 1.0 相比如此复杂?

辅助角色诊断和网络角色诊断有什么区别?如果我在 webrole 中有我的应用程序并在工作者角色中缓存..然后它会单独记录吗?如果我想对应用程序和缓存都进行异常日志记录,是否需要同时启用它们?

回答您的问题:

No WAD containers are created in my storage account. Are they not supposed to be created after I have enabled and specified the storage account credentials?

如果您正在寻找 wad-control-container,则不会创建它。但是,如果您在诊断配置中启用了 IIS 日志、失败请求日志和故障转储,您应该会看到这些容器。

Why is it so complicated to enable Azure diagnostics 1.3 compared to 1.0?

本质上诊断模型已经改变。 1.0版是插件模型,1.3版是扩展模型(他们引入1.2版时从SDK 2.5改变而来)。复杂不复杂,我觉得值得商榷。虽然 1.0 版本相当简单并且具有一些功能,例如在代码中定义诊断配置,但我认为 1.3 是朝着正确方向迈出的一步。一开始我也对它感到沮丧,但现在我越来越多地使用它,意识到它提供的好处。一些吸引我的好处是:

  • 纯 decalarative 模型而不是混合模型(Programmatic + Decalarative)。
  • 为您的云服务和虚拟机收集诊断数据的统一方法(目前仅 Windows)。
  • 能够enable/disable 即时诊断配置,因为它现在是一个扩展模型。
  • 支持 ETW 日志。

1.3 中我不喜欢的一些东西:

  • 如果不通过 Visual Studio 进行部署,部署过程会相当复杂。
  • 有限的工具支持。您可用的选项只有 Visual Studio 或 PowerShell。目前,Portal(当前和预览版)不支持它。
  • 已弃用 On-Demand Transfer 功能。我们经常使用此功能,但现在已弃用,因为它依赖于基于代码的诊断更改。

What's the difference between worker role diagnostics and web role diagnostics?

据我所知,两者之间没有区别。这完全取决于您要为每个角色收集哪些诊断数据。

If I had my app in webrole and caching in worker role. Is it then logged individually?

好吧,是的,也不是。每个角色都有自己的 diagnostics.wadcfgx 文件,您可以在其中定义用于存储诊断数据的存储帐户。如果您在每个角色的 wadcfgx 文件中定义不同的存储帐户,则数据将进入单独的存储帐户。即使您保留相同的存储帐户,数据也会有 role namerole instance name,以便您可以区分不同的诊断数据。

Do I need to enable them both if I want exception logging for both app and caching?

是的。您需要同时启用它们。

有一个 simple PowerShell script on GitHub to enable WAD on either a Cloud Service (Web/Worker Role) or a VM with zero hassle. At the same time it will also configure WAD to send your logs to Visual Studio Application Insights让你可以高效的搜索和查询。