【问题标题】:How to enable performance counters in azure如何在 Azure 中启用性能计数器
【发布时间】:2013-04-27 13:42:31
【问题描述】:

我们需要在 Windows azure Web 角色中启用 25 个以上的性能计数器。我正在考虑 RDP 并一一启用它们。但这可能需要很长时间,而且如果我们扩大规模也无法保证。

有人可以帮我解决这个过程是否可以自动化吗?最好是 Powershell,但其他解决方案也可以。

【问题讨论】:

    标签: azure performancecounter azure-web-roles


    【解决方案1】:

    无法通过 RDP 进入 Windows Azure 机器来启用性能计数器,因为无论如何性能计数器都是由 Windows 发布的。

    但是,我认为您的要求是将 25 多个性能计数器捕获到 Azure 诊断存储中?

    如果是这种情况,您需要:

    1) 在您的 Web 角色上启用 Azure 诊断。这必须在部署之前完成。这是一个最佳实践,而且大多数人都这样做(我当然希望微软对每个没有明确配置设置的角色都这样做,但是

    2) 有多种方法可以将性能计数器捕获到诊断存储中:

    a) 使用 diagnostics.wadcfg 文件 http://msdn.microsoft.com/en-us/library/gg604918.aspx(您需要使用该文件重新部署您的应用)

    b) 使用 powershell(虽然我自己从未做过)http://michaelwasham.com/2011/09/19/windows-azure-diagnostics-and-powershell-performance-counters/http://www.davidaiken.com/2011/10/18/how-to-easily-enable-windows-azure-diagnostics-remotely/

    c) 使用代码内检测(每次更改要启用的计数器时都需要重新上传应用)http://www.codeproject.com/Articles/303686/Windows-Azure-Diagnostics-Performance-Counters-In(我不推荐代码内配置,因为它太脆弱了)

    d) 使用第三方工具,例如 Cerebrata Diagnostics Manager 或 AzureWatch

    e) 使用 Azure 服务管理 API 和 Azure 诊断 API 来获取单个实例配置并更新它(这是第三方工具和 powershell 的方式)

    在直接使用 powershell、管理 API 或 Cerebrata 等工具的情况下,您的配置将在部署的生命周期内“坚持”。重新上传应用的新版本后,配置将丢失。

    使用 diagnostics.wadcfg、代码内检测或 AzureWatch,您的配置将在应用重新上传期间保持不变

    HTH

    【讨论】:

    • 感谢 Igorek,如果我设置了 diagnostics.wadcfg 并且还有 manager.GetCurrentConfiguration()。是否仍在使用 diagnostics.wadcfg 中的设置?另外,是否可以只在 diagnostics.wadcfg 上设置性能计数器而不指定其余设置?
    • 如果只包含 diagnostics.wadcfg 并启用“诊断”复选框,则无需执行任何其他操作。是的,您只能启用性能计数器并删除所有其他诊断数据。如果安装了 diagnostics.wadcfg,则不需要代码中的 manager.GetCurrentConfiguration()
    • 感谢您的澄清。不幸的是,我们使用的是第三方产品并且没有源代码。我注意到 WAD-Control-Container 存储下有 xml 文件。这些文件是在不编写任何代码的情况下创建的吗?此外,它们也可能具有命令式代码。如上所述,diagnostics.wadcfg 文件是否仍然被拾取和使用?我只需要包含 25 个以上的性能计数器
    • wad-control-container 包含信息。实例的服务配置。这些文件中的内容是使用服务管理 API 的结果。我不会直接处理这些文件并让 API 管理它们。
    • 嗨,Igorek,我已经设置了 wadcfg 文件,但是它没有反映在 wad-control-container 上。 WebRole 有这个代码 OnStart -" PerformanceCounterConfiguration configuration3 = new PerformanceCounterConfiguration(); configuration3.set_CounterSpecifier(@"\Processor(_Total)\% Processor Time");"
    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多