Экспорт (0) Печать
Развернуть все

Настройка диагностики Azure

Обновлено: Август 2014 г.

При устранении неисправностей облачной службы для простоты настройки диагностики Azure лучше использовать Visual Studio. Диагностика Azure собирает системные данные и данные журналов с экземпляров виртуальных машин, на базе которых работает облачная служба, после чего эти данные переносятся в вашу учетную запись хранилища. Кроме того, к диагностике Azure можно обращаться программным способом, а также путем прямого внесения изменений в файлы конфигурации. См. раздел Сбор данных журналов с помощью диагностики Azure.

Для настройки диагностики Azure применяются следующие методы.

  • Программным образом, с помощью кода или роли, либо из кода, который выполняется в отдельном приложении конфигурации.

  • Из конструктора ролей в Visual Studio либо путем прямого внесения изменений в файлы конфигурации. Файл конфигурации diagnostics.wadcfg добавляется в проект.

    При использовании любого из этих методов внесенные изменения при следующем развертывании облачной службы в Azure или запуске службы в эмуляторе.

  • Путем использования обозревателя серверов для изменения параметров диагностики для работающей облачной службы.

С помощью Visual Studio можно указать, какие диагностические данные будут собираться в отношении роли, которая выполняется в Azure. При изменении параметров диагностики в Visual Studio изменения вносятся в файл конфигурации (diagnostics.wadcfg), поэтому новые параметры вступают в действие при следующем развертывании облачной службы.

  1. В контекстном меню интересующей вас роли выберите пункт Свойства, а затем перейдите на вкладку Конфигурация.

  2. В разделе Диагностика установите флажок Включить диагностику.

    Из имеющихся параметров (Только ошибки, Все сведения и Пользовательский план) по умолчанию используется параметр Только ошибки, который требует наименьшего объема хранилища, поскольку в этом случае предупреждения или сообщения трассировки не передаются. При использовании параметра Все сведения передается большая часть сведений, поэтому этот параметр является наиболее затратным.

  3. Чтобы задать собственные настройки, выберите параметр Пользовательский план, а затем нажмите кнопку Правка.

    Выберите пользовательский план, затем нажмите кнопку «Изменить»

    Откроется диалоговое окно Настройка диагностики со вкладками для каждого источника данных диагностики, сбор которых можно вести.

  4. Укажите размер буфера и период передачи данных для журналов приложений.

    Задавая размер буфера на каждой вкладке, вы резервируете объем хранилища файловой системы для каждого типа данных на виртуальных машинах. Общий размер всех буферов данных не может превышать общей квоты диагностики. В левом нижнем углу диалогового окна промежуточные итоговые размеры буферов изменяются в соответствии с заданными параметрами.

    Журналы приложений
    WarningПредупреждение
    При изучении облачной службы, которая была создана при помощи пакета SDK для Azure версии 1.8 или более ранней версии, необходимо зарезервировать 500 МБ локального хранилища для сборщика мусора. Значение объема локального хранилища указано в элементе LocalStorage в файле определения службы (CSDEF-файл) проекта. У более поздних версий пакета SDK этого ограничения нет.

    Приложение формирует свои журналы с помощью API-интерфейса System.Diagnostics. Для формирования в этих журналах данных из кода приложения добавьте ссылку на файл System.Diagnostics.dll и записывайте данные с помощью статистических методов класса Trace, например методов TraceError и TraceInformation.

  5. В качестве уровня ведения журнала задайте одно из следующих значений (в порядке от наименьшего объема информации до наибольшего): Критические, Ошибки, Предупреждения, Информация или Подробный.

  6. На вкладке Журналы событий установите флажки для типов событий, которые требуется отслеживать.

    Журналы событий

    Эти категории соответствуют фильтрам из средства просмотра событий Windows.

  7. На вкладке Счетчики производительности установите флажки для счетчиков производительности, которые требуется отслеживать.

    Счетчики производительности

    Для отслеживания счетчика производительности, который отсутствует в списке, введите его с помощью предложенного синтаксиса. Операционная система на виртуальной машине определяет, какие счетчики производительности можно отслеживать. Дополнительные сведения о синтаксисе см. в разделе Указание пути к счетчику.

  8. Задайте нужные параметры на вкладке Журналы инфраструктуры.

    Журналы инфраструктуры диагностики

    В этих журналах содержатся данные в отношении инфраструктуры диагностики Azure.

  9. На вкладке Каталоги журналов укажите данные, которые будут собираться из каталогов журналов для запросов служб Internet Information Services (IIS) и аварийных дампов.

    Каталоги журналов
  10. Выполните обычное развертывание облачной службы, а затем запустите ее.

  11. Данные диагностики можно будет просмотреть в отчете, который формирует Visual Studio, или в таблицах из вашей учетной записи хранилища. Для просмотра данных в отчете откройте обозреватель серверов, а затем откройте контекстное меню узла интересующей вас роли и выберите пункт Просмотр диагностических данных.

    Просмотр данных диагностики

    На экране откроется отчет с имеющимися данными.

    Диагностический отчет Windows Azure в Visual Studio

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

    Для обновления данных в реальном времени используется кнопка Обновить.

    В обозревателе серверов откройте учетную запись хранилища, связанную с развертыванием.

  12. Откройте таблицы диагностики в средстве просмотра таблиц и ознакомьтесь с собранными данными. Для просмотра журналов служб IIS и пользовательских журналов можно открыть контейнер больших двоичных объектов. Ознакомившись со следующей таблицей, можно найти таблицу или контейнер больших двоичных объектов, который содержит интересующие вас данные. Помимо данных этого файла журнала в записях таблицы также содержатся значения EventTickCount, DeploymentId, Role и RoleInstance, с помощью которых можно определить, какая виртуальная машина и роль сформировали эти данные и когда.

     

    Данные диагностики Описание Местоположение

    Журналы приложений

    Заданные в коде журналы, сформированные путем вызова методов класса System.Diagnostics.Trace.

    WADLogsTable

    Журналы событий

    Это данные из журналов событий Windows с виртуальных машин. В этих журналах хранит информацию ОС Windows, однако приложения и службы также используют их для записи ошибок и сведений.

    WADWindowsEventLogsTable

    Счетчики производительности

    Можно выполнять сбор данных любого счетчика производительности, имеющегося на виртуальной машине. В операционной системе есть различные счетчики производительности, предоставляющие всевозможные статистические данные, например об использовании памяти или времени процессора.

    WADPerformanceCountersTable

    Журналы инфраструктуры

    Эти журналы формируются самой инфраструктурой диагностики.

    WADDiagnosticInfrastructureLogsTable

    журналы IIS

    В эти журналы записываются веб-запросы. Если в облачной службе отмечается значительный объем трафика, то эти журналы могут быть довольно объемными, поэтому собирать и хранить эти данные следует только по мере необходимости.

    Журналы запросов, завершившихся ошибкой, находятся в контейнере больших двоичных объектов в узле wad-iis-failedreqlogs пути к развертыванию, роли и экземпляру. Полные журналы находятся в узле wad-iis-logfiles. Записи по каждому файлу заносятся в таблицу WADDirectories.

    Аварийные дампы

    Эта информация предоставляет двоичные образы процесса облачной службы (обычно рабочей роли).

    Контейнер больших двоичных объектов wad-crush-dumps

    Пользовательские файлы журналов

     

    В коде приложения можно указать расположение пользовательских файлов журналов в учетной записи хранилища. Например, можно указать пользовательский контейнер больших двоичных объектов.

  13. В случае усечения данных любого типа можно попробовать увеличить размер буфера для этого типа данных или уменьшить интервал между выполнением передачи данных с этой виртуальной машины в учетную запись хранилища.

  14. (Необязательно) Время от времени удаляйте данные из учетной записи хранилища с целью сокращения общих затрат на хранение.

