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

Настройка диагностики для облачных служб и виртуальных машин Azure

Обновлено: Декабрь 2014 г.

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

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

  • Используйте диалоговое окно настройки системы диагностики в Visual Studio или измените непосредственно файлы конфигурации. Файл конфигурации diagnostics.wadcfg (для пакета SDK Azure 2.4 или более ранней версии) или diagnostics.wadcfgx (для пакета SDK Azure 2.5) будет добавлен в проект.

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

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

В этом разделе содержатся следующие подразделы:

При обновлении проекта с версии SDK Azure 2.4 до версии SDK Azure 2.5 следует помнить о следующих различиях в функциях системы диагностики.

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

  • API конфигурации устарели. Программная конфигурация системы диагностики доступна в пакете SDK Azure 2.4 или более ранних версиях, но она уже не поддерживается в SDK Azure 2.5. Если конфигурация системы диагностики определена в коде, параметры в перенесенном проекте потребуется повторно настроить с нуля, чтобы система диагностики могла продолжить работу. Для пакета SDK Azure 2.4 используется файл конфигурации системы диагностики diagnostics.wadcfg, а для пакета SDK Azure 2.5 — diagnostics.wadcfgx.

  • Систему диагностики для приложений облачных служб можно настроить только на уровне роли; на уровне экземпляра эта возможность больше не поддерживается.

  • Конфигурация системы диагностики обновляется при каждом развертывании приложения. Это может вызывать проблемы с контролем четности при изменении конфигурации системы диагностики из обозревателя серверов и повторном развертывании приложения.

  • В пакете SDK Azure 2.5 аварийные дампы настраиваются в файле конфигурации системы диагностики, а не в коде. Если аварийные дампы настроены в коде, потребуется вручную переместить конфигурацию из кода в файл конфигурации, так как аварийные дампы не перемещаются во время миграции в Azure 2.5.

В Visual Studio вы можете собирать данные диагностики для ролей, выполняющихся в Azure, при запуске службы в эмуляторе перед ее развертыванием. Все изменения в параметрах системы диагностики в Visual Studio сохраняются в файле конфигурации diagnostics.wadcfg (пакет SDK Azure 2.4 или более ранней версии) и в файле diagnostics.wadcfgx (пакет SDK Azure 2.5). Эти параметры используются при развертывании облачной службы.

Вы можете запустить службу в эмуляторе и использовать систему диагностики в пакете SDK Azure 2.4 и более ранних версий. В пакете SDK Azure 2.5 можно включить систему диагностики перед развертыванием, чтобы сохранить конфигурацию в файле diagnostics.wadcfgx.

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

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

    Доступ к команде «Включить диагностику»
  3. Нажмите кнопку Настроить, чтобы открыть диалоговое окно Конфигурация диагностики.

    Каждая вкладка (за исключением вкладок Общие и Каталоги журналов) представляет источник доступных для сбора данных диагностики.

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

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

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

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

  6. В поле Квота диска в МБ указано, какой объем пространства следует выделить в учетной записи хранения для данных диагностики. При необходимости можно изменить значение по умолчанию.

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

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

  8. После включения коллекции всех нужных данных диагностики нажмите кнопку ОК.

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

В Visual Studio можно собирать данные диагностики для виртуальных машин Azure.

  1. В обозревателе серверов выберите узел Azure и подключитесь к подписке на Azure, если вы этого не сделали ранее.

  2. Разверните узел Виртуальные машины. Можно создать новую виртуальную машину или выбрать существующую.

  3. В контекстном меню для интересующей вас виртуальной машины нажмите кнопку Настроить. Откроется диалоговое окно настройки виртуальной машины.

    Настройка виртуальной машины Azure
  4. В списке Установленные расширения щелкните раскрывающееся меню Выберите доступное расширение и выберите Диагностика Microsoft Monitoring Agent.

    Установка расширения виртуальной машины Azure
  5. Нажмите кнопку Добавить, чтобы открыть диалоговое окно Конфигурация диагностики.

  6. Нажмите кнопку Настроить, чтобы указать учетную запись хранения, а затем щелкните ОК.

    Каждая вкладка (за исключением вкладок Общие и Каталоги журналов) представляет источник доступных для сбора данных диагностики.

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

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

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

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

  9. В поле Квота диска в МБ указано, какой объем пространства следует выделить в учетной записи хранения для данных диагностики. При необходимости можно изменить значение по умолчанию.

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

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

  11. После включения коллекции всех нужных данных диагностики нажмите кнопку ОК.

  12. Сохраните измененный проект.

    В окне Журнал действий Microsoft Azure появится сообщение о том, что виртуальная машина была обновлена.

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

