Командлеты Azure PowerShell и настройка диагностики службы (Set-AzureServiceDiagnosticsExtension)

Поскольку мы обновились до Azure SKD 2.5, мы больше не можем обновлять конфигурацию диагностики при запуске роли. Вместо этого теперь мы используем командлеты Microsoft Azure PowerShell для обновления конфигурации диагностики веб-ролей и рабочих ролей.

При разработке нашего сценария конфигурации мы заметили, что вызов 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 для обновления существующей конфигурации. Есть ли лучший способ сделать это, не требующий вызова remove и set?

Мы также заметили, что общее время развертывания увеличилось примерно вдвое в результате обновления диагностической конфигурации через PowerShell по сравнению с запуском роли. Я думаю, что это увеличение в основном связано с перезапуском ролей при обновлении конфигурации. Есть ли способ этого избежать?

Спасибо!


person Jeff Ward    schedule 22.12.2014    source источник


Ответы (2)


Убедитесь, что вы добавили параметр -Role при вызове Set-AzureServiceDiagnosticsExtension.

Как отметил Саураб Бхатия в комментарии @ Windows Azure Diagnostics - Обновление с Azure SDK 2.4 до Azure SDK 2.5,

Для сценария Powershell не забудьте явно передать -Role при установке расширения. Если расширение уже существует и вы не передаете роль явно, вы можете увидеть упомянутую ошибку.

Точно так же, когда вы удаляете расширение, убедитесь, что вы явно указали -role, из которого вы хотите удалить расширение.

Если диагностическое расширение отсутствует ни в одной из ролей, вы можете вызвать установленное расширение ps без роли, чтобы установить расширение во всех ролях.

person vicancy    schedule 06.02.2015
comment
Ваш ответ правильный, но я все еще не могу использовать параметр -Role из-за проблемы, описанной / подтвержденной здесь: github.com/Azure/azure-powershell/issues/72. Похоже, мне просто нужно дождаться исправления. Спасибо! - person Jeff Ward; 06.02.2015
comment
Точки @JeffWard в имени роли вызвали проблему. Вы можете обойти это, удалив '.' из имени роли. это также описано в комментарии к blogs.msdn.com/b/kwill/archive/2014/12/02/ - person vicancy; 09.02.2015

Как описывает Кевин Уильямсон [MSFT] в своем блоге:

Когда вы выполняете обновления конфигурации WAD после развертывания с помощью Visual Studio, сначала загружается конфигурация расширения с помощью Get Extension API, чтобы получить текущую конфигурацию, затем Add Extension API, чтобы обновить новую конфигурацию, затем Change Deployment Configuration, чтобы связать новое расширение. config в службу, а затем Удалить расширение, чтобы удалить старую конфигурацию расширения.

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

person AlexMinza    schedule 27.12.2014