При выполнении полного развертывания WADCFG-файл обновляется в Azure, а облачная служба принимает все изменения, внесенные в конфигурацию диагностики. Если же выполняется обновление существующего развертывания, то WADCFG-файл в Azure не обновляется. Параметры диагностики при этом все же можно изменить, выполнив действия, описанные в следующем разделе. Дополнительные сведения о полном развертывании и обновлении существующего развертывания см. в разделе Мастер публикации приложений Windows Azure.

Если выполняется анализ проблемы с работающей облачной службой, то может потребоваться сбор данных, которые не были указаны перед первоначальным развертыванием этой роли. В этом случае сбор этих данных можно задать с помощью параметров в обозревателе серверов. Диагностику можно настраивать для одного экземпляра или для всех экземпляров в роли. Для этого диалоговое окно Конфигурация диагностики нужно открыть с помощью контекстного меню экземпляра или роли. При настройке узла роли вносимые изменения применяются ко всем экземплярам. При настройке узла экземпляра вносимые изменения применяются только к этому экземпляру.

  1. В обозревателе серверов разверните узел Облачные службы, а затем, разворачивая узлы, найдите роль или экземпляр (либо и то, и другое), работу которых требуется проанализировать.

    Настройка диагностики
  2. В контекстном меню узла экземпляра или роли выберите команду Обновить параметры диагностики, а затем данные диагностики, которые требуется собирать.

    Сведения о различных параметрах указаны в предыдущей процедуре, приведенной в этом разделе.

  3. В контекстном меню роли или экземпляра выберите пункт Просмотр данных диагностики.

    На экране откроется отчет с имеющимися данными.

    Диагностический отчет Windows Azure в Visual Studio

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

    Для обновления данных в реальном времени используется кнопка Обновить. Также можно открыть учетную запись хранилища, которую использует облачная служба, и посмотреть собранные данные в таблицах или контейнерах больших двоичных объектов. Для отображения последних данных, возможно, необходимо будет обновить таблицы.