Журналы приложений содержат данные диагностики, сформированные веб-приложениями. Если необходимо собрать журналы приложений, установите флажок Включить перемещение журналов приложений. Можно увеличить или уменьшить количество минут при передаче журналов приложений в учетную запись хранения, изменив значение Период передачи (мин). Кроме того, можно изменить объем информации, записываемой в журнале, задав значение Уровень журнала. Например, для получения дополнительных сведений выберите параметр Подробный или укажите Критический, чтобы записывать только критические ошибки. Если журналы приложений выдает специальный поставщик диагностики, их можно записать, добавив GUID поставщика в поле GUID поставщика.

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

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

Если необходимо записать журналы событий Windows, установите флажок Включить передачу журналов событий Windows. Можно увеличить или уменьшить количество минут при передаче журналов событий в учетную запись хранения, изменив значение Период передачи (мин). Установите флажки для типов событий, которые требуется отслеживать. Эти категории соответствуют фильтрам из средства просмотра событий Windows.

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

Если вы хотите указать пользовательский источник данных, его можно добавить в раздел WindowsEventLog файла diagnostics.wadcfgx, как показано в приведенном примере.

<WindowsEventLog scheduledTransferPeriod="PT1M">
   <DataSource name="Application!*" />
   <DataSource name="CustomDataSource!*" />
</WindowsEventLog>

Сведения счетчика производительности помогут вам обнаружить узкие места системы и настроить производительность приложений и системы. Дополнительную информацию см. в разделе Создание и использование счетчиков производительности в приложении Azure. Если необходимо записать счетчики производительности, установите флажок Включить передачу счетчиков производительности. Можно увеличить или уменьшить количество минут при передаче журналов событий в учетную запись хранения, изменив значение Период передачи (мин). Установите флажки для счетчиков производительности, которые требуется отслеживать.

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

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

Если необходимо записать журналы инфраструктуры, которые содержат сведения об инфраструктуре системы диагностики Azure, модуле RemoteAccess и модуле RemoteForwarder, установите флажок Включить передачу журналов инфраструктуры. Можно увеличить или уменьшить количество минут при передаче журналов в учетную запись хранения, изменив значение Период передачи (мин).

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

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

Если необходимо записать каталоги журналов, которые содержат данные, собранные из каталогов журналов для запросов IIS, невыполненных запросов или выбранных папок, установите флажок Включить передачу каталогов журналов. Можно увеличить или уменьшить количество минут при передаче журналов в учетную запись хранения, изменив значение Период передачи (мин).

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

Также можно записать журналы из любой папки. Просто укажите путь в разделе Журнал из абсолютного пути каталога и нажмите кнопку Добавить каталог. Журналы будут записаны в указанных контейнерах.

Каталоги журналов

Если вы используете трассировку событий для Windows (ETW) и хотите записать журналы ETW, установите флажок Включить передачу журналов ETW. Можно увеличить или уменьшить количество минут при передаче журналов в учетную запись хранения, изменив значение Период передачи (мин).

События записываются из указанных источников событий и манифестов событий. Чтобы указать источник события, введите имя в разделе Источники событий и нажмите кнопку Добавить источник событий. Аналогичным образом можно указать манифест события в разделе Манифесты событий, а затем нажать кнопку Добавить манифест события.

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

Платформа трассировки событий Windows поддерживается в ASP.NET через классы в пространстве имен System.Diagnostics. Пространство имен Microsoft.WindowsAzure.Diagnostics, которое наследуется от стандартных классов System.Diagnostics и расширяет их, позволяет использовать System.Diagnostics как платформу ведения журналов в среде Azure. Подробнее см. в разделах Управление ведением журналов и трассировкой в Microsoft Azure и Включение диагностики в облачных службах и виртуальных машинах Azure.

Если необходимо записать сведения о времени сбоя экземпляра роли, установите флажок Включить передачу аварийных дампов. (Так как ASP.NET обрабатывает большинство исключений, обычно это полезно только для рабочих ролей.) Можно увеличить или уменьшить процент пространства хранилища, выделенного для аварийных дампов, изменив значение Квота каталогов (%). Можно изменить контейнер хранилища, в котором хранятся аварийные дампы, и выбрать, следует записывать полный дамп или минимальный.

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

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

Подробнее см. в разделе Управление ведением журналов и трассировкой в Microsoft Azure.

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

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

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

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

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

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

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

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

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

  3. Откройте таблицы диагностики в средстве просмотра таблиц и ознакомьтесь с собранными данными. Для просмотра журналов служб 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

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

     

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

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

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

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

  1. В контекстном меню виртуальной машины выберите пункт Просмотр данных диагностики.

    Просмотр данных диагностики на виртальной машине Azure

    Откроется окно сводки диагностики.

    Сводка по диагностике виртальной машины Azure

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры, заданные по умолчанию (параметр Уровень ведения журнала, установленный в значение Ошибки, и параметр Период передачи, установленный в значение 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>

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

Показ:
© 2015 Microsoft