Azure PowerShell Cmdlet和设置服务诊断(Set-AzureServiceDiagnosticsExtension)

时间:2014-12-22 15:10:20

标签: azure azure-diagnostics azure-powershell azure-deployment

自从我们更新到Azure SKD 2.5后,我们无法再更新角色启动时的诊断配置。我们现在使用Microsoft Azure PowerShell Cmdlet来更新我们的Web和辅助角色诊断配置。

在开发我们的配置脚本时,我们注意到在没有先调用Set-AzureServiceDiagnosticsExtension的情况下调用Remove-AzureServiceDiagnosticsExtension会失败并出现以下错误:

VERBOSE: Setting default PaaSDiagnostics configuration for all roles.
VERBOSE: 10:01:19 AM - Begin Operation: Set-AzureServiceDiagnosticsExtension
Set-AzureServiceDiagnosticsExtension : BadRequest: Cannot add extension 'Default-PaaSDiagnostics-Production-Ext-0'
with same name space 'Microsoft.Azure.Diagnostics' and type 'PaaSDiagnostics' more than once.
At C:\Github\cloud-build\lib\UpdateDiagnosticsBuildStep.ps1:109 char:7
+       Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext -Diag ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Set-AzureServiceDiagnosticsExtension], CloudException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.Extensions.SetAzureServiceDiagnosticsE
   xtensionCommand

理想情况下,我们可以调用set来更新现有配置。有没有更好的方法来做到这一点,不需要我们必须调用删除和设置?

我们还注意到,由于通过powershell和角色启动更新诊断配置,我们的整体部署时间大约翻了一番。我认为增加的主要原因是配置更新后重新启动的角色。有没有办法避免这种情况?

谢谢!

2 个答案:

答案 0 :(得分:2)

确保在致电Set-AzureServiceDiagnosticsExtension时添加 -Role 参数。

正如 Saurabh Bhatia 在@ Windows Azure Diagnostics – Upgrading from Azure SDK 2.4 to Azure SDK 2.5评论中指出的那样,

  

对于Powershell脚本,请确保在设置扩展名时明确传入-Role。如果扩展已经存在,并且您没有明确传入该角色,那么您可能会看到提到的错误。

     

同样,当您删除扩展程序时,请确保明确传入要从中删除扩展名的-role。

     

如果任何角色都没有诊断扩展,那么您可以调用set extension ps而不使用Role在所有角色上设置扩展名。

答案 1 :(得分:1)

Kevin Williamson [MSFT]在他的博客文章中描述:

  

使用Visual Studio对WAD配置进行部署后更新时,首先使用Get Extension API下载扩展配置以获取当前配置,然后使用Add Extension API更新新配置,然后更改部署配置以关联新的扩展配置到服务,然后删除扩展以删除旧的扩展配置。

http://blogs.msdn.com/b/kwill/archive/2014/12/02/windows-azure-diagnostics-upgrading-from-azure-sdk-2-4-to-azure-sdk-2-5.aspx