При изменении параметров сбора данных в обозревателе серверов эти изменения сохраняются до выполнения полного повторного развертывания облачной службы. Если используются стандартные параметры публикации, изменения не перезаписываются, так как по умолчанию существующее развертывание только обновляется, а не развертывается полностью заново. Чтобы убедиться, что эти параметры были сброшены во время развертывания, перейдите на вкладку расширенных настроек в мастере публикации и снимите флажок Обновление развертывания. При выполнении повторного развертывания, когда этот флажок снят, параметр сбрасывается до значения, приведенного в WADCFG-файле (которое задается в редакторе свойств для роли). При обновлении развертывания Azure сохраняет старые параметры.

Что если в коде приложения, которое находится за пределами моей организации или в файле diagnostics.wadcfg, имеется конфликтующая конфигурация диагностики? Какие сведения используются?

Данные диагностики, заданные в конструкторе роли перед развертыванием, изменяют файл diagnostics.wadcfg. Сбор данных также можно настраивать путем внесения изменений непосредственно в этот файл. Azure копирует этот файл конфигурации в ресурс больших двоичных объектов Azure с именем wad-control-container в deploymentID, имени роли и экземпляре роли. Azure загружает этот файл конфигурации из контейнера больших двоичных объектов, когда облачная служба запускает диагностический монитор. Для управления диагностикой в коде также можно использовать интерфейсы API для диагностики Azure, которые переопределяют параметры, заданные в файле diagnostics.wadcfg. Однако изменения, внесенные во время выполнения, теряются при перезапуске роли. Изменять конфигурацию диагностики во время выполнения также можно с помощью обозревателя серверов либо написав собственную служебную программу, которая управляет конфигурацией диагностики путем прямого использования API-интерфейсов управления диагностикой. Поскольку эти изменения заносятся в файл конфигурации из контейнера больших двоичных объектов, они сохраняются при перезапуске роли. Сведения об использовании каждого типа конфигурации и их очередности см. в разделе Сбор данных журналов с помощью диагностики Azure.

Что такое размер буфера и каким должен быть его размер?

Квоты ограничивают объем диагностических данных, которые можно сохранить в локальной файловой системе, на каждой виртуальной машине. Кроме того, задается размер буфера для каждого имеющегося типа диагностических данных. Этот размер буфера является своего рода отдельной квотой для данных этого типа. Общий объем квоты и свободный объем памяти приведены внизу этого диалогового окна. Если задать буферы большего размера или большее количество типов данных, можно превысить общую квоту. Для изменения общей квоты необходимо обновить соответствующий параметр в файле конфигурации diagnostics.wadcfg. Данные диагностики хранятся в той же файловой системе, в которой находятся данные приложения. Поэтому, если приложение использует большой объем места на диске, общую квоту для диагностических данных увеличивать не следует.

Что такое период передачи и насколько длительным он должен быть?

Период передачи — это количество времени, которое проходит между записью данных. По истечении периода передачи данные переносятся из локальной файловой системы на виртуальную машину в таблицы, находящиеся в учетной записи хранилища. Если до окончания периода передачи объем собранных данных превышает квоту, самые старые данные отбрасываются. В случае потери данных из-за превышения размера буфера или общей квоты можно попробовать сократить период передачи.

Время какого часового пояса указывается в отметках времени?

В отметках времени указывается время того часового пояса, в котором находится центр обработки данных, где размещена облачная служба.

Как управлять затратами при сборе диагностической информации?

Параметры, заданные по умолчанию (параметр Уровень ведения журнала, установленный в значение Ошибки, и параметр Период передачи, установленный в значение 1 минуты), предназначены для сведения затрат к минимуму. Затраты возрастут при увеличении объема собираемых диагностических данных или уменьшении периода передачи. Собирайте данные только в нужном объеме и не забывайте отключать сбор данных, когда они вам больше не нужны. Как было указано в предыдущем разделе, его всегда можно снова включить, даже во время выполнения.

Как выполнять сбор журналов запросов, завершившихся ошибками, от служб IIS?

По умолчанию службы IIS не ведут сбор журналов запросов, завершившихся ошибками. Для того чтобы это изменить, необходимо отредактировать файл web.config для веб-роли.

Я не получаю сведений трассировки от таких методов RoleEntryPoint, как OnStart. Почему?

Методы RoleEntryPoint вызываются в контексте WAIISHost.exe, а не служб IIS. Поэтому параметры конфигурации из файла web.config, которые обычно включают трассировку, не применяются. Для устранения этой проблемы добавьте в проект веб-роли CONFIG-файл и назначьте ему имя, соответствующее выходной сборке, содержащей код RoleEntryPoint. В проекте веб-роли по умолчанию CONFIG-файлу следовало бы присвоить имя WAIISHost.exe.config. Затем добавьте в этот файл следующие строки:

<system.diagnostics>     <trace>         <listeners>             <add name “AzureDiagnostics” type=”Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener”>                 <filter type=”” />             </add>         </listeners>     </trace> </system.diagnostics>

Теперь в окне Свойства задайте свойству Копировать в выходной каталог значение Всегда копировать.

Показ:
© 2014 Microsoft