Невозможно включить 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 предварительных условия.

  1. Назначьте роль облачному сервису. WorkerRole1 в качестве примера. Обратитесь к Cloud-Services-DotNet-Diagnostics Шаг 1: Создайте рабочую роль. Создайте облачный сервис и workerRole. Установите рабочую роль для своего облачного сервиса на странице публикации.

  2. Обратите внимание на значение Environment из приведенного выше изображения. Вы будете использовать его в -Slot Staging

  3. Сортируйте ваш диагностический файл. Используйте решение от @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
Другие вопросы по тегам