Невозможно включить AzureServiceDiagnosticsExtension для облачной службы в Azure
Я не могу установить диагностическое расширение для моей облачной службы с помощью команды powershell. Я получаю следующую ошибку:
New-AzureServiceDiagnosticsExtensionConfig : The element StorageAccount
doesn't match the storage account name provided in the cmdlet arguments. It is
recommended to not use the element StorageAccount as it is automatically set
by the cmdlet.
Powershell Command для включения диагностики для облачной службы
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext -DiagnosticsConfigurationPath $diagnosticFileLocation -ServiceName $serviceName
Мой диагностический файл выглядит так
<?xml version="1.0" encoding="utf-8"?>
<DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<PublicConfig>
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096">
<DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Error"/>
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error" />
<Directories scheduledTransferPeriod="PT1M">
<IISLogs containerName ="wad-iis-logfiles" />
<FailedRequestLogs containerName ="wad-failedrequestlogs" />
</Directories>
<WindowsEventLog scheduledTransferPeriod="PT1M" >
<DataSource name="Application!*" />
</WindowsEventLog>
<CrashDumps containerName="wad-crashdumps" dumpType="Mini">
<CrashDumpConfiguration processName="WaIISHost.exe"/>
<CrashDumpConfiguration processName="WaWorkerHost.exe"/>
<CrashDumpConfiguration processName="w3wp.exe"/>
</CrashDumps>
<PerformanceCounters scheduledTransferPeriod="PT1M">
<PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
</PerformanceCounters>
</DiagnosticMonitorConfiguration>
</WadCfg>
</PublicConfig>
<PrivateConfig>
<StorageAccount name="" key="" endpoint="" />
</PrivateConfig>
<IsEnabled>true</IsEnabled>
</DiagnosticsConfiguration>
2 ответа
Я думаю, что проблема в том, что у вас есть пустой тег Storage Accout в файле конфигурации диагностики (.wadcfgx).
Если вы развертываете свою облачную службу через Visual Studio, вы можете внести несколько изменений, чтобы исправить ошибку: (Поскольку строка подключения диагностики в файле.cscfg имеет приоритет над учетной записью хранения в файле.wadcfgx, предложите ввести имя учетной записи хранения в ".cscfg", а не ".wadcfgx")
Сначала введите имя учетной записи хранения в строку подключения файла ".cscfg".
<ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https; AccountName=TestAccountName; AccountKey=abcdefg****************==" />
Во-вторых, удалите
<StorageAccount/>
тег из файла конфигурации диагностики.
См. https://pawanpalblog.wordpress.com/2015/10/26/set-azureservicediagnosticsextension/ и https://azure.microsoft.com/en-us/documentation/articles/vs-azure-tools-diagnostics-for-cloud-services-and-virtual-machines/ для более подробной информации.
Надеюсь это поможет.
Прежде чем включить диагностическое расширение, необходимо выполнить 3 предварительных условия.
Назначьте роль облачному сервису. WorkerRole1 в качестве примера. Обратитесь к Cloud-Services-DotNet-Diagnostics Шаг 1: Создайте рабочую роль. Создайте облачный сервис и workerRole. Установите рабочую роль для своего облачного сервиса на странице публикации.
Обратите внимание на значение Environment из приведенного выше изображения. Вы будете использовать его в
-Slot Staging
Сортируйте ваш диагностический файл. Используйте решение от @Derek. Изменить на
<PrivateConfig><ConfigurationSettings><Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=; AccountKey=" /></ConfigurationSettings> </PrivateConfig>
Запустите код (2 шага):
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
$role_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole1" -DiagnosticsConfigurationPath $diagnosticFileLocation -StorageContext $storageContext
Set-AzureServiceDiagnosticsExtension -DiagnosticsConfiguration $role_diagconfig -ServiceName $service_name -Slot Staging
Или 1 шаг упрощения:
$storageContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext -DiagnosticsConfigurationPath $diagnosticFileLocation -ServiceName $serviceName -Slot Staging -Role WorkerRole1